v0.59.3
v0.59.3
Released 2026-06-29.
Patch release — Native-Messaging/CLI polish from the #389 thread,
plus two language-semantics fixes. No new features.
CLI & Native Messaging (#389)
- #2816 —
js2wasm <input>without-onow writes output to the current
working directory (was: next to the input), and strips the full source
extension from the output name (nm_deno.js→nm_deno.wasm, not
nm_deno.js.wasm). Compiling an example that ships inside an installed package
no longer pollutesnode_modules. - #2817 — stop emitting a dead
env.__wasiStdinStophost import under
--target wasi. It was already inline-lowered at every call site (a native
global.set, no host call) but missing from the reactor-intrinsics skip-set,
so it re-registered as a dead import and fired a spurious
"host import not on the dual-mode allowlist" warning on
nm_js2wasm_node_process.ts. No host import, no allowlist growth. - #2821 — harden the
issue-2684deno-stdio test against a flakyEPIPE: it
now feeds wasmtime's stdin from a temp-file fd instead of a parent-owned pipe,
so a child that hits EOF before the parent finishes writing can't break the
pipe. Test-only; the host round-trips deterministically. - #2816 (follow-up) —
examples/native-messaging/scale-test.mjsnow expects
the post-#2816<name>.wasmoutput name (the smoke harness still looked for
<name>.js.wasm).
All four Native-Messaging hosts continue to round-trip byte-exact under real
wasmtime 46.0.1 at 1 / 64 / 128 / 256 MiB.
Language fixes
- #2726 — sloppy-mode
deleteof an unresolvable identifier returnstrue
(including inside inlinedevalbodies), per spec. - #2814 — tighten the block-
letslot-reuse gate so a hoisted function
declaration that captures a block-scopedletreads the correct slot
(byte-identity preserved for the affected async cases).
Full changelog: v0.59.2...v0.59.3