v0.65.0
IR migration progress
v0.65.0 moves substantially more real-world code through the shared IR, adds
typed reporting for the remaining unsupported paths, fixes standalone and
extern-boundary correctness, and hardens the release and Test262 pipelines.
Highlights
- Broader IR coverage. These existing compiler paths can now be IR-owned:
canonical callable boundaries, imported higher-order functions, selected
ambient event callbacks, Calendar's hostDatepaths, exact Promise/timer
delay patterns, and exact genericMap<K, V>module initialization
(#3466,
#3473,
#3475,
#3477,
#3479). - Typed IR outcomes. Set
trackIrOutcomes: trueto receive a typed
per-unitirOutcomesledger onCompileResult. Unsupported source
capabilities and compiler invariants are now distinct outcomes, and the new
check:ir-onlygate cannot claim readiness by silently skipping failed
units (#3483). - Standalone and boundary correctness.
BigInt64Array.prototypeand
BigUint64Array.prototypevalue reads now stay host-free. Boolean values
crossing hostexternrefboundaries also remain Booleans instead of being
boxed as numeric0/1, restoring cross-backend differential parity
(#3485,
#3486). - Verified package pairing.
@loopdive/js2and the unscopedjs2wasm
compatibility package are both published at0.65.0, and the proxy depends
exactly on@loopdive/js2@0.65.0. - Faster, safer validation. Test262 work is better balanced across the
serial merge queue, missing baselines no longer cause pointless polling,
and expensive Test262 work stops early when quality checks fail
(#3470,
#3472,
#3476,
#3478).
IR migration status
IR-only mode is not enabled by default yet, and the direct code generator
is still required. On the bounded five-program readiness corpus, 31 of 37
units emit IR; the other six are explicitly reported as Unsupported, with
zero compiler Invariant outcomes. All 37 still retain legacy bodies during
this migration stage.
Validation
- Full equivalence: 1,608 passing / 35 failing against 36 known-failure
entries, with zero new regressions; one baseline-known case now passes. - Cross-backend suite: 29/29 passing.
- Differential gate: 99/104, restored without changing its baseline.
- Authoritative closing merge-group Test262 run: JS-host 30,282/43,099;
standalone 28,149/43,106 (+13 at the final Sprint 74 boundary). - Lint, formatting, typecheck, production builds, package dry-runs, and
npm/JSR/GitHub publication checks passed.
Install
npm install @loopdive/js2@0.65.0
# Compatibility package name
npm install js2wasm@0.65.0Full changelog: v0.64.1...v0.65.0