Skip to content

v0.59.1

Choose a tag to compare

@ttraenkler ttraenkler released this 28 Jun 22:56

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 single fd_write whose 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_write guard now run in CI.
  • #2810 — the async nm_js2wasm_node_process host now re-chunks its echo
    to the ≤1 MiB browser cap
    like nm_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-bounds undefined/hole defaults preserved.
  • #2758 — eager-box caller-scope captures mutated by a called sibling.
  • #2806var x = (void 0) treated as evolving-any/externref.

Full changelog: v0.59.0...v0.59.1