Skip to content

v0.67.0

Latest

Choose a tag to compare

@github-actions github-actions released this 31 Jul 00:25

v0.67.0

1,562 commits since v0.66.0 — 252 fix, 91 feat, 66 perf, 64 refactor, across 671 merged pull requests.


⚠️ Read this first: the conformance number went DOWN, and that is the headline improvement

v0.66.0 era v0.67.0
test262 (JS-host lane) 30,364 / 43,102 29,856 / 43,099
ORACLE_VERSION 10 12

This is not a regression. ORACLE_VERSION advanced twice in this release, and the 11 → 12 step is a declared re-baseline for a de-inflation of the test262 harness.

Previously, a class of tests was scored as passing while asserting nothing — a verifyProperty/assert path could complete vacuously, and the harness counted it. Those rows are now scored honestly, so they left the pass column.

The consequence matters if you track our numbers: the oracle bump IS the verdict-logic change, so rows are classified differently on both sides of the comparison. Pre- and post-bump counts are different quantities and cannot be subtracted. A "−508" computed from the table above is meaningless. If you have been comparing js2wasm conformance across releases, v0.67.0 is a discontinuity — re-baseline here.

The count fell because the measurement got honest, not because the compiler got worse.

Standalone (pure-Wasm, no JS host) highwater at release: 22,626 passing; officially scored 22,394 / 43,106.


npm package compatibility

The largest user-facing addition. Real packages, compiled from their published sources:

  • Sixteen upstream package harnesses added, exercising real dist bundles rather than synthetic snippets.
  • A public npm-compat dashboard with per-package compile/validate status, packages sorted by popularity, and a shared performance-bar component.
  • Standalone lanes added to the compatibility matrix, so a package is reported separately for JS-host and pure-Wasm targets.

Packages now under continuous compilation include Hono, Webpack, Tailwind, Three.js, Axios and ESLint's linter graph. Several are still failing; the dashboard reports what actually compiles and validates rather than what we hope does.

React

  • React element APIs now compile correctly, with host data bridges bound to genuine instances.
  • Upstream React API vectors added to the dogfood suite.

Not yet claimed: React's own upstream unit test suite. That work is tracked and deliberately not represented as done.

Performance

  • WASI warm array and string fast paths restored.
  • Redundant ToInt32 elided for the literal-zero operand in x|0 / x^0.
  • Statically-number equality now takes the numeric operand hint.
  • Compiled-Acorn self-parse throughput improved substantially; parse performance remains an active workstream, and compiled Acorn is still materially slower than native Node at real-file scale.

IR migration

Roughly 49 pull requests of IR front-end adoption: source-global storage ownership, exact class call dependencies, structural reference lookup, prepared component dependencies and ABI sealing, function-local var declarations, dynamic member stores, dynamic RegExp/string replace dispatch, and retained Acorn parser wrappers.

The IR path replaces accumulated direct-AST codegen hacks. It is orthogonal to the WasmGC-vs-linear backend choice — both backends stay.

Correctness

252 fixes. A representative sample:

  • ES5 Object.getPrototypeOf semantics completed.
  • Function.prototype.caller poison-pill semantics enforced.
  • String.prototype.replace search/replace-value coercion order preserved.
  • Inherited property descriptor flags preserved; frozen/sealed descriptors clamped on read-back.
  • Folded eval bodies no longer skip Script early errors.
  • Nullish member bases guarded before key coercion.
  • Standalone: refusals that were silently becoming runtime traps now surface as refusals.
  • Reified builtin function length preserved in standalone.

Packaging

@loopdive/js2 and the unscoped js2wasm proxy are published in lockstep at 0.67.0, with the proxy's dependency pinned exactly. A CI gate fails the publish unless the tag and both package.json versions agree.


Upgrade notes

  • If you track test262 conformance, treat v0.67.0 as a re-baseline. See the section at the top.
  • No intentional breaking API changes; this is a minor release.
  • Standalone mode remains a first-class target — new features are expected to have a Wasm-native path, not only a JS-host fast path.

Full commit-level changelog: v0.66.0...v0.67.0