You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cross-cutting fixes from a language/VM/JIT/AOT/self-host review.
reg-VM soundness & crashes:
- scalar_regs elision leak: add permanent scalar_poison_regs so a register
reused (via local(name)) across a scalar and a heap binding is never treated
as scalar — a heap binding's DeepCopy can no longer be wrongly elided.
- Map/Set heap-key alias leak: deep_copy_value now rebuilds keys from a
deep-copied value; reclassify MapKeys/SetToList/SortedMapKeys as AliasReturner.
- Return clones instead of moving, so a mut-scalar-param that is also the return
source survives for mut-writeback (fixes "read uninitialized register" panic).
- mut-place call args (mut c.count / mut c.items) are restored into their
field/index after the call, matching AOT &mut place semantics.
- Default-features build: add missing #[cfg(feature = "native-jit")] in tier.rs.
AOT (compiled-backend) parity:
- mut class-field args lower through try_write_at (no read-view clone).
- Correct bitwise-vs-comparison precedence table; parenthesize computed
index-assignment; drop the broken &Managed<T> ABI for retained value-struct
read params (value semantics + clone-at-store).
Front-end diagnostics:
- RS0038 for empty/multi-scalar char literals (decode_char_token made total).
- Report malformed arms in match EXPRESSIONS; assignment-check closures nested
in list/struct literals; lex unknown chars to a distinct Unknown token.
Sandbox: String.repeat/pad_* charge mem_budget before allocating; host_call_budget
disarms native tiering.
Self-host: bound scan_char's escape skip; check.rss recovers past malformed items;
lexer.rss/scan.rss emit the Unknown token for parity.
Spec: fix §A.1 keyword/symbol/token lists, §5A assignment rule, and scope the
exec-spec Map-order claim (cross-backend iteration order is unspecified).
Adds regression tests (elision reuse leak, mut-scalar-param return, mut class-field
writeback, RS0038). Verified: lib/differential/static/runtime/soak/jit_cost_model
green + self-host corpus 556x3.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments