v0.59.1
v0.59.1
Released 2026-06-29.
Highlight — Native Messaging large-frame fix + example consistency (#389)
- #2807 — silent zero-output for large single writes is fixed. Real
wasmtime rejects any singlefd_writewhose length is ≥ ~128 MiB (errno 48,
nwritten=0— a fixed structural cap, identical for a file or a pipe), and
js2wasm's WASI write helper was silently mapping that errno to "0 bytes" and
dropping it (also a latent ignored short-write). The write path now chunks
through__wasi_fd_write_all(≤64 MiB/call, advancing by the actual
nwritten). Verified byte-exact at 1 / 64 / 128 / 256 MiB under real
wasmtime v46 across all four hosts; a real-wasmtime scale test (4 hosts × 4
sizes) plus an always-on capped-fd_writeguard now run in CI. - #2810 — the async
nm_js2wasm_node_processhost now re-chunks its echo
to the ≤1 MiB browser cap likenm_js2wasm_node_fs(the real Chrome
native-messaging host→extension message limit) — for consistency, realism, and
bounded memory rather than buffering and writing the whole frame at once.
Refactor
- #389 — the Native-Messaging example hosts are renamed
nm_*→nm_js2wasm_*(deno,node_fs,node_process,wasi_p1,
wasi_p3,sync_framing).
Notable fixes
- #2769 — for-of object-binding head recurses into nested sub-patterns;
in-boundsundefined/hole defaults preserved. - #2758 — eager-box caller-scope captures mutated by a called sibling.
- #2806 —
var x = (void 0)treated as evolving-any/externref.
Full changelog: v0.59.0...v0.59.1