Added
-
console.debug/log/info/warn/erroroutput from user-spawnedWorkerandSharedWorkerinstances is now forwarded to the CLI test runner during headless browser tests, just like output from the main thread. Works for blob URL workers, module workers, URL-based workers (importScripts), nested workers, and shared workers (including logs emitted before the first port connection). Non-cloneable arguments are serialized viaString()rather than crashing the worker. The--nocaptureflag is respected. #5037 -
js_sys::Promise<T>now implementsIntoFuture, enabling direct.awaiton any JS promise without a wrapper type. Thewasm-bindgen-futuresimplementation has been moved intojs-sysbehind an optionalfuturesfeature, which is activated automatically whenwasm-bindgen-futuresis a dependency. All existingwasm_bindgen_futures::*import paths continue to work unchanged via re-exports.js_sys::futuresis also available directly for users who wantpromise.awaitwithout depending onwasm-bindgen-futures. #5049 -
Added
--target emscriptensupport, generating alibrary_bindgen.jsfile for consumption by Emscripten at link time. Includes support for futures, JS closures, and TypeScript output. A new Emscripten-specific test runner is also included, along with CI integration. #4443 -
Added
VideoFrame,VideoColorSpace, and related WebCodecs dictionaries/enums toweb-sys. #5008 -
Added
wasm_bindgen::handlermodule withset_on_abortandset_on_reinithooks forpanic=unwindbuilds.set_on_abortregisters a callback invoked after the instance is terminated (hard abort, OOM, stack overflow).set_on_reinitregisters a callback invoked afterreinit()resets the WebAssembly instance via--experimental-reset-state-function. Handlers are stored as Wasm indirect-function-table indices so dispatch is safe even when linear memory is corrupt.
Changed
-
Replaced per-closure generic destructors with a single
__wbindgen_destroy_closureexport. #5019 -
Refactored the headless browser test runner logging pipeline for dramatically improved performance (>400x faster on Chrome, >10x on Firefox, ~5x on Safari). Switched to incremental DOM scraping with
textContent.slice(offset), append-only output semantics, unified log capture across all log levels on failure, and browser-specific invisible-div optimizations (display:nonefor Chrome/Firefox,visibility:hiddenfor Safari). #4960 -
TTY-gated status/clear output in the test runner shell to avoid
\rcontrol-character artifacts in non-interactive (CI) environments. #4960 -
Added
bench_console_log_10mbbenchmark alongside the existing 1MB benchmark for the headless test runner. The main branch cannot complete this benchmark at any volume. #4960 -
Updated to Walrus 0.26 #5057
Fixed
-
Fixed argument order when calling multi-parameter functions in the
wasm-bindgeninterpreter by reversing the args collected from the stack. #5047 -
Added support for per-operation
[WbgGeneric]in WebIDL, restoring typed generic return types (e.g.Promise<ImageBitmap>) forcreateImageBitmaponWindowandWorkerGlobalScopethat were lost after theVideoFramestabilization. #5026 -
Fixed missing
#[cfg(feature = "...")]gates on deprecated dictionary builder methods and getters for union-typed fields (e.g.{Open,Save,Directory}FilePickerOptions::start_in()), and fixed per-setter doc requirements to list each setter's own required features. #5039 -
Fixed
JsOption::new()to useundefinedinstead ofnull, to be compatible withOption::Noneand JS default parameters. #5023 -
Fixed unsound
unsafetransmutes inJsOption<T>::wrap,as_option, andinto_optionby replacingtransmute_copywithunchecked_into(). Also tightened theJsGenerictrait bound andJsOption<T>impl block to requireT: JsGeneric(which impliesJsCast), preventing use with arbitrary non-JS types. #5030 -
Fixed headless test runner emitting
\rcarriage-return sequences in non-TTY environments, which polluted captured logs in CI and complicated output-matching tests. #4960 -
Fixed headless test runner printing incomplete and out-of-order log output on test failures by merging all five log levels into a single unified output div. #4960
-
Fixed large test outputs (10MB+) causing oversized WebDriver responses that were either extremely slow or crashed completely, by switching to incremental streaming output collection. #4960
-
Fixed a duplciate wasm export in node ESM atomics, when compiled in debug mode #5028
-
Fixed a type inference regression (
E0283: type annotations needed) introduced in v0.2.109 where the stableFromIteratorandExtendimpls onjs_sys::Arraywere changed fromA: AsRef<JsValue>toA: AsRef<T>. Because#[wasm_bindgen]generates multipleAsRefimpls per type, the compiler could not uniquely resolveT, breaking code likeArray::from_iter([my_wasm_value])without explicit annotations. The stable impls are restored toA: AsRef<JsValue>(returningArray<JsValue>); the genericA: AsRef<T>forms remain available underjs_sys_unstable_apis. #5052 -
Fixed
skip_typescriptnot being respected when usingreexport, causing TypeScript definitions to be incorrectly emitted for re-exported items marked with#[wasm_bindgen(skip_typescript)]. #5051