Skip to content

v0.71.0

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Sep 02:18
· 2508 commits to main since this release
7fffec5

v0.71.0

Lockstep release of @loopdive/js2 and the js2wasm proxy: 0.70.0 → 0.71.0.

A minor release with no declared breaking changes.

Conformance

For a like-for-like comparison, the full test262 corpus stayed fixed at 48,735
tests:

target v0.70.0 v0.71.0 snapshot change
JS-host (gc) 33,432 / 48,735 (68.6%) 35,244 / 48,735 (72.3%) +1,812, +3.7 pp
standalone (pure Wasm) 31,614 / 48,735 (64.9%) 33,922 / 48,735 (69.6%) +2,308, +4.7 pp

The standalone edition snapshots show the main compatibility campaign directly:

edition v0.70.0 v0.71.0 snapshot change
ES5 8,506 / 9,029 (94.21%) 8,940 / 9,029 (99.01%) +434
ES2015 8,103 / 11,704 (69.23%) 9,025 / 11,704 (77.11%) +922

The standard-plus-Annex-B view is now 35,008 / 48,232 (72.6%) for
JS-host and 33,687 / 48,232 (69.8%) for standalone. Its v0.70.0
denominator was 43,621: 4,611 Temporal tests moved from proposal scope into
ES2026 standard scope, so that raw delta is not a like-for-like comparison.

These figures come from the latest committed snapshots in the release range:
the v0.70.0 artifact is anchored at 111a3794, and the v0.71.0 snapshot at
35d7edf5. The latter predates the final release head, so the numbers do not
claim to measure changes after that snapshot.

Highlights

Standalone JavaScript semantics — the ES5 and ES2015 campaigns advanced
arrays, iterators and for-of, destructuring, classes and super,
Proxy/Reflect, TypedArray/DataView, collections, Promise, RegExp,
eval/Function/with, and Annex B behavior.

Static npm package linkingcompileProject can now compile supported bare
package imports as content-addressed Wasm providers, follow export barrels and
cross-package graphs, preserve value/class/namespace boundaries, cache
providers, and optionally merge safe providers into a static bundle.
Unsupported boundaries retain an explicit monolithic fallback. The same
provider substrate supports a real Temporal global through a compile-once
polyfill.

Deno integration — a runnable compile-on-import loader now turns ordinary
TypeScript modules into callable Wasm exports under Deno. The compatibility
probe also boots the unchanged deno_core wrapper graph through linked runtime
modules and real Rust callbacks; this is bounded bootstrap support, not a claim
of complete Deno API compatibility.

Compiler core — validated Prepared IR now owns more multi-source callable
graphs, module initialization, typed fields, loops, conditional joins, and
async runtime boundaries, with new ratchets preventing silent fallback to
legacy paths.

Real-world validation — the TypeScript 5.9.3 parser graph now compiles to
valid Wasm, while runtime parity remains incomplete and tracked. Original
upstream npm suites expanded across React/ReactDOM, Jest, ESLint, Redux, and
TypeScript; the UUID suite moved from 10/75 to 75/75.

Experimental linear backend — the boxed QuickJS tier gained
ownership-aware handle cleanup and an optional coalescing malloc-v1
allocator. The existing bump allocator remains the default. Binaryen was
upgraded to 132.

Detail

No !: subject or BREAKING CHANGE trailer appears in the release range.

For the complete list, see the compare view:
v0.70.0...v0.71.0

Install

npm install @loopdive/js2@0.71.0
# or the unscoped proxy
npm install js2wasm@0.71.0