v0.2.0
0.2.0 (2026-08-17)
⚠ BREAKING CHANGES
- frontend: diagnose mutable for loop bounds
Features
- arm64: add bootstrap backend and shared regalloc (e4c7c50)
- arm64: add experimental native backend (e7e8b2b)
- arm64: gate experimental backend (82924f2)
- arm64: integrate native scalar backend (1c2c67c)
- arm64: own final register coloring (655a303)
- arm64: own spill insertion (f54df10)
- arm64: verify target allocation facts (9f138a6)
- frontend: diagnose mutable for loop bounds (e4f3af3)
- testbench: inject TypeScript components (d19e9da)
- testbench: inject TypeScript components (af09819)
- testbench: support Veryl components (b64208b)
- testbench: support Veryl components (5f48c08)
- testbench: support Veryl random methods (df3052f)
- testbench: support Veryl random methods (d4704a4)
- veryl: support hierarchical testbench reads (c182952)
- veryl: support hierarchical testbench reads (50de288)
- vite: expose injected components to Veryl LSP (c4725f7)
Bug Fixes
- arm64: preserve spilled phi copies (3a54676)
- bench: keep CodSpeed compilation suite opt-in (f5debc3)
- ci: address benchmark matrix review (9453945)
- ci: address Veryl lane review feedback (8f7393c)
- ci: allow stable develop transition (2e3b1ac)
- ci: allow stable develop transition (e5ca907)
- ci: build playground before browser tests (7b14669)
- ci: guard develop sync branch reset (272d2eb)
- ci: isolate fixed gate Cargo features (dd004cf)
- ci: keep Heliodor host metadata outside checkout (c00dbee)
- ci: keep Heliodor host metadata outside checkout (40953bd)
- ci: make Heliodor benchmarks non-blocking (9933f65)
- ci: make release publication recoverable (829f547)
- ci: make release publication recoverable (3d9622b)
- ci: preserve nightly and converter coverage (d10516f)
- ci: preserve Veryl promotion overlays (3850cd2)
- ci: reconcile develop lockfile during sync (d0a57ce)
- ci: reconcile develop lockfile during sync (e08da72)
- ci: refine ARM64 Heliodor scheduling (a06b92b)
- ci: restore Heliodor on pull requests (3f8530a)
- ci: restore Heliodor on pull requests (7795d8f)
- ci: skip CodSpeed for merge groups (2ed7233)
- ci: skip CodSpeed for merge groups (d688c24)
- ci: stop repeated Veryl lockfile rolls (982b0c8)
- ci: stop repeated Veryl lockfile rolls (70e8432)
- ci: sync develop from checked-out master (1dbf0c2)
- ci: use FxHashMap alias in builder (af71811)
- cranelift: boot Linux correctly (65c3fd0)
- cranelift: boot Linux correctly (3bdc7dc)
- deps: update napi-rs and emnapi compatibility (2959f19)
- deps: update napi-rs and emnapi compatibility (ed36df1)
- deps: update napi-rs and emnapi compatibility (b9542c6)
- deps: update napi-rs and emnapi compatibility (614baba)
- deps: update rust crate wasm-encoder to 0.255 (7bfabb7)
- deps: update rust crate wasm-encoder to 0.255 (bcae53d)
- deps: update rust crate wasm-encoder to 0.256 (d931980)
- deps: update rust crate wasm-encoder to 0.256 (e339949)
- frontend: adapt call analysis to Veryl 0.20.3 (6f369fc)
- frontend: address remaining output observer cases (ab897a9)
- frontend: align connection effect previews (38b227d)
- frontend: allow outputless comb statement calls (75f50ed)
- frontend: allow outputless comb statement calls (0e37b31)
- frontend: allow reverse exclusive sentinel (6cd2572)
- frontend: classify missing function bindings as invalid (23ef912)
- frontend: classify missing function bindings as invalid (fe2a0c0)
- frontend: close remaining loop-width gaps (eaf938c)
- frontend: collect nested comb runtime effects (cd2f5d7)
- frontend: complete ordered effect collection (c96b5ca)
- frontend: compose instance connection effects (872709a)
- frontend: cover mutable for-bound edge cases (7e72d05)
- frontend: enforce i32 bitwise loop steps (fb15dba)
- frontend: guard ordered comb effects (61f1b08)
- frontend: harden fixed-width loop progress (3ad4c4e)
- frontend: harden observer effect collection (cb37859)
- frontend: isolate connection observer state (dfef593)
- frontend: isolate nested observer captures (ba447cf)
- frontend: lower comb output calls in expressions (e135f6a)
- frontend: lower comb output calls in expressions (658e9ad)
- frontend: lower instance connection outputs (dd4ae06)
- frontend: lower output connection index effects (bf5a0d3)
- frontend: preserve bitwise loop step width (3797d78)
- frontend: preserve conditional comb effects (564d059)
- frontend: preserve event operand evaluation order (f98ab94)
- frontend: preserve fixed-width loop progress (3ede429)
- frontend: preserve function loop effect control (9f0ff8e)
- frontend: preserve function output contexts (62841f2)
- frontend: preserve function return effect control (5ba0e71)
- frontend: preserve guarded call evaluation (1463135)
- frontend: preserve i32 loop step overflow (77ab12f)
- frontend: preserve instance connection effects (5264795)
- frontend: preserve observer capture positions (67e8750)
- frontend: preserve ordered comb effects (905b521)
- frontend: preserve ordered comb expression effects (a2639fc)
- frontend: preserve ordered output connections (d0b0821)
- frontend: preserve output and const expression order (ecc7328)
- frontend: propagate comb output calls across contexts (a73ffff)
- frontend: skip inactive connection writes (d0aca85)
- frontend: support bitwise for-loop steps (06f1635)
- frontend: support bitwise for-loop steps (8526717)
- frontend: trigger connection effects on transitions (08afb04)
- frontend: use converted constant values (982844d)
- frontend: warn on time-advancing loop bounds (eae78c7)
- napi: synchronize CLI and emnapi versions (9641615)
- napi: synchronize Rust and emnapi compatibility (f7a4ba3)
- native: preserve four-state constant masks (ace4863)
- native: preserve four-state constant masks (0ca402c)
- optimizer: preserve entry-live fused state (488010f)
- playground: isolate preview server (1205727)
- playground: restore browser startup (621469a)
- playground: restore browser startup (463890c)
- preserve required compiler validation (bd83f0a)
- restore Heliodor boot compatibility (28c4a66)
- restore Heliodor boot compatibility (b1781c9)
- simulator: defer authorized loop validation (2cd40e3)
- simulator: preserve tests for named projects (4153897)
- slt: map addresses without recursion (18190c9)
- stage overlapping FF write ranges together (0be0f57)
- testbench: address component review feedback (ac02dc6)
- testbench: address component scheduling review (db81516)
- testbench: address follow-up review (69568c8)
- testbench: address injected component review (ce7452e)
- testbench: address latest component review (92e8085)
- testbench: address latest component review feedback (b989e6a)
- testbench: draw implicit seeds at execution (b7e0d77)
- testbench: evaluate dynamic reset durations (8b4eb86)
- testbench: flatten packed hierarchical selects (12b11ee)
- testbench: handle hierarchical select geometry (08c15d1)
- testbench: honor selected destination geometry (8019bd0)
- testbench: preserve dynamic resets and clocked child state (6dced49)
- testbench: preserve random seed accessor API (5da3bd7)
- testbench: preserve selected destinations (8e8bb42)
- testbench: preserve selected destinations (8c8966d)
- testbench: preserve signed random result width (1f59dd1)
- testbench: reject dynamic reset durations (54e2314)
- testbench: reject runtime values as static timing (7a22a67)
- testbench: reject selected destinations and randomize unset seeds (db3c7ea)
- testbench: reject unsupported selected helper writes (a0979b4)
- testbench: respect layout and argument widths (9191526)
- testbench: validate selected random returns (d4d5b1a)
- veryl: address 0.20.3 integration regressions (63f510e)
- veryl: address hierarchical read feedback (f361b5e)
- veryl: carry lazy array item caches across branches (caa9e93)
- veryl: check hierarchical immediate writes (06e5662)
- veryl: coerce FF function results (e0594fe)
- veryl: detect callee array alias writes (79b7a1c)
- veryl: detect nested FF runtime effects (872ed71)
- veryl: evaluate unused array input effects (b6e2107)
- veryl: execute conditional FF runtime effects (f65630c)
- veryl: guard FF function state transitions (2a4aca8)
- veryl: guard nonlocal function writes (c5bba52)
- veryl: limit hierarchical names to module scope (76435af)
- veryl: lower dynamic nonlocal function stores (b17bae1)
- veryl: materialize array literal function arguments (a13d8f8)
- veryl: materialize array literal function arguments (0f066fb)
- veryl: materialize array views at access sites (e84d0c5)
- veryl: merge forwarded array cache state (177970f)
- veryl: merge nested array state at cache joins (9a7842e)
- veryl: order nonlocal function copyout (07f6259)
- veryl: preserve array literal evaluation semantics (729907e)
- veryl: preserve array literal views across calls (1c66f61)
- veryl: preserve array views through output assignment (99aa6a5)
- veryl: preserve dynamic function copyouts (397cb72)
- veryl: preserve eager FF assertion effects (eb489df)
- veryl: preserve eager FF assertion effects (3578cd1)
- veryl: preserve FF array input snapshots (631f1a4)
- veryl: preserve FF call-time inputs (7b9892a)
- veryl: preserve FF case evaluation order (5475af6)
- veryl: preserve FF case return paths (3c93218)
- veryl: preserve FF control effects lazily (dfe8ae7)
- veryl: preserve FF effect evaluation order (cd9bef5)
- veryl: preserve FF evaluation order (4475a44)
- veryl: preserve FF expression evaluation order (9f28386)
- veryl: preserve FF function observation semantics (149b393)
- veryl: preserve guarded function effects (b10cda3)
- veryl: preserve lazy array argument evaluation (c264ea2)
- veryl: preserve lazy array views across branches (8867382)
- veryl: preserve nested FF copy-out semantics (802fa24)
- veryl: preserve nested FF effect paths (bd497c0)
- veryl: preserve nested FF effect state (272fcac)
- veryl: preserve nested nonlocal state (98a3f15)
- veryl: preserve nonlocal copyout semantics (f0c1d68)
- veryl: preserve nonlocal function snapshots (928dc52)
- veryl: preserve ordered nonlocal state (be15f5c)
- veryl: preserve snapshots after master merge (3e4aa13)
- veryl: preserve unevaluated expression state (2c0d887)
- veryl: preserve unknown FF expression effects (2c09834)
- veryl: preserve unpacked argument dependencies (a4bd550)
- veryl: propagate evaluated call state (c18db04)
- veryl: propagate FF runtime effect state (cbfaaf2)
- veryl: reconcile FF eager evaluation with array views (c0a7ae2)
- veryl: reject aliased lazy array inputs (af64a68)
- veryl: reject aliased lazy array literals (20a3f3e)
- veryl: restore nearest reentrant array view last (541b553)
- veryl: snapshot array inputs before callee writes (c7a4188)
- veryl: snapshot FF control expressions (ae1c110)
- veryl: snapshot FF function assignment state (d4a3f89)
- veryl: snapshot helper call inputs (719922d)
- veryl: snapshot nonlocal function writes (369e4b2)
- veryl: stabilize FF effect evaluation (b1fc2d8)
- veryl: stabilize nested FF output state (0eaefcf)
- veryl: track array views in bound literals (26c08ee)
- veryl: track nested reads in output indices (e769063)
- veryl: track precise array merge state (603d33d)
- veryl: type FF symbolic function state (5c765f4)
- vite: normalize component dependency paths (1590b1d)
Performance Improvements
- arm64: reuse spill storage (53c79d7)
- native: match Heliodor compile time to Veryl (02b58aa)
- native: match Heliodor compile time to Veryl (86b4775)
- optimizer: index redundant load ranges (61467ee)
- optimizer: reduce compile-time analysis overhead (32b1f45)
- optimizer: reduce repeated scheduling work (4efa080)
- optimizer: skip redundant store analysis (37eb2c6)
- optimizer: skip redundant store analysis (4cd92b4)
- reduce Heliodor O2 compile time (c32ae63)
- reduce Heliodor O2 compile time (9908e72)