Repository navigation
·
4 commits
to main
since this release
Crash hardening and path safety. Second 2.2 slice. Failure model unchanged. No new language syntax.
Host / builtins:
- Reject oversized integers so parse, print, diagnostics,
ask,exit,repeat/pad,rangeList, and regex{n}counts cannot crash the interpreter - Reject unbounded recursion on deeply nested expressions and function calls (
RecursionError→ Echo abort) - Reject NUL bytes and non-HTTP URLs so host builtins /
httpGetcannot crash - Reject cyclic symlinks so file builtins cannot crash with Python traceback
removeFile/removeTreeno longer delete through symlinks;removeTree("")andremoveTree("..")cannot wipe the working directory or parentexit()rejects status values that do not fit in a Clongorder()stays safe when the comparator mutates the list; string allocation failures inrepeat/padabort cleanly
Language / tooling correctness:
- Unescape
switchstring arms and hash-literal keys so escaped literals match andelang fmtstay consistent - Keep
elang fmtfrom rewriting overflowed floats asinf, or breaking strings that contain quotes - Lexer rejects deeply nested interpolations and interpolation quotes that end with a backslash instead of crashing
- CLI rejects unreadable source files instead of crashing
- Formatter string-wrap path is valid on Python 3.10 / 3.11 (no backslash inside f-string expressions)