Skip to content

v0.34.0 — multi-table call_indirect, global initializers, sound mask bounds

Choose a tag to compare

@avrabe avrabe released this 08 Jul 17:05
· 518 commits to main since this release
22517cb

Multi-table call_indirect ships (falcon's fused-component blocker, #650); float and i64 global initializers actually reach the image (#649 + GI-FPU-001); the mask bounds mode becomes sound (#651). Six gale filings closed same-day across two waves.

Added

  • Multi-table call_indirect (#650, PR #653): contiguous table region at R11, compile-time per-table base offsets (sound: tables provably fixed-size per #646), per-table bounds guard + closed-world type verification. Single-table modules byte-identical BY CONSTRUCTION (whole-ELF cmp proof, three targets). New two-table aliasing-canary CI oracle, 26/26 both ISAs.

Fixed

  • Global initializers never reached the self-contained image (#649, PRs #648/#652): the default Cortex-M image never materialized the globals table — R9 uninitialized, reads returned vector-table garbage. Startup now sets R9 and stores every init word (width-aware layout); float globals loud-skip (GI-FPU-001). Reset-path unicorn oracle: 4 divergences → 0.
  • --safety-bounds mask offset-escape + size-vs-size-1 remap (#651, PR #654): all 8 mask sites unified: min((operand+offset) & (size-1), size−access_size), u33-soundness documented, 8/8 red → green.

Sibling filed: #655 (RV32 mask-order twin — fix in flight). Platform binaries attach ~10 min after the tag.

🤖 Generated with Claude Code