String interpolation, O(n) dedup, and code quality
- FEAT String interpolation —
"Hello, ${name}!"and"Result: ${a * b + 1}"now work. Full expression support inside${...}: arithmetic, calls, method chains, nested builtins. Depth-tracking brace scanner handles balanced braces inside the hole. - PERF
unique()O(n) instead of O(n²) — replacedVec::containsscan with aHashSet<String>key tracker. Insertion-order preserved. Both the free-function and method-dispatch forms fixed. - FIX
reducedocs corrected — signature isreduce(list, fn, init); docs previously showed the arguments in the wrong order. - FIX Dead code purged in
closures.rs— the old stubbuiltins::map/filter/reducefunctions (which were never called and didn't work) are removed. The module now correctly documents that closures live inValue::Function. - FIX Zero clippy warnings — removed unused
SourceMapimport inclear-diagnosticsand unused diagnostic imports inclear-lexer. - FEAT
Parser::parse_single_expr— new public API for parsing a single expression from a source string; used by the interpolation runtime and available to embedders. - UI npm package bumped to
v0.1.5.