Conversation
Member
Author
|
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.1050.2.127→0.2.1280.4.77→0.4.78Release Notes
wasm-bindgen/wasm-bindgen (wasm-bindgen)
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.