v0.59.5
v0.59.5
Released 2026-06-29.
Patch release. Completes the Native-Messaging hardening from the #389
thread (all four hosts now work end-to-end on both compile paths), a 4× memory
cut for byte buffers, and a few compiler fixes. No new features.
Verified end-to-end on the final tree: guest271314's exact flow — both the
.js (bun-bundle → js2wasm → wasmtime) and .ts-direct compile paths, all four
hosts byte-exact at 1/64/128/256 MiB under real wasmtime 46, with
nm_js2wasm_node_process peak RSS flat at ~35 MB.
Native Messaging (#389)
- #2839 / #2831 — the host-externref→wasm-vec materializer now handles packed
i8/i16element kinds and emits a WASI-native reader instead of a JS-host
import. This fixes the__vec_from_extern … expected i32, found externref
validation failure that broke the standaloneprocess.stdincompile (the.js
host path). - #2840 — module-scope
Uint8Arraybuffers are excluded from the linear-safe
analysis, fixing fourlinear Uint8Array helper argument is not backed by linear memory (#1886)errors when compilingnm_js2wasm_node_process.tsdirectly
(.ts-direct path). - #2834 —
nm_js2wasm_node_processis now runnable under realnodetoo
(viaprocess.stdin.setEncoding("latin1")), not just compiled to wasm. - #2833 — native-messaging relative imports carry an explicit
.tsextension,
so Deno /deno bundleresolve them without--unstable-sloppy-imports.
Performance
- #2835 — the ArrayBuffer / DataView /
Uint8Arraybyte buffer is now backed
by a packedarray(mut i8)(one byte per element) instead ofarray(mut i32)
— a 4× GC-footprint reduction (a 256 MiB ArrayBuffer materializes as ~256 MiB
instead of ~1 GiB). DataView/typed-array behavior is byte-identical.
Other compiler fixes
- #2836 — keep object elements across dynamic-dispatch
anyargs (gate the
host-shim vec conversion on__is_vec). - #2838 —
wasmClosureBridgemethod-thisarity fallback (L3).
Chore
- #2320 — devcontainer binds the host SSH pubkey into
authorized_keys.
Full changelog: v0.59.4...v0.59.5