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
ToInt32elided for the literal-zero operand inx|0/x^0. - Statically-
numberequality 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.getPrototypeOfsemantics completed. Function.prototype.callerpoison-pill semantics enforced.String.prototype.replacesearch/replace-value coercion order preserved.- Inherited property descriptor flags preserved; frozen/sealed descriptors clamped on read-back.
- Folded
evalbodies 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
lengthpreserved 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