Skip to content

Update rust-wasm-bindgen monorepo - #14

Open
ki7dk wants to merge 1 commit into
mainfrom
renovate/rust-wasm-bindgen-monorepo
Open

Update rust-wasm-bindgen monorepo#14
ki7dk wants to merge 1 commit into
mainfrom
renovate/rust-wasm-bindgen-monorepo

Conversation

@ki7dk

@ki7dk ki7dk commented Aug 8, 2026

Copy link
Copy Markdown
Member

This PR contains the following updates:

Package Type Update Change
js-sys (source) dependencies patch 0.3.1030.3.104
wasm-bindgen (source) dependencies patch 0.2.1260.2.127
wasm-bindgen-futures (source) dependencies patch 0.4.760.4.77

Release Notes

wasm-bindgen/wasm-bindgen (wasm-bindgen)

v0.2.127

Compare Source

Added
  • Navigation API
    to web-sys #​5247

  • Added #[wasm_bindgen(generic_per_mono)] for imported functions, which binds a
    generic import once per monomorphisation instead of erasing its type
    parameters to JsValue. It can be applied to an individual import or to a
    whole extern "C" block, which every function in the block then inherits.
    Each instantiation gets its own descriptor, so
    arguments and return values are marshalled at their concrete types (a u32
    crosses as a number, a String as a string) rather than being boxed. Trait
    bounds, where predicates (including higher-ranked ones), associated-type
    projections, lifetime parameters, async, catch, and slice_to_array are
    all supported; see the guide
    for the supported surface and the shapes that are rejected.

  • Added riscv64gc-unknown-linux-gnu release artifacts.
    #​5265

  • Added JsNullable<T>, modeling WebIDL nullable types (T | null). Both
    null and undefined are treated as absent, per WebIDL's ECMAScript
    conversion rules; the canonical empty value produced from Rust is null.
    web-sys now uses JsNullable<T> instead of JsOption<T> for nullable
    types nested inside generics (e.g. Promise<GpuError?> from
    GPUDevice.popErrorScope()), fixing spec-defined null resolutions being
    treated as present values under JsOption<T>'s strict undefined-only
    semantics. JsNullable<T> participates in the same upcast lattice as
    JsOption<T> (including contravariant closure argument casts), and
    additionally upcasts from Null and from JsOption<T> itself. Imported
    extern types now also upcast into JsOption<JsValue> and
    JsNullable<JsValue>, so catch-all nullable closures can be used where a
    typed callback is expected.
    #​5234

  • Added experimental JSPI (JS Promise Integration) support: using it emits a
    compiler warning noting the experimental status.
    Supports #[wasm_bindgen(jspi)] on exports (sync or async), within which
    a #[wasm_bindgen(suspending)] import call can suspend to the JS event
    loop until its Promise settles. js_sys::futures::jspi_block_on_promise
    also suspends on any Promise inside a synchronous function, while
    spawn_local is context-aware: tasks spawned from within a JSPI context
    support synchronous JSPI suspensions throughout their call trees.
    Compatible with catch (rejections as Err), async, and
    panic=unwind.
    #​5193

Changed
  • Emscripten output now marks public exports (free functions, classes, enums,
    and namespace roots) with the __export: true and __force: true symbol
    attributes on their addToLibrary entries, instead of mutating
    EXPORTED_FUNCTIONS and pushing to extraLibraryFuncs at library-load time.
    The $initBindgen init closure is kept via __force: true, and private
    symbols (including namespace leaves) carry neither attribute — they remain
    reachable through __deps. Requires an emscripten with __export/__force
    symbol-attribute support.

  • Updated WebGPU bindings to the August 2026 spec, including the new
    GPUCommandEncoder::copy_buffer_to_buffer overloads and setImmediates.
    #​5246

  • Unstable API overload names now elide name tokens shared by every overload
    variant: LockManager::request_with_callback is now request, and
    request_with_options_and_callback is now request_with_options.
    #​5246

Fixed
  • The name property of the JS error thrown for panic=unwind is now set from
    a string literal instead of PanicError.name, so it survives minification.
    #​5260

  • Fixed Emscripten builds using pthreads failing to link.
    #​5254

  • __wbg_load in web targets now throws a clear error including the HTTP
    status and URL when given a non-ok fetch Response, instead of surfacing a
    misleading MIME-type or Wasm-magic-number error.
    #​5256

  • Restored __stack_pointer when an exception unwinds out of a wasm export,
    preventing repeated panic = "unwind" calls from leaking shadow-stack frames
    until the shadow stack is exhausted and calls trap. Node reports
    memory access out of bounds; poisoned instances can instead report
    Module terminated.
    #​5244

  • slice_to_array on a &mut slice (which silently discarded JS's writes) or
    on a slice with a generic element type is now a compile error, and strings
    and arrays received by JS (e.g. a Vec<String> return value) no longer make
    a redundant copy of the freshly built value.
    #​5261

  • Fixed async imports with non-JS-handle resolved types (e.g.
    async fn f() -> u32;) silently producing garbage since 0.2.109: the
    descriptor named the resolved type instead of the Promise handle that
    actually crosses the ABI.
    #5249

  • Fixed catch imports returning i64/u64 throwing a TypeError (and
    panicking in __wbindgen_exn_store) when the JS import throws, since the
    handleError catch path returned undefined which cannot be converted to
    a Wasm i64.
    #​5238

  • js_namespace is now part of an imported function's and imported static's
    generated shim name. Two imports with identical Rust signatures that differed
    only in their js_namespace hashed to the same __wbg_<name>_<hash>
    symbol, so they were treated as one binding and one of the two call sites
    silently invoked the wrong JS value.
    #​5250

  • Macro hygiene fixes - slice_to_array now works in #![no_std] crates.
    Generated code no longer names core or std unqualified.
    #​5251

  • Fixed length prefixes in descriptor strings to count chars rather than
    UTF-8 bytes, so non-ASCII names in js_name/typescript_type no longer
    panic the CLI or mis-bind the generated bindings.
    #​5248

  • Fixed threaded Wasm memory layout to reserve wasm-bindgen's internal thread
    page after the module's original initial memory instead of at __heap_base,
    avoiding overlap with allocators that resolve __heap_base/__heap_end at
    link time and treat that range as preexisting heap space.
    #​5225

  • Emscripten output now reaches wasm exports through emscripten's wasmExports
    object using bracket (string-literal) access (wasmExports['__wbindgen_start'])
    instead of a local wasm alias with dot access. wasmExports['name'] is the
    form emcc's DCE graph roots and its import/export minifier renames in the JS
    and the wasm together, so the glue now survives and stays consistent under
    -O3/-Os (previously the export names were minified without updating the JS
    call sites, e.g. __wbindgen_start is not defined).

  • The emscripten detection marker static is no longer leaked as public API.
    #​5220
    #​5222


Configuration

📅 Schedule: (in timezone America/Los_Angeles)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

@ki7dk

ki7dk commented Aug 8, 2026

Copy link
Copy Markdown
Member Author

⚠️ Artifact update problem

Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: rust-analyst/Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path rust-analyst/Cargo.toml --package js-sys@0.3.103 --precise 0.3.104
    Updating crates.io index
error: failed to select a version for the requirement `js-sys = "=0.3.103"`
candidate versions found which didn't match: 0.3.104
location searched: crates.io index
required by package `wasm-bindgen-futures v0.4.76`
    ... which satisfies dependency `wasm-bindgen-futures = "^0.4"` (locked to 0.4.76) of package `wasm-analyst v0.1.0 (/tmp/renovate/repos/github/tissue-systems/tissue-examples/rust-analyst)`

File name: rust-g7-store/Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path rust-g7-store/Cargo.toml --package js-sys@0.3.103 --precise 0.3.104
    Updating crates.io index
error: failed to select a version for the requirement `js-sys = "=0.3.103"`
candidate versions found which didn't match: 0.3.104
location searched: crates.io index
required by package `wasm-bindgen-futures v0.4.76`
    ... which satisfies dependency `wasm-bindgen-futures = "^0.4"` (locked to 0.4.76) of package `rust-g7-store v0.1.0 (/tmp/renovate/repos/github/tissue-systems/tissue-examples/rust-g7-store)`

File name: rust-phonebook/Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path rust-phonebook/Cargo.toml --package js-sys@0.3.103 --precise 0.3.104
    Updating crates.io index
error: failed to select a version for the requirement `js-sys = "=0.3.103"`
candidate versions found which didn't match: 0.3.104
location searched: crates.io index
required by package `wasm-bindgen-futures v0.4.76`
    ... which satisfies dependency `wasm-bindgen-futures = "^0.4"` (locked to 0.4.76) of package `wasm-phonebook v0.1.0 (/tmp/renovate/repos/github/tissue-systems/tissue-examples/rust-phonebook)`

File name: rust-primes/Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path rust-primes/Cargo.toml --package js-sys@0.3.103 --precise 0.3.104
    Updating crates.io index
error: failed to select a version for the requirement `js-sys = "=0.3.103"`
candidate versions found which didn't match: 0.3.104
location searched: crates.io index
required by package `wasm-bindgen-futures v0.4.76`
    ... which satisfies dependency `wasm-bindgen-futures = "^0.4"` (locked to 0.4.76) of package `wasm-primes v0.1.0 (/tmp/renovate/repos/github/tissue-systems/tissue-examples/rust-primes)`

@ki7dk
ki7dk force-pushed the renovate/rust-wasm-bindgen-monorepo branch from 019cec5 to 13e173f Compare August 13, 2026 04:09
@ki7dk
ki7dk force-pushed the renovate/rust-wasm-bindgen-monorepo branch from 13e173f to a56e9fc Compare August 13, 2026 20:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant