Skip to content

v0.65.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 19:40

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 host Date paths, exact Promise/timer
    delay patterns, and exact generic Map<K, V> module initialization
    (#3466,
    #3473,
    #3475,
    #3477,
    #3479).
  • Typed IR outcomes. Set trackIrOutcomes: true to receive a typed
    per-unit irOutcomes ledger on CompileResult. Unsupported source
    capabilities and compiler invariants are now distinct outcomes, and the new
    check:ir-only gate cannot claim readiness by silently skipping failed
    units (#3483).
  • Standalone and boundary correctness. BigInt64Array.prototype and
    BigUint64Array.prototype value reads now stay host-free. Boolean values
    crossing host externref boundaries also remain Booleans instead of being
    boxed as numeric 0/1, restoring cross-backend differential parity
    (#3485,
    #3486).
  • Verified package pairing. @loopdive/js2 and the unscoped js2wasm
    compatibility package are both published at 0.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.0

Full changelog: v0.64.1...v0.65.0