Skip to content

v0.9.2

Latest

Choose a tag to compare

@dy dy released this 15 Jul 20:27
  • Web platform globals — Float16Array family, crypto.getRandomValues, URLSearchParams, requestAnimationFrame/queueMicrotask, byte codecs; modules can self-drive their own animation clock
  • The immutable-update idiom compiles to allocation-free packed records — ps[i] = { … } over a single-schema array lowers to raw i32 cells (C's layout, no boxing); immutable leads the whole WASM field (c-wasm 1.79×, Rust 2.32×, V8 2.64× behind)
  • &&-cond loop versioning — data-dependent bounds like the LZ match scan (src[j+len] === src[ip+len]) take the checked-free fast arm; lz now beats C→wasm
  • Hash lane — every Set/Map/dictionary carries a compact i32 probe lane (16 hash checks per cache line vs 2–3 at the old entry stride); miss chains stop sweeping the table
  • Interpreter/VM dispatch compiles to C's shape — zero selects, zero trunc_sat, one bounds branch + raw i32 register load (−49% on M4)
  • Interval-walk while-body fixpoint — heapsort, medianUs, and codec loops prove their bounds through 2-round widening + short-circuit refinement; sort beats C→wasm
  • rfft/cepstrum vectorize — mirror-lane v128 stores on symmetric fills, span-aligned vector bounds; cepstrum beats V8
  • Cross-function static typed lengths — a callee proves its receiver's .length from the frame that allocated it
  • Structural property resolution requires the full closed world — a cross-schema .prop read/write no longer touches a foreign slot
  • Loop-bound + checked-read soundness — a bound written mid-body keeps its reads checked; s += a[i] of an out-of-bounds element is NaN, JS-exact
  • Boolean identity survives the closure ABI — every boxed result position round-trips true/false
  • WASI reactor self-arms — every exported function honors the _initialize once-guard, so raw embedders that skip it never run unseeded
  • watr 5.7.4 — checked-read collapse family; the interpreter reg[a] !== 0 compare distributes into its arms (raw i32, no NaN materialization)
  • Geometric mean across the corpus: JZ leads — C 1.85×, AssemblyScript 1.99×, V8 2.14× slower

Full Changelog: v0.9.1...v0.9.2