Skip to content

v0.59.3

Choose a tag to compare

@ttraenkler ttraenkler released this 29 Jun 03:49

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)

  • #2816js2wasm <input> without -o now writes output to the current
    working directory
    (was: next to the input), and strips the full source
    extension from the output name (nm_deno.jsnm_deno.wasm, not
    nm_deno.js.wasm). Compiling an example that ships inside an installed package
    no longer pollutes node_modules.
  • #2817 — stop emitting a dead env.__wasiStdinStop host 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-2684 deno-stdio test against a flaky EPIPE: 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.mjs now expects
    the post-#2816 <name>.wasm output 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 delete of an unresolvable identifier returns true
    (including inside inlined eval bodies), per spec.
  • #2814 — tighten the block-let slot-reuse gate so a hoisted function
    declaration that captures a block-scoped let reads the correct slot
    (byte-identity preserved for the affected async cases).

Full changelog: v0.59.2...v0.59.3