PackageTrack
Sign in Get early access

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 2025
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 105
  1. 0.2.104 24 Sep 2025
    Release notes

    Added

    • Added bindings for WeakRef. #4659

    • Support Symbol.dispose methods by default, when it is supported in the environment. #4666

    • Added aarch64-unknown-linux-musl release artifacts. #4668

    Changed

    • Unconditionally use the global TextEncoder/TextDecoder for string encoding/decoding. The Node.js output now requires a minimum of Node.js v11. #4670

    • Deprecate the msrv crate feature. MSRV detection is now always on. #4675

    Fixed

    • Fixed wasm-bindgen-cli's encode_into argument not working. #4663

    • Fixed a bug in --experimental-reset-state-function support for heap reset. #4665

    • Fixed compilation failures on Rust v1.82 and v1.83. #4675


    Open source →
  2. 0.2.103 17 Sep 2025
    Release notes

    Fixed

    • Fixed incorrect function mapping during post-processing. #4656

    Open source →
  3. 0.2.102 16 Sep 2025
    Release notes

    Added

    • Added DocumentOrShadowRoot.adoptedStyleSheets. #4625

    • Added support for arguments with spaces using shell-style quoting in webdriver *_ARGS environment variables to wasm-bindgen-test. #4433

    • Added ability to determine WebDriver JSON config location via WASM_BINDGEN_TEST_WEBDRIVER_JSON environment variable to wasm-bindgen-test. #4434

    • Generate DWARF for tests by default. See the guide on debug information for more details. #4635

    • New --target=module target for outputting source phase imports. #4638

    Changed

    • Hidden deprecated options from the wasm-bindgen --help docs. #4646

    Fixed

    • Fixed wrong method names for GestureEvent bindings. #4615

    • Fix crash caused by allocations during TypedArray interactions. #4622


    Open source →
  4. 0.2.101 04 Sep 2025
    Release notes

    Added

    • Added format and colorSpace support to VideoFrameCopyToOptions #4543

    • Added support for the onbeforeinput attribute. #4544

    • TypedArray::new_from_slice(&[T]) constructor that allows to create a JS-owned TypedArray from a Rust slice. #4555

    • Added Function::call4 and Function::bind4 through Function::call9 Function::bind9 methods 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_module and inline_js attributes applied to inapplicable items. #4522

    • Add bindings for PictureInPicture. #4593

    • Added bytes method for the Blob idl #4506

    • Add error message when export symbol is not found #4594

    Changed

    • Deprecate async constructors. #4402

    • The size argument to GPUCommandEncoder.copyBufferToBuffer is now optional. #4508

    • MSRV of CLI tools bumped to v1.82. This does not affect libraries like wasm-bindgen, js-sys and web-sys! #4608

    Fixed

    • Detect more failure scenarios when retrieving the Wasm module. #4556

    • Add a workaround for TextDecoder failing 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 --exact option not working as expected. #4549

    • Fix tables being removed even though they are used by stack closures. #4119

    • Skip __wasm_call_ctors which 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-xform
      • wasm-bindgen-multi-value-xform
      • wasm-bindgen-threads-xform
      • wasm-bindgen-wasm-conventions
      • wasm-bindgen-wasm-interpreter

    Open source →
  5. 0.2.100 12 Jan 2025
    Release notes

    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 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

    Changed

    • 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

    • Fixed using JavaScript keyword as identifiers not being handled correctly. #4329

      • Using JS keywords as struct and enum names 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:
        1. The first part of a js_namespace on imports.
        2. The name of an imported type or constant if the type or constant does not have a js_namespace or module attribute.
        3. The name of an imported function if the function is not a method and does not have a js_namespace or module attribute.
      • Using JS keywords on imports in places other than the above will no longer cause the keywords to be escaped as _{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


    Open source →
  6. 0.2.99 07 Dec 2024
    Release notes

    Released 2024-12-07

    Fixed

    • Mark wasm-bindgen v0.2.98 only compatible with wasm-bindgen-cli of the same version. #4331

    Open source →
  7. 0.2.98 07 Dec 2024
    Release notes

    Released 2024-12-07

    Added

    • 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

    Changed

    • 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

    Fixed

    • Fix macro-hygiene for calls to std::thread_local!. #4315

    • Fix feature resolver version 1 compatibility. #4327


    Open source →
  8. 0.2.97 30 Nov 2024
    Release notes

    Released 2024-11-30

    Fixed

    • Fixed js-sys and wasm-bindgen-futures relying on internal paths of wasm-bindgen that are not crate feature additive. #4305

    Open source →
  9. 0.2.96 29 Nov 2024
    Release notes

    Released 2024-11-29

    Added

    • 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

    Changed

    • 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

    • 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


    Open source →
  10. 0.2.95 10 Oct 2024
    Release notes

    Released 2024-10-10

    Added

    • Added support for implicit discriminants in enums. #4152

    • Added support for Self in 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


    Open source →
  11. 0.2.94 09 Oct 2024
    Release notes

    Released 2024-10-09

    Added

    • 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

    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_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

    • 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


    Open source →
  12. 0.2.93 12 Aug 2024
    Release notes

    Released 2024-08-13

    Added

    • 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

    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.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

    Fixed

    • 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


    Open source →
  13. 0.2.92 04 Mar 2024
    Release notes

    Released 2024-03-04

    Added

    • 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

    Fixed

    • Make .wasm output deterministic when using --reference-types. #3851

    • Don't allow invalid Unicode scalar values in char. #3866


    Open source →
  14. 0.2.91 06 Feb 2024
    Release notes

    Released 2024-02-06

    Added

    • 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

    Changed

    • 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

    • 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


    Open source →
  15. 0.2.90 12 Jan 2024
    Release notes

    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, RTCRtpCodecCapability and RTCRtpHeaderExtensionCapability. #3737

    • Add bindings for UserActivation. #3719

    • Add unstable bindings for the Compression Streams API. #3752

    Changed

    • Stabilize File System API. #3745

    • Stabilize QueuingStrategy. #3753

    Fixed

    • Fixed a compiler error when using #[wasm_bindgen] inside macro_rules!. #3725

    Removed

    • Removed Gecko-only InstallTriggerData and Gecko-internal FlexLineGrowthState, GridDeclaration, GridTrackState, RtcLifecycleEvent and WebrtcGlobalStatisticsReport features. #3723

    Open source →
  16. 0.2.89 27 Nov 2023
    Release notes

    Released 2023-11-27.

    Added

    • Add additional constructor to DataView for SharedArrayBuffer. #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 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

    Removed

    • Removed Gecko-internal dictionary bindings Csp, CspPolicies, CspReport and CspReportProperties. #3721

    Open source →
  17. 0.2.88 01 Nov 2023
    Release notes

    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 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

    Changed

    • 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

    • 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

    • 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.


    Open source →
  18. 0.2.87 12 Jun 2023
    Release notes

    Released 2023-06-12.

    Added

    • Implemented IntoIterator for Array. #3477

    Changed

    • Deprecate HtmlMenuItemElement and parts of HtmlMenuElement. #3448

    • Stabilize ResizeObserver. #3459

    Fixed

    • Take alignment into consideration during (de/re)allocation. #3463

    Open source →
  19. 0.2.86 15 May 2023
    Release notes

    Released 2023-05-16.

    changes


    Open source →
  20. 0.2.85 09 May 2023
    Release notes

    Released 2023-05-09.

    changes


    Open source →
  21. 0.2.84 01 Feb 2023
    Release notes

    Released 2023-02-01.

    changes


    Open source →
  22. 0.2.83 12 Sep 2022
    Release notes

    Released 2022-09-12.

    changes


    Open source →
  23. 0.2.82 25 Jul 2022
    Release notes

    Released 2022-07-25.

    changes


    Open source →
  24. 0.2.81 14 Jun 2022
    Release notes

    Released 2022-06-14.

    changes


    Open source →
  25. 0.2.80 07 Apr 2022
    Release notes

    Released 2022-04-04.

    changes


    Open source →
  26. 0.2.79 19 Jan 2022
    Release notes

    Released 2022-01-19.

    changes


    Open source →
  27. 0.2.78 15 Sep 2021
    Release notes

    Released 2021-09-15.

    changes


    Open source →
  28. 0.2.77 08 Sep 2021
    Release notes

    Released 2021-09-08.

    changes


    Open source →
  29. 0.2.76 19 Aug 2021
    Release notes

    Released 2021-08-19.

    changes


    Open source →
  30. 0.2.75 02 Aug 2021
    Release notes

    Released 2021-08-02.

    changes


    Open source →
  31. 0.2.74 10 May 2021
    Release notes

    Released 2021-05-10.

    changes


    Open source →
  32. 0.2.73 29 Mar 2021
    Release notes

    Released 2021-03-29.

    changes


    Open source →
  33. 0.2.72 18 Mar 2021
    Release notes

    Released 2021-03-18.

    changes


    Open source →
  34. 0.2.71 26 Feb 2021
    Release notes

    Released 2021-02-26.

    changes


    Open source →
  35. 0.2.70 25 Jan 2021
    Release notes

    Released 2021-01-25.

    changes


    Open source →
  36. 0.2.69 30 Nov 2020
    Release notes

    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_name is 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 waitAsync have been updated. #2362


    Open source →
  37. 0.2.68 09 Sep 2020
    Release notes

    Released 2020-09-08.

    Added

    • Add userVisibleOnly property to PushSubscriptionOptionsInit. #2288

    Fixed

    • 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

    Updated

    • The WebGPU WebIDL was updated. #2267

    Open source →
  38. 0.2.67 28 Jul 2020
    Release notes

    Released 2020-07-28.

    Added

    • A --reference-types flag was added to the CLI. #2257

    Fixed

    • Breakage with Closure::forget in 0.2.66 was fixed. #2258

    Open source →
  39. 0.2.66 28 Jul 2020
    Release notes

    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-refs flag is now available in the CLI for enabling weak references. #2248


    Open source →
  40. 0.2.65 15 Jul 2020
    Release notes

    Released 2020-07-15.

    Added

    • Functions from JS can now be natively imported as async and 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

    Open source →
  41. 0.2.64 29 Jun 2020
    Release notes

    Released 2020-06-29.

    Added

    • Nested namespaces for imports can now be specified. #2105

    • A deno target has been added. #2176

    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


    Open source →
  42. 0.2.63 28 May 2020
    Release notes

    Released 2020-05-27.

    Added

    • A new example about using WebRTC has been added. #2131

    • The Blob.stream() method has been added. #2140 #2142

    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


    Open source →
  43. 0.2.62 01 May 2020
    Release notes

    Released 2020-05-01.

    Fixed

    • Usage of require has been fixed with Webpack 5. #2115

    Open source →
  44. 0.2.61 29 Apr 2020
    Release notes

    Released 2020-04-29.

    Added

    • 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

    Changed

    • 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

    Fixed

    • 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


    Open source →
  45. 0.2.60 26 Mar 2020
    Release notes

    Released 2020-03-25.

    Added

    • 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

    Changed

    • The WebIDL for WebGPU has been updated. #2037

    Open source →
  46. 0.2.59 03 Mar 2020
    Release notes

    Released 2020-03-03.

    Added

    • 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

    Changed

    • 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


    Open source →
  47. 0.2.58 07 Jan 2020
    Release notes

    Released 2020-01-07.

    Added

    • 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. #1938

    Fixed

    • TypeScript for struct methods that have floats has been fixed. #1945

    Open source →
  48. 0.2.57 06 Jan 2020
    Release notes

    Released 2020-01-06.

    Fixed

    • The js_sys::Promise type is now marked as #[must_use] #1927

    • Duplicate imports of the same name are now handled correctly again. #1942


    Open source →
  49. 0.2.56 20 Dec 2019
    Release notes

    Released 2019-12-20.

    Added

    • 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

    Fixed

    • Another webkit-specific WebIDL construct was fixed in web-sys. #1865

    Open source →
  50. 0.2.55 19 Nov 2019
    Release notes

    Released 2019-11-19.

    Fixed

    • Running wasm-bindgen over empty anyref modules now works again. #1861

    • Support for multi-value JS engines has been fixed as a Wasm interface types polyfill. #1863


    Open source →
  51. 0.2.54 07 Nov 2019
    Release notes

    Released 2019-11-07.

    Added

    • 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

    Changed

    • Some JS glue generation has been tweaked to avoid TypeScript warnings. #1852

    Open source →
  52. 0.2.53 29 Oct 2019
    Release notes

    Released 2019-10-29.

    Fixed

    • A bug with the experimental support for multi-value interface types has been fixed. #1839

    Open source →
  53. 0.2.52 24 Oct 2019
    Release notes

    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 unintern function 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 TextDecoder and Safari has been fxied #1789

    Open source →
  54. 0.2.51 26 Sep 2019
    Release notes

    Released 2019-09-26.

    Added

    • 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

    Changed

    • The passStringToWasm function has been optimized for size. #1736

    Fixed

    • BOM 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


    Open source →
  55. 0.2.50 19 Aug 2019
    Release notes

    Released 2019-08-19.

    Added

    • Experimental support with a WASM_INTERFACE_TYPES=1 environment variable has been added to emit a Wasm Interface Types custom section, making the output of wasm-bindgen a single standalone WebAssembly file. #1725

    Fixed

    • Unrelated errors are now no longer accidentally swallowed by the instantiateStreaming fallback. #1723

    Open source →
  56. 0.2.49 14 Aug 2019
    Release notes

    Released 2019-08-14.

    Added

    • Add binding for Element.getElementsByClassName. #1665

    • PartialEq and Eq are now implemented for all web-sys types. #1673

    • The wasm-bindgen-futures crate now has support for futures when the experimental WebAssembly threading feature is enabled. #1514

    • A new enable-interning feature is available to intern strings and reduce the cost of transferring strings across the JS/Rust boundary. #1612

    • The wasm-bindgen CLI has experimental support for reading native webidl-bindings custom sections and generating JS glue. This support is in addition to Rust's own custom sections and allows using wasm-bindgen with 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 anyref passes in wasm-bindgen have 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.18 has been added to wasm-bindgen-futures. #1716


    Open source →
  57. 0.2.48 11 Jul 2019
    Release notes

    Released 2019-07-11.

    Added

    • All typed arrays now implement From for 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 in js-sys. #1633

    Changed

    • More WebGL methods have been updated to use shared slices instead of mutable slices. #1639

    • When using the bundler target the import of the Wasm file now uses the .wasm extension to ensure a Wasm file is loaded. #1646

    • The old internal Stack trait has been removed since it is no longer used. #1624

    Fixed

    • The js_sys::global() accessor now attempts other strategies before falling back to a Function constructor which can violate some strict CSP settings. #1650

    • Dropping a JsFuture no longer logs a benign error to the console. #1649

    • Fixed an assertion which could happen in some modules when generating bindings. #1617


    Open source →
  58. 0.2.47 19 Jun 2019
    Release notes

    Released 2019-06-19.

    Changed

    • The HtmlHyperlinkElement should now include more native methods after a small edit to the WebIDL. #1604

    • Duplicate names for getters/setters now have a first-class wasm-bindgen error. #1605

    Fixed

    • TypeScript definition of init with --target web now 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


    Open source →
  59. 0.2.46 14 Jun 2019
    Release notes

    Released 2019-06-14.

    Added

    • Bindings for Array#flat and Array#flatMap have been added. #1573

    • All #[wasm_bindgen] types now AsRef to themselves. #1583

    • When using --target web the path passed to init is 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_logger crate and its tree of dependencies is no longer required to build web-sys. #1586


    Open source →
  60. 0.2.45 20 May 2019
    Release notes

    Released 2019-05-20.

    Fixed

    • Using __wbindgen_cb_forget on --target web has been fixed. #1544

    Changed

    • More whitelists have been added for web-sys to use shared slices instead of mutable slices. #1539

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive