In November 2017, WebAssembly CG members representing four browsers, Chrome, Edge, Firefox, and WebKit, reached consensus that the design of the initial (MVP) WebAssembly API and binary format is complete to the extent that no further design work is possible without implementation experience and significant usage.
After the initial release, WebAssembly has been gaining new features through the standardization process. For the complete list of current proposals and their respective stages, check out the WebAssembly/proposals
repo.
The table below aims to track implemented features in popular engines:
Your browser | Chrome | Firefox | Safari | Wasmtime | Wasmer | Node.js | Deno | wasm2c | |
---|---|---|---|---|---|---|---|---|---|
JS BigInt to Wasm i64 integration | 85 | 78 | 14.1[d] | N/A | N/A | 15.0 | 1.1.2 | N/A | |
Bulk memory operations | 75 | 79 | 15 | 0.20 | 1.0 | 12.5 | 0.4 | 1.0.30 | |
Extended constant expressions | 114 | ||||||||
Multi-value | 85 | 78 | 0.17 | 1.0 | 15.0 | 1.3.2 | 1.0.24 | ||
Mutable globals | 74 | 61 | 0.7 | 12.0 | 0.1 | 1.0.1 | |||
Reference types | 96 | 79 | 15 | 0.20 | 2.0 | 17.2 | 1.16 | 1.0.31 | |
Non-trapping float-to-int conversions | 75 | 64 | 15 | 12.5 | 0.4 | 1.0.24 | |||
Sign-extension operations | 74 | 62 | 14.1[d] | 12.0 | 0.1 | 1.0.24 | |||
Fixed-width SIMD | 91 | 89 | 16.4 | 0.33 | 2.0 | 16.4 | 1.9 | ||
Tail calls | 112 | ||||||||
Exception handling | 95 | 100 | 15.2 | 17.0 | 1.16 | ||||
Garbage collection | |||||||||
Memory64 | |||||||||
Multiple memories | |||||||||
Relaxed SIMD | |||||||||
Threads and atomics | 74 | 79 | 14.1[d] | N/A | N/A | 16.4 | 1.9 | ||
Type reflection | 2.0 |
chrome://flags/#enable-webassembly-garbage-collection
chrome://flags/#enable-experimental-webassembly-features
--wasm-features=memory64
--wasm-features=multi-memory
--experimental-wasm-extended-const
--experimental-wasm-memory64
--experimental-wasm-relaxed-simd
--experimental-wasm-return-call
--experimental-wasm-type-reflection
--v8-flags=--experimental-wasm-extended-const
--v8-flags=--experimental-wasm-memory64
--v8-flags=--experimental-wasm-relaxed-simd
--v8-flags=--experimental-wasm-return-call
--v8-flags="..."
)--enable-exceptions
--enable-memory64
--enable-multi-memory
To detect supported features at runtime from JavaScript, check out the wasm-feature-detect
library, which powers the “Your browser” column above.