NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3824 most downloaded on crates.io
Utilities for working with Wasm codegen conventions (usually established by LLVM/lld)
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 4 weeks to 5 months
Nearly every release is documented
notes for 50 of 50 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
50 releases · first in 2019
Add attributes to overwrite return (`unchecked_return_type) and parameter types (unchecked_param_type), descriptions (return_description and param_des
Released 2025-01-12
Add attributes to overwrite return (``unchecked_return_type) and parameter types (unchecked_param_type), descriptions (return_descriptionandparam_description) as well as parameter names (js_name`) for exported functions and methods. See the guide for more details.
#4394
Add a copy_to_uninit() method to all TypedArrays. It takes &mut [MaybeUninit<T>] and returns &mut [T].
#4340
Add test coverage support for Node.js. #4348
Support importing memory and using wasm_bindgen::module() in Node.js.
#4349
Add --list, --ignored, --exact and --nocapture to wasm-bindgen-test-runner, analogous to cargo test.
#4356
Add bindings to Date.to_locale_time_string_with_options.
#4384
#[wasm_bindgen] now correctly applies #[cfg(...)]s in structs.
#4351
Optional parameters are now typed as T | undefined | null to reflect the actual JS behavior.
#4188
Adding getter, setter, and constructor methods to enums now results in a compiler error. This was previously erroneously allowed and resulted in invalid JS code gen.
#4278
Handle stuck and failed WebDriver processes when re-trying to start them. #4340
Align test output closer to native cargo test.
#4358
Error if URL in <WEBDRIVER>_REMOTE can't be parsed instead of just ignoring it.
#4362
Remove WASM_BINDGEN_THREADS_MAX_MEMORY and WASM_BINDGEN_THREADS_STACK_SIZE. The maximum memory size can be set via -Clink-arg=--max-memory=<size>. The stack size of a thread can be set when initializing the thread via the default function.
#4363
console.*() calls in tests are now always intercepted by default. To show them use --nocapture. When shown they are always printed in-place instead of after test results, analogous to cargo test.
#4356
Fixed using JavaScript keyword as identifiers not being handled correctly. #4329
struct and enum names will now error at compile time, instead of causing invalid JS code gen.js_namespace on imports.js_namespace or module attribute.js_namespace or module attribute._{keyword}.Fixed passing large arrays into Rust failing because of internal memory allocations invalidating the memory buffer. #4353
Pass along an ignore attribute to unsupported tests.
#4360
Use OS provided temporary directory for tests instead of Cargo's target directory.
#4361
Error if URL in <WEBDRIVER>_REMOTE can't be parsed.
#4362
Internal functions are now removed instead of invalidly imported if they are unused. #4366
Fixed no_std support for all APIs in web-sys.
#4378
Prevent generating duplicate exports for closure conversions. #4380
One column per quarter.
Mark wasm-bindgen v0.2.98 only compatible with wasm-bindgen-cli of the same version. #4331
Released 2024-12-07
wasm-bindgen v0.2.98 only compatible with wasm-bindgen-cli of the same version.
#4331Add support for compiling with atomics for Node.js. #4318
Released 2024-12-07
Add support for compiling with atomics for Node.js.
#4318
Add WASM_BINDGEN_TEST_DRIVER_TIMEOUT environment variable to control the timeout to start and connect to the test driver.
#4320
Add support for number slices of type MaybeUninit<T>.
#4316
Remove once_cell/critical-section requirement for no_std with atomics.
#4322
static FOO: Option<T> now returns None if undeclared in JS instead of throwing an error in JS.
#4319
Fix macro-hygiene for calls to std::thread_local!.
#4315
Fix feature resolver version 1 compatibility. #4327
Fixed js-sys and wasm-bindgen-futures relying on internal paths of wasm-bindgen that are not crate feature additive. #4305
Released 2024-11-30
js-sys and wasm-bindgen-futures relying on internal paths of wasm-bindgen that are not crate feature additive.
#4305Deprecate autofocus, tabIndex, focus() and blur() bindings in favor of bindings on the inherited Element class. #4143
Released 2024-11-29
Added support for the HTMLOrSVGElement mixin, which is used for all interfaces deriving from Element.
#4143
Added bindings for MathMLElement. #4143
Added JSDoc type annotations to C-style enums. #4192
Added support for C-style enums with negative discriminants. #4204
Added bindings for MediaStreamTrack.getCapabilities.
#4236
Added WASM ABI support for u128 and i128
#4222
Added support for the wasm32v1-none target.
#4277
Added support for no_std to js-sys, web-sys, wasm-bindgen-futures and wasm-bindgen-test.
#4277
Added support for no_std to link_to!, static_string (via thread_local_v2) and throw.
#4277
Added environment variables to configure tests: WASM_BINDGEN_USE_BROWSER, WASM_BINDGEN_USE_DEDICATED_WORKER, WASM_BINDGEN_USE_SHARED_WORKER WASM_BINDGEN_USE_SERVICE_WORKER, WASM_BINDGEN_USE_DENO and WASM_BINDGEN_USE_NODE_EXPERIMENTAL. The use of wasm_bindgen_test_configure! will overwrite any environment variable.
#4295
String enums now generate private TypeScript types but only if used. #4174
Remove unnecessary JSDoc type annotations from generated .d.ts files
#4187
Deprecate autofocus, tabIndex, focus() and blur() bindings in favor of bindings on the inherited Element class.
#4143
Optimized ABI performance for Option<{i32,u32,isize,usize,f32,*const T,*mut T}>.
#4183
Deprecate --reference-types in favor of automatic target feature detection.
#4237
wasm-bindgen-test-runner now tries to restart the WebDriver on failure, instead of spending its timeout period trying to connect to a non-existing WebDriver.
#4267
Deprecated #[wasm_bindgen(thread_local)] in favor of #[wasm_bindgen(thread_local_v2)], which creates a wasm_bindgen::JsThreadLocal. It is similar to std::thread::LocalKey but supports no_std.
#4277
Updated the WebGPU API to the current draft as of 2024-11-22. #4290
Improved error messages for self arguments in invalid positions.
#4276
Fixed methods with self: &Self consuming the object.
#4178
Fixed unused string enums generating JS values. #4193
Fixed triggering lints in testing facilities. #4195
Fixed #[should_panic] not working with #[wasm_bindgen_test(unsupported = ...)].
#4196
Fixed potential null error when using JsValue::as_debug_string().
#4192
Fixed generated types when the getter and setter of a property have different types. #4202
Fixed generated types when a static getter/setter has the same name as an instance getter/setter. #4202
Fixed invalid TypeScript return types for multivalue signatures. #4210
Only emit table.fill instructions if the bulk-memory proposal is enabled.
#4237
Fixed calls to JsCast::instanceof() not respecting JavaScript namespaces.
#4241
Fixed imports for functions using this and late binding.
#4225
Don't expose non-functioning implicit constructors to classes when none are provided. #4282
Added support for implicit discriminants in enums. #4152
Released 2024-10-10
Added support for implicit discriminants in enums. #4152
Added support for Self in complex type expressions in methods.
#4155
Fixed generated setters from WebIDL interface attributes binding to wrong JS method names. #4170
Fix string enums showing up in JS documentation and TypeScript bindings without corresponding types. #4175
Deprecated Gamepad::display_id and GamepadHapticActuator::type_. #4134
Released 2024-10-09
Added support for the WebAssembly Tail Call proposal.
#4111
Add bindings for RTCPeerConnection.setConfiguration(RTCConfiguration) method.
#4105
Add bindings to RTCRtpTransceiverDirection.stopped.
#4102
Added experimental support for Symbol.dispose via WASM_BINDGEN_EXPERIMENTAL_SYMBOL_DISPOSE.
#4118
Added bindings for the draft WebRTC Encoded Transform spec. #4125
Added Debug implementation to JsError.
#4136
Added support for js_name and skip_typescript attributes for string enums.
#4147
Added unsupported crate to wasm_bindgen_test(unsupported = test) as a way of running tests on non-Wasm targets as well.
#4150
Added additional bindings for methods taking buffer view types (e.g. &[u8]) with corresponding JS types (e.g. Uint8Array).
#4156
Added additional bindings for setters from WebIDL interface attributes with applicaple parameter types of just JsValue.
#4156
Implicitly enable reference type and multivalue transformations if the module already makes use of the corresponding target features. #4133
Updated Gamepad API. #4134
Deprecated Gamepad::display_id and GamepadHapticActuator::type_.
#4134
Removed GamepadAxisMoveEvent, GamepadAxisMoveEventInit, GamepadButtonEvent, GamepadButtonEventInit and GamepadServiceTest, which were seemingly never implemented by any JS environment.
#4134
Changed TextDecoder.decode() input parameter type from &mut [u8] to &[u8].
#4141
Updated the WebGPU API to the current draft as of 2024-10-07. #4145
Deprecated generated setters from WebIDL interface attribute taking JsValue in favor of newer bindings with specific parameter types.
#4156
Fixed linked modules emitting snippet files when not using --split-linked-modules.
#4066
Fixed incorrect deprecation warning when passing no parameter into default() (init()) or initSync().
#4074
Fixed many proc-macro generated impl blocks missing #[automatically_derived], affecting test coverage.
#4078
Fixed negative BigInt values being incorrectly formatted with two minus signs.
#4082
#4088
Fixed emitted package.json structure to correctly specify its dependencies
#4091
Fixed returning Option<Enum> now correctly has the | undefined type in TS bindings.
#4137
Fixed enum variant name collisions with object prototype fields. #4137
Fixed multiline doc comment alignment and remove empty ones entirely. #4135
Fixed experimental-nodejs-module target when used with #[wasm_bindgen(start)].
#4093
Fixed error when importing very large JS files. #4146
Specify "type": "module" when deploying to nodejs-module
#4092
Fixed string enums not generating TypeScript types. #4147
Bindings that take buffer view types (e.g. &[u8]) as parameters will now correctly return a Result when they might not support a backing SharedArrayBuffer. This only applies to new and unstable APIs, which won't cause a breaking in the API.
#4156
Deprecate builder-pattern type setters for WebIDL dictionary types and introduce non-mutable setters instead. #3993
Released 2024-08-13
Allow exporting functions named default. Throw error in wasm-bindgen-cli if --target web and
an exported symbol is named default.
#3930
Added support for arbitrary expressions when using #[wasm_bindgen(typescript_custom_section)].
#3901
Implement From<NonNull<T>> for JsValue.
#3877
Add method copy_within for TypedArray, add methods find_last,find_last_index for Array.
#3888
Added support for returning Vecs from async functions.
#3630
Added bindings for InputDeviceInfo and MediaTrackCapabilities.
#3935
Add bindings for RTCRtpReceiver.getCapabilities(DOMString) method.
#3941
Add bindings for VisualViewport.
#3931
Add bindings for queueMicrotask.
#3981
Add experimental bindings for User Agent Client Hints API #3989
Add bindings for FocusOptions.
#3996
Add bindings for RTCRtpReceiver.jitterBufferTarget.
#3968
Generate getters for all WebIDL dictionary types. #3993
Support for iterable in WebIDL. Gives entries, keys, values methods for regular and asynchronous, as well as for_each for regular, iterables.
#3962
Add bindings for HTMLTableCellElement.abbr and scope properties.
#3972
Add WebIDL definitions relating to Popover API.
#3977
Added the thread_stack_size property to the object parameter of default() (init()) and initSync(), making it possible to set the stack size of spawned threads. __wbindgen_thread_destroy() now has a third optional parameter for the stack size, the default stack size is assumed when not passing it. When calling from the thread to be destroyed, by passing no parameters, the correct stack size is determined internally.
#3995
Added bindings to the Device Memory API. #4011
Added support for WebIDL records. This added new methods to various APIs, notably ClipboardItem(), GPUDeviceDescriptor.requiredLimits and Header().
#4030
Added an official MSRV policy. Library MSRV changes will be accompanied by a minor version bump. CLI tool MSRV can change with any version bump. #4038
Added bindings to NavigatorOptions.vibrate.
#4041
Added an experimental Node.JS ES module target, in comparison the current node target uses CommonJS, with --target experimental-nodejs-module or when testing with wasm_bindgen_test_configure!(run_in_node_experimental).
#4027
Added importing strings as JsString through #[wasm_bindgen(thread_local, static_string)] static STRING: JsString = "a string literal";.
#4055
Added experimental test coverage support for wasm-bindgen-test-runner, see the guide for more information.
#4060
Stabilize Web Share API. #3882
Generate JS bindings for WebIDL dictionary setters instead of using Reflect. This increases the size of the Web API bindings but should be more performant. Also, importing getters/setters from JS now supports specifying the JS attribute name as a string, e.g. #[wasm_bindgen(method, setter = "x-cdm-codecs")].
#3898
Greatly improve the performance of sending WebIDL 'string enums' across the JavaScript boundary by converting the enum variant string to/from an int. #3915
Use table.fill when appropriate.
#3446
Annotated methods in WebCodecs that throw. #3970
Update and stabilize the Clipboard API. #3992
Deprecate builder-pattern type setters for WebIDL dictionary types and introduce non-mutable setters instead. #3993
Allow imported async functions to return any type that can be converted from a JsValue.
#3919
Update Web Authentication API to level 3. #4000
Deprecate AudioBufferSourceNode.onended and AudioBufferSourceNode.stop().
#4020
Increase default stack size for spawned threads from 1 to 2 MB. #3995
Deprecated parameters to default (init) and initSync in favor of an object.
#3995
Update AbortSignal and AbortController according to the WHATWG specification.
#4026
Update the Indexed DB API. #4027
UnwrapThrowExt for Result now makes use of the required Debug bound to display the error as well.
#4035
#4049
MSRV of CLI tools bumped to v1.76. This does not affect libraries like wasm-bindgen, js-sys and web-sys!
#4037
Filtered files in published crates, significantly reducing the package size and notably excluding any bash files. #4046
Deprecated JsStatic in favor of #[wasm_bindgen(thread_local)], which creates a std::thread::LocalKey. The syntax is otherwise the same.
#4057
Removed impl Deref for JsStatic when compiling with cfg(target_feature = "atomics"), which was unsound.
#4057
Updated the WebGPU WebIDL to the current draft as of 2024-08-05. #4062
Use object URLs for linked modules without --split-linked-modules.
#4067
Copy port from headless test server when using WASM_BINDGEN_TEST_ADDRESS.
#3873
Fix catch not being thread-safe.
#3879
Fix MSRV compilation. #3927
Fix clippy::empty_docs lint.
#3946
Fix missing target features in module when enabling reference types or multi-value transformation. #3967
Fixed Rust values getting GC'd while still borrowed. #3940
Fixed Rust values not getting GC'd if they were created via. a constructor. #3940
Fix triggering clippy::mem_forget lint in exported structs.
#3985
Fix MDN links to static interface methods. #4010
Fixed Deno support. #3990
Fix __wbindgen_thread_destroy() ignoring parameters.
#3995
Fix no_std support and therefor compiling with default-features = false.
#4005
Fix byte order for big-endian platforms. #4015
Allow ex/importing structs, functions and parameters named with raw identifiers. #4025
Implement a more reliable way to detect the stack pointer. #4036
#[track_caller] is now always applied on UnwrapThrowExt methods when not targeting wasm32-unknown-unknown.
#4042
Fixed linked modules emitting snippet files when not using --split-linked-modules.
#4066
Add bindings for RTCPeerConnectionIceErrorEvent. #3835
Released 2024-03-04
Add bindings for RTCPeerConnectionIceErrorEvent.
#3835
Add bindings for CanvasState.reset(), affecting CanvasRenderingContext2D and OffscreenCanvasRenderingContext2D.
#3844
Add TryFrom implementations for Number, that allow losslessly converting from 64- and 128-bits numbers.
#3847
Add support for Option<*const T>, Option<*mut T> and NonNull<T>.
#3852
#3857
Allow overriding the URL used for headless tests by setting WASM_BINDGEN_TEST_ADDRESS.
#3861
Make .wasm output deterministic when using --reference-types.
#3851
Don't allow invalid Unicode scalar values in char.
#3866
Deprecate wasm_bindgen_test_configure!s run_in_worker in favor of run_in_dedicated_worker. #3804
Released 2024-02-06
Added bindings for the RTCRtpTransceiver.setCodecPreferences() and unstable bindings for the RTCRtpEncodingParameters.scalabilityMode.
#3828
Add unstable bindings for the FileSystemAccess API #3810
Added support for running tests in shared and service workers with wasm_bindgen_test_configure! run_in_shared_worker and run_in_service_worker.
#3804
Accept the --skip flag with wasm-bindgen-test-runner.
#3803
Introduce environment variable WASM_BINDGEN_TEST_NO_ORIGIN_ISOLATION to disable origin isolation for wasm-bindgen-test-runner.
#3807
Add bindings for USBDevice.forget().
#3821
Stabilize ClipboardEvent.
#3791
Use immutable buffers in SubtleCrypto methods.
#3797
Deprecate wasm_bindgen_test_configure!s run_in_worker in favor of run_in_dedicated_worker.
#3804
Updated the WebGPU WebIDL to the current draft as of 2024-01-30. Note that this retains the previous update's workaround for GPUPipelineError, and holds back an update to the buffer argument of the GPUQueue.{writeBuffer,writeTexture} methods.
#3816
Deprecate --weak-refs and WASM_BINDGEN_WEAKREF in favor of automatic run-time detection.
#3822
Fixed UB when freeing strings received from JS if not using the default allocator. #3808
Fixed temporary folder detection by wasm-bindgen-test-runner on MacOS.
#3817
Fixed using #[wasm_bindgen(js_name = default)] with #[wasm_bindgen(module = ...)].
#3823
Fixed nightly build of wasm-bindgen-futures.
#3827
Fix JS shim default path detection for the no-modules target. #3748
Released 2024-01-06
Add bindings for HTMLFormElement.requestSubmit().
#3747
Add bindings for RTCRtpSender.getCapabilities(DOMString) method, RTCRtpCapabilities, RTCRtpCodecCapability and RTCRtpHeaderExtensionCapability.
#3737
Add bindings for UserActivation.
#3719
Add unstable bindings for the Compression Streams API. #3752
#[wasm_bindgen] inside macro_rules!.
#3725InstallTriggerData and Gecko-internal FlexLineGrowthState, GridDeclaration, GridTrackState,
RtcLifecycleEvent and WebrtcGlobalStatisticsReport features.
#3723Add additional constructor to DataView for SharedArrayBuffer. #3695
Released 2023-11-27.
Add additional constructor to DataView for SharedArrayBuffer.
#3695
Stabilize wasm_bindgen::module().
#3690
The DWARF section is now correctly modified instead of leaving it in a broken state. #3483
Fixed an issue where #[wasm_bindgen] automatically derived the TryFrom trait for any struct, preventing custom TryFrom<JsValue> implementations. It has been updated to utilize a new TryFromJsValue trait instead.
#3709
Update the TypeScript signature of __wbindgen_thread_destroy to indicate that it's parameters are optional.
#3703
Csp, CspPolicies, CspReport and CspReportProperties.
#3721It was also automatically changed for IdbFileHandle, which is deprecated. #3537
Released 2023-11-01
Add bindings for RTCRtpTransceiverInit.sendEncodings.
#3642
Add bindings for the Web Locks API to web-sys.
#3604
Add bindings for ViewTransition to web-sys.
#3598
Extend AudioContext with unstable features supporting audio sink configuration.
#3433
Add bindings for WebAssembly.Tag and WebAssembly.Exception.
#3484
Re-export wasm-bindgen from js-sys, web-sys and wasm-bindgen-futures.
#3466
#3601
Re-export js-sys from web-sys and wasm-bindgen-futures.
#3466
#3601
Add bindings for async variants of Atomics.wait.
#3504
Add bindings for WorkerGlobalScope.performance.
#3506
Add support for installing pre-built artifacts of wasm-bindgen-cli
via cargo binstall wasm-bindgen-cli.
#3544
Add bindings for RTCDataChannel.id.
#3547
Add bindings for HTMLElement.inert.
#3557
Add unstable bindings for the Prioritized Task Scheduling API. #3566
Add bindings for CssStyleSheet constructor and replace(_sync) methods.
#3573
Add bindings for CanvasTransform.setTransform(DOMMatrix2DInit).
#3580
Add a crate attribute to the wasm_bindgen_test proc-macro to specify a
non-default path to the wasm-bindgen-test crate.
#3593
Add support for passing Vecs of exported Rust types and strings to/from JS.
#3554
Implement TryFrom<JsValue> for exported Rust types and strings.
#3554
Handle the #[ignore = "reason"] attribute with the wasm_bindgen_test
proc-macro and accept the --include-ignored flag with wasm-bindgen-test-runner.
#3644
Added missing additions to the Notification API. #3667
Updated the WebGPU WebIDL.
The optional message argument of GPUPipelineError's constructor has been manually specified as a required argument,
because required arguments occurring after optional arguments are currently not supported by the generator.
#3480
Replaced curl with ureq. By default we now use Rustls instead of OpenSSL.
#3511
Changed mutability of the argument buffer in write functions to immutable for FileSystemSyncAccessHandle and FileSystemWritableFileStream.
It was also automatically changed for IdbFileHandle, which is deprecated.
#3537
Changed behavior when compiling to wasm32-wasi to match wasm32-emscripten and
non-Wasm targets, generating a stub that panics when called rather than a wasm-
bindgen placeholder.
#3233
Changed constructor implementation in generated JS bindings, it is now
possible to override methods from generated JS classes using inheritance.
When exported constructors return Self.
#3562
Made wasm-bindgen forwards-compatible with the standard C ABI.
#3595
Changed the design of the internal WasmAbi trait. Rather than marking a type
which can be passed directly as a parameter/result to/from JS, it now lets
types specify how they can be split into / recreated from multiple primitive
types which are then passed to/from JS.
WasmPrimitive now serves the old function of WasmAbi, minus allowing
#[repr(C)] types.
#3595
Use queueMicrotask in wasm-bindgen-futures for scheduling tasks on the next tick.
If that is not available, use the previous Promise.then mechanism as a fallback.
This should avoid quirks, like exceptions thrown get now properly reported
as normal exceptions rather than as rejected promises.
#3611
Improved TypeScript bindings to accurately reference Rust enum types in function signatures, enhancing type safety and compatibility. #3647
Throw an error on enum name collisions, previously only one enum would be emitted. #3669
Fixed wasm_bindgen macro to handle raw identifiers in field names.
#3621
Fixed bindings and comments for Atomics.wait.
#3509
Fixed wasm_bindgen_test macro to handle raw identifiers in test names.
#3541
Fixed Cargo license field to follow the SPDX 2.1 license expression standard. #3529
Use fully qualified paths in the wasm_bindgen_test macro.
#3549
Fixed bug allowing JS primitives to be returned from exported constructors. #3562
Fixed optional parameters in JSDoc. #3577
Use re-exported js-sys from wasm-bindgen-futures to account for
non-default path specified by the crate attribute in wasm_bindgen_futures
proc-macro.
#3601
Fix bug with function arguments coming from macro_rules!.
#3625
Fix some calls to free() missing alignment.
#3639
Fix wrong ABI for raw pointers. #3655
Removed ReadableStreamByobReader::read_with_u8_array() because it doesn't work with Wasm.
#3582
Removed GetNotificationOptions, NotificationBehavior and Notification.get() because
they don't exist anymore.
Deprecate HtmlMenuItemElement and parts of HtmlMenuElement. #3448
Released 2023-05-16. changes --------------------------------------------------------------------------------
Released 2023-05-09. changes --------------------------------------------------------------------------------
Released 2023-02-01. changes --------------------------------------------------------------------------------
Released 2022-09-12. changes --------------------------------------------------------------------------------
Released 2022-07-25. changes --------------------------------------------------------------------------------
Released 2022-06-14. changes --------------------------------------------------------------------------------
Released 2022-04-04. changes --------------------------------------------------------------------------------
Released 2022-01-19. changes --------------------------------------------------------------------------------
Released 2021-09-15. changes --------------------------------------------------------------------------------
Released 2021-09-08. changes --------------------------------------------------------------------------------
Released 2021-08-19. changes --------------------------------------------------------------------------------
Released 2021-08-02. changes --------------------------------------------------------------------------------
Released 2021-05-10. changes --------------------------------------------------------------------------------
Released 2021-03-29. changes --------------------------------------------------------------------------------
Released 2021-03-18. changes --------------------------------------------------------------------------------
Released 2021-02-26. changes --------------------------------------------------------------------------------
Released 2021-01-25. changes --------------------------------------------------------------------------------
Unstable bindings for WebBluetooth have been added. #2311
Released 2020-11-30.
Unstable bindings for WebBluetooth have been added. #2311
Unstable bindings for WebUSB have been added. #2345
Renaming a struct field with js_name is now supported.
#2360
The WebGPU WebIDL has been updated. #2353
The ImageCapture APIs of web-sys have been moved to unstable and were fixed. #2348
Bindings for waitAsync have been updated.
#2362
Add userVisibleOnly property to PushSubscriptionOptionsInit. #2288
Released 2020-09-08.
TypeScript files now import *.wasm instead of bare files.
#2283
Usage of externref now appropriately resizes the table by using 2x the
previous capacity, fixing a performance issue with lots of externref objects.
#2294
Compatibility with the latest Firefox WebDriver has been fixed. #2301
Non deterministic output with closures has been fixed. #2304
A --reference-types flag was added to the CLI. #2257
Reverse mappings from value to name are now available in JS bindings of enums. #2240
Released 2020-07-28.
Functions using a return pointer in threaded programs now correctly load and store return values in a way that doesn't interfere with other threads. #2249
Support for weak references has been updated and a --weak-refs flag is now
available in the CLI for enabling weak references.
#2248
Functions from JS can now be natively imported as async and will use promises under the hood. #2196
Nested namespaces for imports can now be specified. #2105
A new example about using WebRTC has been added. #2131
Released 2020-05-27.
A new example about using WebRTC has been added. #2131
Test functions names will no longer collide with test intrinsic names. #2123
Fixed warnings with #[must_use] types in generated code.
#2144
Fixed compatibility with latest Rust nightlies. #2159
Usage of require has been fixed with Webpack 5. #2115
Exported Rust enum types can now be renamed with js_name. #2071
Released 2020-04-29.
Exported Rust enum types can now be renamed with js_name.
#2071
More comments are copied to JS/TS files, and comments should no longer accidentally have escape sequences in them. #2070
Experimental bindings for the Clipboard browser APIs have been added. #2100
WebGPU bindings have been updated. #2080
setBindGroup methods for WebIDL now take immutable slices instead of mutable
slices.
#2087
JS code generation for catch functions has been improved.
#2098
Usage of NPM dependencies with the web target is no longer an error.
#2103
Combining js_name with getter and setter has now been fixed.
#2074
Importing global names which conflict with other namespaces should now work correctly. #2057
Acquiring the global JS object has been fixed for Firefox extension content scripts. #2099
The output of wasm-bindgen is now compatible with Webpack 5 and the updated
version of the Wasm ESM integration specification.
#2110
The js_sys types are now more accurately reflected in TypeScript. #2028
Released 2020-03-25.
The js_sys types are now more accurately reflected in TypeScript.
#2028
The timeout in wasm-bindgen-test-runner's timeout can now be configured via
WASM_BINDGEN_TEST_TIMEOUT.
#2036
WebIDL for WebXR has been added. #2000
The js_sys::Number type now has a number of JS-number associated constants on it now. #1965
Released 2020-03-03.
The js_sys::Number type now has a number of JS-number associated constants
on it now.
#1965
The getTransform method on CanvasRenderingContext2D has been added.
#1966
Initial experimental support was added for electron targets with a new
--omit-imports flag.
#1958
Optional struct fields are now reflected idiomatically in TypeScript. #1990
Typed arrays in js_sys now have get_index and set_index methods.
#2001
The web_sys::Blob type has been updated with arrayBuffer and text
methods.
#2008
Support for unstable browser interfaces has now been added. By compiling
web_sys with --cfg web_sys_unstable_apis (typically via RUSTFLAGS)
you'll be able to access all bound WebIDL functions, even those like GPU
support on the web, which has now also had its WebIDL updated.
#1997
The compile time for web_sys has been massively reduced by pre-generating
Rust code from WebIDL. It is also readable now since it generates
#[wasm_bindgen] annotations instead of expanded code.
#2012
A new typescript_type attribute can be used to specify the TypeScript type
for an extern type. #2012
It is now possible to use string values with #[wasm_bindgen] enums.
#2012
A new skip_tyepscript attribute is recognized to skip generating TypeScript
bindings for a function or type.
#2016
More uniformMatrix* bindings now are whitelisted take shared slice instead
of a mutable slice.
#1957
Non-dependency keys in package.json are now ignored instead of error'd
about.
#1969
WebGPU has been removed from web_sys since it was outdated and didn't work
anywhere anyway.
#1972
The JS heap of objects managed by wasm-bindgen has had its definition tightended up a bit. #1987
The self identifier is no longer used on the no-modules target, making it a
bit more flexible in more environments.
#1995
The wasm-loading logic is now more flexible and can take promises as well. #1996
JS glue for closures is now deduplicated. #2002
The web_sys crate now emits more accurate TypeScript definitions using named
types instead of any everywhere.
#1998
The send_with_u8_array methods in web_sys are whitelisted to take shared
slices instead of mutable slices.
#2015
When using the no-modules output type the initialization path for the wasm file is now optional if it can be inferred from the current JS script. #193
The js_sys::Promise type is now marked as #[must_use] #1927
Added a #[wasm_bindgen(inspectable)] attribute for exported objects to generate toJSON and toString implementations. #1876
Released 2019-12-20.
Added a #[wasm_bindgen(inspectable)] attribute for exported objects to
generate toJSON and toString implementations.
#1876
Support for the most recent interface types proposal has been implemented. #1882
Initial support for async iterators has been added. #1895
Support for an async start function was added.
#1905
Array::iter and Array::to_vec methods were added to js-sys.
#1909
Running wasm-bindgen over empty anyref modules now works again. #1861
A safe to_vec method has been added for typed arrays. #1844
Released 2019-11-07.
A safe to_vec method has been added for typed arrays.
#1844
A unsafe method view_mut_raw has been added to typed arrays.
#1850
The HTMLImageElement WebIDL has been updated with recent features.
#1842
Binary crates are now supported and fn main will be automatically executed
like the start function.
#1843
A bug with the experimental support for multi-value interface types has been fixed. #1839
Released 2019-10-29.
The support for wasm-interface-types now uses multi-value by default. #1805
Released 2019-10-24.
The support for wasm-interface-types now uses multi-value by default. #1805
The Worklet IDL has been updated. #1817
The HTMLInputElement type has selectionStart and selectionEnd properties now. #1811
An unintern function has been added to remove an interned string from the
cache.
#1828
undefined
#1789TextDecoder and Safari has been fxied
#1789The wasm-bindgen-futures and wasm-bindgen-test crates now require Nightly Rust and have a new major version published as a result. These crates now su
Released 2019-09-26.
The wasm-bindgen-futures and wasm-bindgen-test crates now require Nightly
Rust and have a new major version published as a result. These crates now
support async/await by default, and they will be supported in the stable
Rust 1.39.0 release. The previous versions of crates will continue to work on
stable today.
#1741
Using #[wasm_bindgen] on an async function will now work and return a
Promise on the JS side of things.
#1754
More helper methods for js_sys::Array have been added.
#1749
Initial support for the WebAssembly multi-value proposal has been added. #1764
Constructors for js_sys::Date with optional parameters has been added.
#1759
Headless tests can now be run against a remote webdriver client #1744
passStringToWasm function has been optimized for size.
#1736BOM markers will not be preserved when passing strings to/from wasm. #1730
Importing a static value which isn't a JsValue has been fixed.
#1784
Converting undefined to a Rust value via into_serde has been fixed.
#1783
Routine errors are no longer erroneously logged in debug mode. #1788
Your coding agent can read these notes before it upgrades. Set up the MCP server →