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 exported async 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 context inheritance ofspawn_localwork when linking with-sJSPIand-sJSPI_HOOKS(or-sREENTRANT_JSPI). The fibers belong to Emscripten's JSPI 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 promising activation running its future withblock_onon a Tokio runtime whose waits are JSPI suspensions, so invocations interleave at every wait. #5333
Changed
- Library MSRV bumped from 1.77 to 1.81, per the 2-year MSRV policy. #5257
Fixed
-
The
wasm_bindgen,wasm_bindgen_futuresandjs_syscrate-path options on a#[wasm_bindgen] implblock now apply to its methods; previously they were 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 amacro_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) now generateis_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 since Emscripten owns instantiation. The closure finalization__postsetis now emitted 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 invalid JavaScript. The generatedtoJSONnow reads the0,1, ... fields asthis["0"]instead ofthis.0. #2573