wasm-bindgen-backend
Backend code generation of the wasm-bindgen tool
0.2.104
301M downloads/mo
#364 most downloaded on crates.io
wasm-bindgen/wasm-bindgen
What this package is like to depend on
Last release 11 months ago
24 Sep 2025
Release timing varies
gaps range from 2 weeks to 8 months
Nearly every release is documented
notes for 95 of 105 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
105 releases · first in 2018
4 releases in the last 12 months
see the full history below
Release timeline
105 releases · Apr 2018 to Sep 2025Releases
latest 60 of 105-
0.2.10424 Sep 2025Release notes
Open source →Added
-
Added bindings for
WeakRef. #4659 -
Support
Symbol.disposemethods by default, when it is supported in the environment. #4666 -
Added
aarch64-unknown-linux-muslrelease artifacts. #4668
Changed
-
Unconditionally use the global
TextEncoder/TextDecoderfor string encoding/decoding. The Node.js output now requires a minimum of Node.js v11. #4670 -
Deprecate the
msrvcrate feature. MSRV detection is now always on. #4675
Fixed
-
Fixed wasm-bindgen-cli's
encode_intoargument not working. #4663 -
Fixed a bug in
--experimental-reset-state-functionsupport for heap reset. #4665 -
Fixed compilation failures on Rust v1.82 and v1.83. #4675
-
-
0.2.10317 Sep 2025 -
0.2.10216 Sep 2025Release notes
Open source →Added
-
Added
DocumentOrShadowRoot.adoptedStyleSheets. #4625 -
Added support for arguments with spaces using shell-style quoting in webdriver
*_ARGSenvironment variables towasm-bindgen-test. #4433 -
Added ability to determine WebDriver JSON config location via
WASM_BINDGEN_TEST_WEBDRIVER_JSONenvironment variable towasm-bindgen-test. #4434 -
Generate DWARF for tests by default. See the guide on debug information for more details. #4635
-
New
--target=moduletarget for outputting source phase imports. #4638
Changed
- Hidden deprecated options from the
wasm-bindgen --helpdocs. #4646
Fixed
-
Fixed wrong method names for
GestureEventbindings. #4615 -
Fix crash caused by allocations during
TypedArrayinteractions. #4622
-
-
0.2.10104 Sep 2025Release notes
Open source →Added
-
Added format and colorSpace support to VideoFrameCopyToOptions #4543
-
Added support for the
onbeforeinputattribute. #4544 -
TypedArray::new_from_slice(&[T])constructor that allows to create a JS-ownedTypedArrayfrom a Rust slice. #4555 -
Added
Function::call4andFunction::bind4throughFunction::call9Function::bind9methods for calling and binding JavaScript functions with 4-9 arguments. #4572 -
Added isPointInFill and isPointInStroke methods for the SVGGeometryElement idl. #4509
-
Added unstable bindings for
GestureEvent. #4589 -
Stricter checks for
module,raw_moduleandinline_jsattributes applied to inapplicable items. #4522 -
Add bindings for
PictureInPicture. #4593 -
Added
bytesmethod for theBlobidl #4506 -
Add error message when export symbol is not found #4594
Changed
-
Deprecate async constructors. #4402
-
The
sizeargument toGPUCommandEncoder.copyBufferToBufferis now optional. #4508 -
MSRV of CLI tools bumped to v1.82. This does not affect libraries like
wasm-bindgen,js-sysandweb-sys! #4608
Fixed
-
Detect more failure scenarios when retrieving the Wasm module. #4556
-
Add a workaround for
TextDecoderfailing in older version of Safari when too many bytes are decoded through it over its lifetime. #4472 -
TypedArray::from(&[T])now works reliably across memory reallocations. #4555 -
Fix incorrect memory loading and storing assertions during post-processing. #4554
-
Fix test
--exactoption not working as expected. #4549 -
Fix tables being removed even though they are used by stack closures. #4119
-
Skip
__wasm_call_ctorswhich we don't want to interpret. #4562 -
Fix infinite recursion caused by the lack of proc-macro hygiene. #4601
-
Fix running coverage with no_modules. #4604
-
Fix proc-macro hygiene with
core. #4606
Removed
-
Crates intended purely for internal consumption by the wasm-bindgen CLI will no longer be published: #4608
wasm-bindgen-externref-xformwasm-bindgen-multi-value-xformwasm-bindgen-threads-xformwasm-bindgen-wasm-conventionswasm-bindgen-wasm-interpreter
-
-
0.2.10012 Jan 2025Release notes
Open source →Released 2025-01-12
Added
-
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 allTypedArrays. 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,--exactand--nocapturetowasm-bindgen-test-runner, analogous tocargo test. #4356 -
Add bindings to
Date.to_locale_time_string_with_options. #4384 -
#[wasm_bindgen]now correctly applies#[cfg(...)]s instructs. #4351
Changed
-
Optional parameters are now typed as
T | undefined | nullto reflect the actual JS behavior. #4188 -
Adding
getter,setter, andconstructormethods 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>_REMOTEcan't be parsed instead of just ignoring it. #4362 -
Remove
WASM_BINDGEN_THREADS_MAX_MEMORYandWASM_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 thedefaultfunction. #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 tocargo test. #4356
Fixed
-
Fixed using JavaScript keyword as identifiers not being handled correctly. #4329
- Using JS keywords as
structandenumnames will now error at compile time, instead of causing invalid JS code gen. - Using JS keywords that are not valid to call or access properties on will now error at compile time, instead of causing invalid JS code gen if used as:
- The first part of a
js_namespaceon imports. - The name of an imported type or constant if the type or constant does not have a
js_namespaceormoduleattribute. - The name of an imported function if the function is not a method and does not have a
js_namespaceormoduleattribute.
- The first part of a
- Using JS keywords on imports in places other than the above will no longer cause the keywords to be escaped as
_{keyword}.
- Using JS keywords as
-
Fixed passing large arrays into Rust failing because of internal memory allocations invalidating the memory buffer. #4353
-
Pass along an
ignoreattribute tounsupportedtests. #4360 -
Use OS provided temporary directory for tests instead of Cargo's
targetdirectory. #4361 -
Error if URL in
<WEBDRIVER>_REMOTEcan't be parsed. #4362 -
Internal functions are now removed instead of invalidly imported if they are unused. #4366
-
Fixed
no_stdsupport for all APIs inweb-sys. #4378 -
Prevent generating duplicate exports for closure conversions. #4380
-
-
0.2.9907 Dec 2024Release notes
Open source →Released 2024-12-07
Fixed
- Mark
wasm-bindgenv0.2.98 only compatible withwasm-bindgen-cliof the same version. #4331
- Mark
-
0.2.9807 Dec 2024Release notes
Open source →Released 2024-12-07
Added
-
Add support for compiling with
atomicsfor Node.js. #4318 -
Add
WASM_BINDGEN_TEST_DRIVER_TIMEOUTenvironment variable to control the timeout to start and connect to the test driver. #4320 -
Add support for number slices of type
MaybeUninit<T>. #4316
Changed
-
Remove
once_cell/critical-sectionrequirement forno_stdwith atomics. #4322 -
static FOO: Option<T>now returnsNoneif undeclared in JS instead of throwing an error in JS. #4319
Fixed
-
Fix macro-hygiene for calls to
std::thread_local!. #4315 -
Fix feature resolver version 1 compatibility. #4327
-
-
0.2.9730 Nov 2024Release notes
Open source →Released 2024-11-30
Fixed
- Fixed
js-sysandwasm-bindgen-futuresrelying on internal paths ofwasm-bindgenthat are not crate feature additive. #4305
- Fixed
-
0.2.9629 Nov 2024Release notes
Open source →Released 2024-11-29
Added
-
Added support for the
HTMLOrSVGElementmixin, which is used for all interfaces deriving fromElement. #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
u128andi128#4222 -
Added support for the
wasm32v1-nonetarget. #4277 -
Added support for
no_stdtojs-sys,web-sys,wasm-bindgen-futuresandwasm-bindgen-test. #4277 -
Added support for
no_stdtolink_to!,static_string(viathread_local_v2) andthrow. #4277 -
Added environment variables to configure tests:
WASM_BINDGEN_USE_BROWSER,WASM_BINDGEN_USE_DEDICATED_WORKER,WASM_BINDGEN_USE_SHARED_WORKERWASM_BINDGEN_USE_SERVICE_WORKER,WASM_BINDGEN_USE_DENOandWASM_BINDGEN_USE_NODE_EXPERIMENTAL. The use ofwasm_bindgen_test_configure!will overwrite any environment variable. #4295
Changed
-
String enums now generate private TypeScript types but only if used. #4174
-
Remove unnecessary JSDoc type annotations from generated
.d.tsfiles #4187 -
Deprecate
autofocus,tabIndex,focus()andblur()bindings in favor of bindings on the inheritedElementclass. #4143 -
Optimized ABI performance for
Option<{i32,u32,isize,usize,f32,*const T,*mut T}>. #4183 -
Deprecate
--reference-typesin favor of automatic target feature detection. #4237 -
wasm-bindgen-test-runnernow 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 awasm_bindgen::JsThreadLocal. It is similar tostd::thread::LocalKeybut supportsno_std. #4277 -
Updated the WebGPU API to the current draft as of 2024-11-22. #4290
-
Improved error messages for
selfarguments in invalid positions. #4276
Fixed
-
Fixed methods with
self: &Selfconsuming 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
nullerror when usingJsValue::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.fillinstructions if the bulk-memory proposal is enabled. #4237 -
Fixed calls to
JsCast::instanceof()not respecting JavaScript namespaces. #4241 -
Fixed imports for functions using
thisand late binding. #4225 -
Don't expose non-functioning implicit constructors to classes when none are provided. #4282
-
-
0.2.9510 Oct 2024Release notes
Open source →Released 2024-10-10
Added
-
Added support for implicit discriminants in enums. #4152
-
Added support for
Selfin complex type expressions in methods. #4155
Changed
- String enums are no longer generate TypeScript types. #4174
Fixed
-
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
-
-
0.2.9409 Oct 2024Release notes
Open source →Released 2024-10-09
Added
-
Added support for the WebAssembly
Tail Callproposal. #4111 -
Add bindings for
RTCPeerConnection.setConfiguration(RTCConfiguration)method. #4105 -
Add bindings to
RTCRtpTransceiverDirection.stopped. #4102 -
Added experimental support for
Symbol.disposeviaWASM_BINDGEN_EXPERIMENTAL_SYMBOL_DISPOSE. #4118 -
Added bindings for the draft WebRTC Encoded Transform spec. #4125
-
Added
Debugimplementation toJsError. #4136 -
Added support for
js_nameandskip_typescriptattributes for string enums. #4147 -
Added
unsupportedcrate towasm_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
Changed
-
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_idandGamepadHapticActuator::type_. #4134 -
Removed
GamepadAxisMoveEvent,GamepadAxisMoveEventInit,GamepadButtonEvent,GamepadButtonEventInitandGamepadServiceTest, which were seemingly never implemented by any JS environment. #4134 -
Changed
TextDecoder.decode()inputparameter 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
JsValuein favor of newer bindings with specific parameter types. #4156
Fixed
-
Fixed linked modules emitting snippet files when not using
--split-linked-modules. #4066 -
Fixed incorrect deprecation warning when passing no parameter into
default()(init()) orinitSync(). #4074 -
Fixed many proc-macro generated
implblocks missing#[automatically_derived], affecting test coverage. #4078 -
Fixed negative
BigIntvalues being incorrectly formatted with two minus signs. #4082 #4088 -
Fixed emitted
package.jsonstructure to correctly specify its dependencies #4091 -
Fixed returning
Option<Enum>now correctly has the| undefinedtype 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-moduletarget 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 aResultwhen they might not support a backingSharedArrayBuffer. This only applies to new and unstable APIs, which won't cause a breaking in the API. #4156
-
-
0.2.9312 Aug 2024Release notes
Open source →Released 2024-08-13
Added
-
Allow exporting functions named
default. Throw error in wasm-bindgen-cli if --target web and an exported symbol is nameddefault. #3930 -
Added support for arbitrary expressions when using
#[wasm_bindgen(typescript_custom_section)]. #3901 -
Implement
From<NonNull<T>>forJsValue. #3877 -
Add method
copy_withinfor TypedArray, add methodsfind_last,find_last_indexfor Array. #3888 -
Added support for returning
Vecs from async functions. #3630 -
Added bindings for
InputDeviceInfoandMediaTrackCapabilities. #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,valuesmethods for regular and asynchronous, as well asfor_eachfor regular, iterables. #3962 -
Add bindings for
HTMLTableCellElement.abbrandscopeproperties. #3972 -
Add WebIDL definitions relating to
Popover API. #3977 -
Added the
thread_stack_sizeproperty to the object parameter ofdefault()(init()) andinitSync(), 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.requiredLimitsandHeader(). #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
nodetarget uses CommonJS, with--target experimental-nodejs-moduleor when testing withwasm_bindgen_test_configure!(run_in_node_experimental). #4027 -
Added importing strings as
JsStringthrough#[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
Changed
-
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.fillwhen 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.onendedandAudioBufferSourceNode.stop(). #4020 -
Increase default stack size for spawned threads from 1 to 2 MB. #3995
-
Deprecated parameters to
default(init) andinitSyncin favor of an object. #3995 -
Update
AbortSignalandAbortControlleraccording to the WHATWG specification. #4026 -
Update the Indexed DB API. #4027
-
UnwrapThrowExt for Resultnow makes use of the requiredDebugbound 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-sysandweb-sys! #4037 -
Filtered files in published crates, significantly reducing the package size and notably excluding any bash files. #4046
-
Deprecated
JsStaticin favor of#[wasm_bindgen(thread_local)], which creates astd::thread::LocalKey. The syntax is otherwise the same. #4057 -
Removed
impl Deref for JsStaticwhen compiling withcfg(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
Fixed
-
Copy port from headless test server when using
WASM_BINDGEN_TEST_ADDRESS. #3873 -
Fix
catchnot being thread-safe. #3879 -
Fix MSRV compilation. #3927
-
Fix
clippy::empty_docslint. #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_forgetlint 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_stdsupport and therefor compiling withdefault-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 onUnwrapThrowExtmethods when not targetingwasm32-unknown-unknown. #4042 -
Fixed linked modules emitting snippet files when not using
--split-linked-modules. #4066
-
-
0.2.9204 Mar 2024Release notes
Open source →Released 2024-03-04
Added
-
Add bindings for
RTCPeerConnectionIceErrorEvent. #3835 -
Add bindings for
CanvasState.reset(), affectingCanvasRenderingContext2DandOffscreenCanvasRenderingContext2D. #3844 -
Add
TryFromimplementations forNumber, that allow losslessly converting from 64- and 128-bits numbers. #3847 -
Add support for
Option<*const T>,Option<*mut T>andNonNull<T>. #3852 #3857 -
Allow overriding the URL used for headless tests by setting
WASM_BINDGEN_TEST_ADDRESS. #3861
Fixed
-
Make .wasm output deterministic when using
--reference-types. #3851 -
Don't allow invalid Unicode scalar values in
char. #3866
-
-
0.2.9106 Feb 2024Release notes
Open source →Released 2024-02-06
Added
-
Added bindings for the
RTCRtpTransceiver.setCodecPreferences()and unstable bindings for theRTCRtpEncodingParameters.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_workerandrun_in_service_worker. #3804 -
Accept the
--skipflag withwasm-bindgen-test-runner. #3803 -
Introduce environment variable
WASM_BINDGEN_TEST_NO_ORIGIN_ISOLATIONto disable origin isolation forwasm-bindgen-test-runner. #3807 -
Add bindings for
USBDevice.forget(). #3821
Changed
-
Stabilize
ClipboardEvent. #3791 -
Use immutable buffers in
SubtleCryptomethods. #3797 -
Deprecate
wasm_bindgen_test_configure!srun_in_workerin favor ofrun_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 thebufferargument of theGPUQueue.{writeBuffer,writeTexture}methods. #3816 -
Deprecate
--weak-refsandWASM_BINDGEN_WEAKREFin favor of automatic run-time detection. #3822
Fixed
-
Fixed UB when freeing strings received from JS if not using the default allocator. #3808
-
Fixed temporary folder detection by
wasm-bindgen-test-runneron MacOS. #3817 -
Fixed using
#[wasm_bindgen(js_name = default)]with#[wasm_bindgen(module = ...)]. #3823 -
Fixed nightly build of
wasm-bindgen-futures. #3827
-
-
0.2.9012 Jan 2024Release notes
Open source →Released 2024-01-06
Fixed
- Fix JS shim default path detection for the no-modules target. #3748
Added
-
Add bindings for
HTMLFormElement.requestSubmit(). #3747 -
Add bindings for
RTCRtpSender.getCapabilities(DOMString)method,RTCRtpCapabilities,RTCRtpCodecCapabilityandRTCRtpHeaderExtensionCapability. #3737 -
Add bindings for
UserActivation. #3719 -
Add unstable bindings for the Compression Streams API. #3752
Changed
Fixed
- Fixed a compiler error when using
#[wasm_bindgen]insidemacro_rules!. #3725
Removed
- Removed Gecko-only
InstallTriggerDataand Gecko-internalFlexLineGrowthState,GridDeclaration,GridTrackState,RtcLifecycleEventandWebrtcGlobalStatisticsReportfeatures. #3723
-
0.2.8927 Nov 2023Release notes
Open source →Released 2023-11-27.
Added
-
Add additional constructor to
DataViewforSharedArrayBuffer. #3695 -
Stabilize
wasm_bindgen::module(). #3690
Fixed
-
The DWARF section is now correctly modified instead of leaving it in a broken state. #3483
-
Fixed an issue where
#[wasm_bindgen]automatically derived theTryFromtrait for any struct, preventing customTryFrom<JsValue>implementations. It has been updated to utilize a newTryFromJsValuetrait instead. #3709 -
Update the TypeScript signature of
__wbindgen_thread_destroyto indicate that it's parameters are optional. #3703
Removed
- Removed Gecko-internal dictionary bindings
Csp,CspPolicies,CspReportandCspReportProperties. #3721
-
-
0.2.8801 Nov 2023Release notes
Open source →Released 2023-11-01
Added
-
Add bindings for
RTCRtpTransceiverInit.sendEncodings. #3642 -
Add bindings for the Web Locks API to
web-sys. #3604 -
Add bindings for
ViewTransitiontoweb-sys. #3598 -
Extend
AudioContextwith unstable features supporting audio sink configuration. #3433 -
Add bindings for
WebAssembly.TagandWebAssembly.Exception. #3484 -
Re-export
wasm-bindgenfromjs-sys,web-sysandwasm-bindgen-futures. #3466 #3601 -
Re-export
js-sysfromweb-sysandwasm-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-cliviacargo 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
CssStyleSheetconstructor andreplace(_sync)methods. #3573 -
Add bindings for
CanvasTransform.setTransform(DOMMatrix2DInit). #3580 -
Add a
crateattribute to thewasm_bindgen_testproc-macro to specify a non-default path to thewasm-bindgen-testcrate. #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 thewasm_bindgen_testproc-macro and accept the--include-ignoredflag withwasm-bindgen-test-runner. #3644 -
Added missing additions to the Notification API. #3667
Changed
-
Updated the WebGPU WebIDL. The optional
messageargument ofGPUPipelineError'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
curlwithureq. By default we now use Rustls instead of OpenSSL. #3511 -
Changed mutability of the argument
bufferinwritefunctions to immutable forFileSystemSyncAccessHandleandFileSystemWritableFileStream. It was also automatically changed forIdbFileHandle, which is deprecated. #3537 -
Changed behavior when compiling to
wasm32-wasito matchwasm32-emscriptenand 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-bindgenforwards-compatible with the standard C ABI. #3595 -
Changed the design of the internal
WasmAbitrait. 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.WasmPrimitivenow serves the old function ofWasmAbi, minus allowing#[repr(C)]types. #3595 -
Use
queueMicrotaskinwasm-bindgen-futuresfor scheduling tasks on the next tick. If that is not available, use the previousPromise.thenmechanism 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
-
Fixed
wasm_bindgenmacro to handle raw identifiers in field names. #3621 -
Fixed bindings and comments for
Atomics.wait. #3509 -
Fixed
wasm_bindgen_testmacro 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_testmacro. #3549 -
Fixed bug allowing JS primitives to be returned from exported constructors. #3562
-
Fixed optional parameters in JSDoc. #3577
-
Use re-exported
js-sysfromwasm-bindgen-futuresto account for non-default path specified by thecrateattribute inwasm_bindgen_futuresproc-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
-
Removed
ReadableStreamByobReader::read_with_u8_array()because it doesn't work with Wasm. #3582 -
Removed
GetNotificationOptions,NotificationBehaviorandNotification.get()because they don't exist anymore.
-
-
0.2.8712 Jun 2023Release notes
Open source →Released 2023-06-12.
Added
- Implemented
IntoIteratorforArray. #3477
Changed
Fixed
- Take alignment into consideration during (de/re)allocation. #3463
- Implemented
-
0.2.8615 May 2023 -
0.2.8509 May 2023 -
0.2.8401 Feb 2023 -
0.2.8312 Sep 2022 -
0.2.8225 Jul 2022 -
0.2.8114 Jun 2022 -
0.2.8007 Apr 2022 -
0.2.7919 Jan 2022 -
0.2.7815 Sep 2021 -
0.2.7708 Sep 2021 -
0.2.7619 Aug 2021 -
0.2.7502 Aug 2021 -
0.2.7410 May 2021 -
0.2.7329 Mar 2021 -
0.2.7218 Mar 2021 -
0.2.7126 Feb 2021 -
0.2.7025 Jan 2021 -
0.2.6930 Nov 2020Release notes
Open source →Released 2020-11-30.
Added
-
Unstable bindings for WebBluetooth have been added. #2311
-
Unstable bindings for WebUSB have been added. #2345
-
Renaming a struct field with
js_nameis now supported. #2360 -
The WebGPU WebIDL has been updated. #2353
Fixed
-
The ImageCapture APIs of web-sys have been moved to unstable and were fixed. #2348
-
Bindings for
waitAsynchave been updated. #2362
-
-
0.2.6809 Sep 2020Release notes
Open source →Released 2020-09-08.
Added
- Add userVisibleOnly property to PushSubscriptionOptionsInit. #2288
Fixed
-
TypeScript files now import
*.wasminstead of bare files. #2283 -
Usage of
externrefnow 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
Updated
- The WebGPU WebIDL was updated. #2267
-
0.2.6728 Jul 2020Release notes
Open source →Released 2020-07-28.
Added
- A
--reference-typesflag was added to the CLI. #2257
Fixed
- Breakage with
Closure::forgetin 0.2.66 was fixed. #2258
- A
-
0.2.6628 Jul 2020Release notes
Open source →Released 2020-07-28.
Added
- Reverse mappings from value to name are now available in JS bindings of enums. #2240
Fixed
-
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-refsflag is now available in the CLI for enabling weak references. #2248
-
0.2.6515 Jul 2020Release notes
Open source →Released 2020-07-15.
Added
- Functions from JS can now be natively imported as
asyncand will use promises under the hood. #2196
Changed
- Encoding for the reference types proposal has been updated to the latest version of the spec. #2234
- Functions from JS can now be natively imported as
-
0.2.6429 Jun 2020Release notes
Open source →Released 2020-06-29.
Added
Fixed
-
Getters/setters that consume the original object have been fixed to invalidate the object correctly. #2172
-
Compatibility with nightly threading in LLVM has been fixed. #2183
-
Trailing space in generated doc comments is now removed. #2210
-
-
0.2.6328 May 2020Release notes
Open source →Released 2020-05-27.
Added
-
A new example about using WebRTC has been added. #2131
Changed
- The encoding and implementation of WebAssembly reference types has been sync'd with the latest upstream specification. #2125
Fixed
-
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
-
-
0.2.6201 May 2020Release notes
Open source → -
0.2.6129 Apr 2020Release notes
Open source →Released 2020-04-29.
Added
-
Exported Rust
enumtypes can now be renamed withjs_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
Changed
-
WebGPU bindings have been updated. #2080
-
setBindGroupmethods for WebIDL now take immutable slices instead of mutable slices. #2087 -
JS code generation for
catchfunctions has been improved. #2098 -
Usage of NPM dependencies with the
webtarget is no longer an error. #2103
Fixed
-
Combining
js_namewithgetterandsetterhas 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-bindgenis now compatible with Webpack 5 and the updated version of the Wasm ESM integration specification. #2110
-
-
0.2.6026 Mar 2020Release notes
Open source →Released 2020-03-25.
Added
-
The
js_systypes are now more accurately reflected in TypeScript. #2028 -
The timeout in
wasm-bindgen-test-runner's timeout can now be configured viaWASM_BINDGEN_TEST_TIMEOUT. #2036 -
WebIDL for WebXR has been added. #2000
Changed
- The WebIDL for WebGPU has been updated. #2037
-
-
0.2.5903 Mar 2020Release notes
Open source →Released 2020-03-03.
Added
-
The
js_sys::Numbertype now has a number of JS-number associated constants on it now. #1965 -
The
getTransformmethod onCanvasRenderingContext2Dhas been added. #1966 -
Initial experimental support was added for electron targets with a new
--omit-importsflag. #1958 -
Optional struct fields are now reflected idiomatically in TypeScript. #1990
-
Typed arrays in
js_sysnow haveget_indexandset_indexmethods. #2001 -
The
web_sys::Blobtype has been updated witharrayBufferandtextmethods. #2008 -
Support for unstable browser interfaces has now been added. By compiling
web_syswith--cfg web_sys_unstable_apis(typically viaRUSTFLAGS) 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_syshas 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_typeattribute can be used to specify the TypeScript type for anexterntype. #2012 -
It is now possible to use string values with
#[wasm_bindgen]enums. #2012 -
A new
skip_tyepscriptattribute is recognized to skip generating TypeScript bindings for a function or type. #2016
Changed
-
More
uniformMatrix*bindings now are whitelisted take shared slice instead of a mutable slice. #1957 -
Non-
dependencykeys inpackage.jsonare now ignored instead of error'd about. #1969 -
WebGPU has been removed from
web_syssince 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
selfidentifier is no longer used on theno-modulestarget, 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_syscrate now emits more accurate TypeScript definitions using named types instead ofanyeverywhere. #1998 -
The
send_with_u8_arraymethods inweb_sysare whitelisted to take shared slices instead of mutable slices. #2015
-
-
0.2.5807 Jan 2020Release notes
Open source →Released 2020-01-07.
Added
- When using the
no-modulesoutput type the initialization path for the wasm file is now optional if it can be inferred from the current JS script. #1938
Fixed
- TypeScript for struct methods that have floats has been fixed. #1945
- When using the
-
0.2.5706 Jan 2020Release notes
Open source →Released 2020-01-06.
Fixed
-
The
js_sys::Promisetype is now marked as#[must_use]#1927 -
Duplicate imports of the same name are now handled correctly again. #1942
-
-
0.2.5620 Dec 2019Release notes
Open source →Released 2019-12-20.
Added
-
Added a
#[wasm_bindgen(inspectable)]attribute for exported objects to generatetoJSONandtoStringimplementations. #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
asyncstart function was added. #1905 -
Array::iterandArray::to_vecmethods were added to js-sys. #1909
Fixed
- Another webkit-specific WebIDL construct was fixed in web-sys. #1865
-
-
0.2.5519 Nov 2019Release notes
Open source →Released 2019-11-19.
Fixed
-
Running
wasm-bindgenover empty anyref modules now works again. #1861 -
Support for multi-value JS engines has been fixed as a Wasm interface types polyfill. #1863
-
-
0.2.5407 Nov 2019Release notes
Open source →Released 2019-11-07.
Added
-
A safe
to_vecmethod has been added for typed arrays. #1844 -
A unsafe method
view_mut_rawhas been added to typed arrays. #1850 -
The
HTMLImageElementWebIDL has been updated with recent features. #1842 -
Binary crates are now supported and
fn mainwill be automatically executed like thestartfunction. #1843
Changed
- Some JS glue generation has been tweaked to avoid TypeScript warnings. #1852
-
-
0.2.5329 Oct 2019Release notes
Open source →Released 2019-10-29.
Fixed
- A bug with the experimental support for multi-value interface types has been fixed. #1839
-
0.2.5224 Oct 2019Release notes
Open source →Released 2019-10-24.
Added
-
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
uninternfunction has been added to remove an interned string from the cache. #1828
Changed
- Some WebIDL indexing getters have been corrected to reflect that they can
throw and/or return
undefined#1789
Fixed
- A bug with
TextDecoderand Safari has been fxied #1789
-
-
0.2.5126 Sep 2019Release notes
Open source →Released 2019-09-26.
Added
-
The
wasm-bindgen-futuresandwasm-bindgen-testcrates now require Nightly Rust and have a new major version published as a result. These crates now supportasync/awaitby 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 anasyncfunction will now work and return aPromiseon the JS side of things. #1754 -
More helper methods for
js_sys::Arrayhave been added. #1749 -
Initial support for the WebAssembly multi-value proposal has been added. #1764
-
Constructors for
js_sys::Datewith optional parameters has been added. #1759 -
Headless tests can now be run against a remote webdriver client #1744
Changed
- The
passStringToWasmfunction has been optimized for size. #1736
Fixed
-
BOM markers will not be preserved when passing strings to/from wasm. #1730
-
Importing a
staticvalue which isn't aJsValuehas been fixed. #1784 -
Converting
undefinedto a Rust value viainto_serdehas been fixed. #1783 -
Routine errors are no longer erroneously logged in debug mode. #1788
-
-
0.2.5019 Aug 2019Release notes
Open source →Released 2019-08-19.
Added
- Experimental support with a
WASM_INTERFACE_TYPES=1environment variable has been added to emit a Wasm Interface Types custom section, making the output ofwasm-bindgena single standalone WebAssembly file. #1725
Fixed
- Unrelated errors are now no longer accidentally swallowed by the
instantiateStreamingfallback. #1723
- Experimental support with a
-
0.2.4914 Aug 2019Release notes
Open source →Released 2019-08-14.
Added
-
Add binding for
Element.getElementsByClassName. #1665 -
PartialEqandEqare now implemented for allweb-systypes. #1673 -
The
wasm-bindgen-futurescrate now has support for futures when the experimental WebAssembly threading feature is enabled. #1514 -
A new
enable-interningfeature is available to intern strings and reduce the cost of transferring strings across the JS/Rust boundary. #1612 -
The
wasm-bindgenCLI has experimental support for reading nativewebidl-bindingscustom sections and generating JS glue. This support is in addition to Rust's own custom sections and allows usingwasm-bindgenwith binaries produced by other than rustc possibly. #1690 -
New environment variables have been added to configure webdriver startup arguments. #1703
-
New
JsValue::{is_truthy,is_falsy}methods are now available. #1638
Changed
-
JS import shims are now skipped again when they are unnecessary. #1654
-
WebAssembly output files now directly embed the module/name for imports if supported for the target and the import, reducing JS shims even further. #1689
Fixed
-
Support for threads have been updated for LLVM 9 and nightly Rust. #1675 #1688
-
The
anyrefpasses inwasm-bindgenhave seen a number of fixes to improve their correctness and get the full test suite running. #1692 #1704 -
Support for
futures-preview 0.3.0-alpha.18has been added towasm-bindgen-futures. #1716
-
-
0.2.4811 Jul 2019Release notes
Open source →Released 2019-07-11.
Added
-
All typed arrays now implement
Fromfor the corresponding Rust slice type, providing a safe way to create an instance which copies the data. #1620 -
Function::bind{2,3,4}are now available injs-sys. #1633
Changed
-
More WebGL methods have been updated to use shared slices instead of mutable slices. #1639
-
When using the
bundlertarget the import of the Wasm file now uses the.wasmextension to ensure a Wasm file is loaded. #1646 -
The old internal
Stacktrait has been removed since it is no longer used. #1624
Fixed
-
The
js_sys::global()accessor now attempts other strategies before falling back to aFunctionconstructor which can violate some strict CSP settings. #1650 -
Dropping a
JsFutureno longer logs a benign error to the console. #1649 -
Fixed an assertion which could happen in some modules when generating bindings. #1617
-
-
0.2.4719 Jun 2019Release notes
Open source →Released 2019-06-19.
Changed
-
The
HtmlHyperlinkElementshould now include more native methods after a small edit to the WebIDL. #1604 -
Duplicate names for getters/setters now have a first-class
wasm-bindgenerror. #1605
Fixed
-
TypeScript definition of
initwith--target webnow reflects that the first argument is optional. #1599 -
A panic with the futures 0.3 support has been fixed. #1598
-
More slice types are recognized as becoming immutable in some WebIDL methods. #1602
-
The function table is now no longer too aggressively removed. #1606
-
-
0.2.4614 Jun 2019Release notes
Open source →Released 2019-06-14.
Added
-
Bindings for
Array#flatandArray#flatMaphave been added. #1573 -
All
#[wasm_bindgen]types nowAsRefto themselves. #1583 -
When using
--target webthe path passed toinitis no longer required. #1579
Fixed
-
Some diagnostics related to compiler errors in
#[wasm_bindgen]have been improved. #1550 -
The support for weak references has been updated to the current JS proposal. #1557
-
Documentation and feature gating for web-sys dictionaries has improved. #1572
-
Getter and setter TypeScript has been fixed. #1577
-
The
env_loggercrate and its tree of dependencies is no longer required to buildweb-sys. #1586
-
-
0.2.4520 May 2019Release notes
Open source →Released 2019-05-20.
Fixed
- Using
__wbindgen_cb_forgeton--target webhas been fixed. #1544
Changed
- More whitelists have been added for
web-systo use shared slices instead of mutable slices. #1539
- Using