Conversation
Member
Author
|
ki7dk
force-pushed
the
renovate/rust-wasm-bindgen-monorepo
branch
from
September 25, 2026 08:10
290b2cb to
0db09d5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.3.104→0.3.1060.2.127→0.2.1290.4.77→0.4.79Release Notes
wasm-bindgen/wasm-bindgen (wasm-bindgen)
v0.2.129Compare Source
Added
Added the WebGL extension interface
EXT_polygon_offset_clamp.#5336
Added the
texture-compression-unalignedvariant toGpuFeatureName,matching the WebGPU specification.
#5335
Added an Emscripten Target page to the guide covering the
wasm32-unknown-emscriptenbuild flow, including the experimental#[wasm_bindgen(experimental_tokio)]attribute for driving an exportedasync function on a Tokio event-loop runtime there, gated behind
--cfg wasm_bindgen_unstable_tokio.#5334
Added experimental JSPI support on the
wasm32-unknown-emscriptentarget,gated behind
--cfg wasm_bindgen_unstable_jspi:#[wasm_bindgen(jspi)],#[wasm_bindgen(suspending)],jspi_block_on_promiseand the JSPI contextinheritance of
spawn_localwork when linking with-sJSPIand-sJSPI_HOOKS(or-sREENTRANT_JSPI). The fibers belong to Emscripten'sJSPI runtime, which wasm-bindgen integrates with through its lifecycle hook
exports instead of its own shadow stack management.
jspicombines withexperimental_tokiointo a parked runtime: the export is a promisingactivation running its future with
block_onon a Tokio runtime whosewaits are JSPI suspensions, so invocations interleave at every wait.
#5333
Changed
#5257
Fixed
The
wasm_bindgen,wasm_bindgen_futuresandjs_syscrate-path optionson a
#[wasm_bindgen] implblock now apply to its methods; previously theywere ignored there.
#5333
Struct field getters no longer trigger the
unsafe_op_in_unsafe_fnlint(warn by default in edition 2024) when the field name comes from a
macro_rules!body, for example throughpaste!.#4465
The headless test runner now keeps the path of a remote WebDriver URL set
with variables like
CHROMEDRIVER_REMOTE. A driver athttp://host/wd/hub/now getshttp://host/wd/hub/sessioninstead ofhttp://host/session.#2841
The bundler entry module no longer re-exports
#[wasm_bindgen(private)]items from
*_bg.js, which does not export them.#5343
web-sys: WebGL extension interfaces declared withLegacyNoInterfaceObject(
OVR_multiview2,WEBGL_multi_draw,EXT_polygon_offset_clamp) nowgenerate
is_type_of = |_| falselike theirNoInterfaceObjectcounterparts.#5336
The blanket
From<E: Error> for JsErrorimpl is now available without thestdfeature, usingcore::error::Error, so?works inno_stdcrates.#5029
Emscripten output no longer emits the instance reinit machinery, which
Emscripten's JS compiler rejected (unescaped multi-line
__postset, andvar reinit_scheduled = let ...):schedule_reinit()is a no-op there sinceEmscripten owns instantiation. The closure finalization
__postsetis nowemitted as an escaped string literal.
#5332
Updated
walrusto 0.27.2, fixing--keep-debugoutput thatwasm-opt -gcould not process:
.debug_locentries for removed code were unparseable(
debug_loc error), andDW_AT_high_pcwas re-encoded as variable-widthudata(compile unit size was incorrect).#5328
The headless test runner no longer hangs on a WebDriver that never answers, or on
a browser holding the driver's stdio pipes open.
#5338
The CLI's schema version mismatch error now names the input Wasm file and
the path of the running
wasm-bindgenbinary.#4430
#[wasm_bindgen(inspectable)]on a tuple struct no longer generates invalidJavaScript. The generated
toJSONnow reads the0,1, ... fields asthis["0"]instead ofthis.0.#2573
v0.2.128Compare Source
Added
Added
OffscreenCanvasoverloads for the WebGLtexImage2D,texSubImage2D,texImage3DandtexSubImage3Dfunctions, matching theTexImageSourcetypedef in the WebGL specification.
#5312
Added
--split-debug-infoto the CLI. This option extracts the DWARF debuginfo to a separate
*_bg.debug.wasmfile. Use--debug-info-urlto setthe recorded URL for the debug info. #5279
Added
#[wasm_bindgen(experimental_generic_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 importor to a whole
extern "C"block, which every generic function in the blockthen inherits. Each instantiation gets its own descriptor, so arguments and
return values are marshalled at their concrete types (a
u32crosses as anumber, a
Stringas a string) rather than being boxed. Trait bounds,wherepredicates (including higher-ranked ones), associated-typeprojections, lifetime parameters, argument-position
impl Trait, rawcallbacks with owned generic inputs and returns,
async,catch, andslice_to_arrayare all supported; seethe guide
for the supported surface and the shapes that are rejected. The attribute
is experimental and may change as it stabilizes.
#5230
#5272
#5314
Added the experimental, sealed
JsStringLikemarker trait — implemented forString/&str(andjs_sys::JsString/&js_sys::JsStringinjs-sys) —as a bound for
experimental_generic_monoimports that accept any stringshape at its native wire format.
#[wasm_bindgen(experimental_generic_mono)]now supports class-level genericparameters: an imported type that is itself generic (
type Holder<T>),used as a method receiver (
this: &Holder<T>), or as the return type of aconstructor or self-returning static method (
fn new<T>(value: T) -> Holder<T>). See Class-level genericsin the guide.
#5290
A generic imported type used as a method receiver or a constructor's return
type may now carry concrete generic arguments (
this: &Holder<u32>,this: &Holder<u32, T>). The arguments are re-emitted as written, so thegenerated method hangs off
impl Holder<u32>rather than the class's ownparameter defaults.
#5290
Added experimental JSPI (JS Promise Integration) support: using it emits a
compiler warning noting the experimental status.
Supports
#[wasm_bindgen(jspi)]on exports (sync orasync), within whicha
#[wasm_bindgen(suspending)]import call can suspend to the JS eventloop until its
Promisesettles.js_sys::futures::jspi_block_on_promisealso suspends on any
Promiseinside a synchronous function, whilespawn_localis context-aware: tasks spawned from within a JSPI contextsupport synchronous JSPI suspensions throughout their call trees.
Compatible with
catch(rejections asErr),async, andpanic=unwind.#5193
Added a
--ts-typed-array-buffersCLI flag to declare owned typed-arrayreturn values (e.g.
Vec<u8>) asUint8Array<ArrayBuffer>in generatedTypeScript, since they are always copied into a fresh, non-shared
ArrayBuffer. Requires TypeScript 5.7+.#5263
Changed
Export shim symbols are now mangled with a per-crate hash, so identically
named exports from different crates (or two versions of one crate) no
longer fail the link with duplicate-symbol errors; the CLI restores the
canonical names in the final module. Same-named
#[wasm_bindgen(private)]structs/enums now coexist (numbered
Name,Name2, ... internally in thegenerated bindings), while genuinely conflicting public exports are
reported as a wasm-bindgen error instead of a wasm-ld failure. Requires
matching
wasm-bindgenand CLI versions (schema bump).#2247
Setting
js_namespaceon both anextern "C"block and an item inside itis now a hard error. Nested paths must be written in a single attribute,
e.g.
js_namespace = ["a", "b"]. The previous behavior silently droppedthe block-level namespace.
#4324
Changed WebGPU
setImmediatesAPIs to take immutable u8 slice.#5289
Changed Web Bluetooth
writeValue/writeValueWithResponse/writeValueWithoutResponseand WebUSBcontrolTransferOut/transferOut/
isochronousTransferOutAPIs to take immutable u8 slices.#5309
Emscripten glue no longer reads
wasmExports['name']inline inside innerfunctions. It now references the asmjs-mangled identifiers emcc's own
top-level
assignWasmExportsreceiving code binds for every wasm export(e.g.
___wbindgen_malloc,___wbindgen_externrefs), which are thecanonical DCE-graph pairs: wasm-metadce keeps exactly the exports the
included glue uses (previously internal exports and the externref table
could be stripped or left unrenamed by the import/export minifier at
-O2,breaking at runtime). Hoisted classes are now emitted as
=-prefixedstring value snippets so jsifier declares them as
export var Class = class Class {...}instead of anexport classdeclaration, which crashes emcc's acorn-optimizer under
-sMODULARIZE=instance.Fixed
C-style
#[wasm_bindgen]enums inVec<T>/Box<[T]>now generateTypeScript and JSDoc as
EnumName[]instead ofany[].#5321
Fixed
js-sysfailing to compile withno_stdand thefutures-core-03-streamfeature enabled, since the feature unconditionallypulled in
futures-util/std. Thestdfeature offutures-utilis now onlyenabled by the
js-sysstdfeature.#5322
The thread-bootstrap transform is now skipped in Emscripten mode, where the
Emscripten runtime owns pthread startup and TLS. It previously ran on any
module with shared memory and aborted the build (
failed to find __wasm_init_tls), since Emscripten's linker had already consumed thesynthetic symbols it looks for.
#5315
Fixed conflicting deprecation messages on
web-sysdictionary fields thatare themselves deprecated: the deprecated builder-style method no longer
points at an equally-deprecated setter, and the WebAuthn fields removed from
the specification (such as
PublicKeyCredentialRpEntity'sicon) now statewhy they are deprecated.
#5302
#[wasm_bindgen]on a struct now reports an actionable error when the pathto the
wasm_bindgencrate cannot be resolved (e.g. whenwasm-bindgenisonly a transitive dependency through
web-sys), instead of a confusingrecursion limit error.
#5295
Fixed
js_namespaceexports missing from the bundler target's entry modulere-export list, making namespaces unreachable when importing the package.
#5267
The CLI now reports an actionable error when the
__wasm_bindgen_unstablecustom section is missing from a module that still contains wasm-bindgen
shims (e.g. stripped by
llvm-objcopy --strip-all, which removes all customsections since LLVM 23), instead of the confusing
import of `X` doesn't have an adapter listed.#5268
The generated
&Thandle conversions (IntoWasmAbi/OptionIntoWasmAbi) foran imported type with lifetime parameters (
type Holder<'a, T>) no longerreuse
'afor the reference itself. Previously the impl header declared onlya fresh
'aplus the type's type parameters, so a type whose lifetime wasnot literally named
'afailed withE0261against generated code, and onethat was named
'ahad its lifetime forced to unify with the borrow of&self— surfacing asE0521whenever a generic method also had to resolvethrough the same impl.
#5290
An inline lifetime bound on a generic import (
fn f<'a: 'b, 'b, T>(..)) is nolonger dropped from the generated wrapper. Previously the bound was lost while
the generated shim still declared it, so calling the import failed with
"lifetime may not live long enough" reported against generated code.
#5290
A type-parameter default on a
#[wasm_bindgen(experimental_generic_mono)]import is nolonger silently ignored. It has no meaning there (every instantiation gets its
own shim, so there is no single one to default) and rustc's own
invalid_type_param_defaultlint cannot see it, since nothing of the originalsignature survives expansion; it is now rejected with the same
defaults for generic parameters are not allowed herediagnostic rustc gives.Defaults on the type-erasure generic path are unaffected, where they remain
meaningful.
#5290
Fix
js-syswasm64 build withatomicsfeature.#5274
Declare
initSyncin the generated TypeScript definitions for--target no-modules, matching thewasm_bindgen.initSyncfunction thatthe JS output already exposes.
#5284
Removed the last panicking code paths from
externreftable management:RefCell::borrow_mut()embedded panic location data (including the sourcepath string) in
.rodataof optimized builds, which not evenwasm-optcould remove.
#5292
Fix
--no-modules-globalbeing ignored: the custom global name is now usedfor the generated JS binding and TypeScript declarations, and the name is
validated as a JS identifier.
#5286
Configuration
📅 Schedule: (in timezone America/Los_Angeles)
🚦 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.
This PR has been generated by Mend Renovate CLI.