2026
1 featuresBranch hints in WebAssembly allows a browser to optimize performance when a branch is a likely to take a specific path.
2025
1 featuresWhen caught, an exception is reified into an exception reference, a value of the new type exnref.
2024
4 featuresGarbage collection tracks references for better memory management with garbage-collected languages running in WebAssmbly.
Tail call optimization discards a caller frame and replaces the call with a jump instruction.
A typed function reference can be called directly.
The i32.add, i32.sub, i32.mul, i64.add, i64.sub, and i64.mul operations extend constant expressions to include arithmetic.
2023
1 features128-bit SIMD (Single Instruction Multiple Data) performs one instruction on multiple units of data, when running on hardware that supports such instructions. Also known as vector instructions.
2022
1 featuresExceptions break the normal control flow of execution to represent exceptional behavior, such as an error. You can respond to the exception in JavaScript code.
2021
6 featuresThreads in WebAssembly run code in parallel, while atomic memory instructions can guarantee that no two threads can read or write to shared memory at the same time.
The externref type can be both a value type and a table element type, while funcref can be a value type.
Bulk memory operations, such as copy and init, mirror the efficiency of native memcpy and memmove operations.
Saturating floating-point to integer conversion operators return the maximum or minimum integer value on overflow instead of trapping.
Integer values pass bidirectionally between JavaScript and WebAssembly, converted to i64 values in WebAssembly or BigInt values in JavaScript.
Sign-extension operator instructions extend the width of 8-bit, 16-bit, and 32-bit values to 32-bit and 64-bit values.
2020
2 featuresInstructions and blocks can produce multiple result values.
Mutable global variables are importable and exportable.
2017
1 featuresThe WebAssembly.instantiate() and WebAssembly.instantiateStreaming() global static methods load WebAssembly code (also known as Wasm), a portable binary instruction format.
Limited Availability
5 featuresThe JavaScript promise integration (JSPI) suspends a WebAssembly module when it calls a JavaScript method that returns a promise. The module resumes when the promise is resolved. You can use this to call asynchronous Web APIs from synchronous WebAssembly.
Instructions accept 64-bit memory indexes.
A single module in WebAssembly can have multiple memories.
Relaxed SIMD (Single Instruction Multiple Data) introduces local non-determinism, where the results of the instructions may vary based on hardware support.
The WebAssembly builtin string functions mirror a subset of the JavaScript String API and adapt it to be efficiently callable without JavaScript glue code.