Reference
What’s implemented, what isn’t, and the error variants you can pattern-match on.
The Quickstart and Concepts pages cover the model. This section is for lookups — does the interpreter implement X, what’s the type of Y, what error fires on Z.
At a glance
Implemented:
- Every WebAssembly Core opcode (numeric, control flow, memory, tables, parametric, variables).
- Sign-extension proposal (
i{32,64}.extend{8,16,32}_s). - Non-trapping float-to-int (
*.trunc_sat_f*_*). - Bulk-memory (
memory.{init,copy,fill},data.drop,table.{init,copy,fill},elem.drop). - Reference types (
funcref,externref,ref.{null,is_null,func},table.{get,set,grow,size,fill}, typedselect t*). - Multi-memory (every memory opcode carries a memidx; modules may declare more than one memory).
- Full SIMD proposal — all ~236 ops under the
0xFDprefix (V128value type plumbed end-to-end). - Relaxed SIMD — all 20 sub-opcodes (
0x100..0x113). - Exception handling — both legacy (
try/catch/throw/rethrow/delegate) and modern (try_table+throw_ref+exnref). - Tail calls (
return_call/return_call_indirect). - Threads / atomics — 66 atomic sub-opcodes + shared memory +
wait/notify/fence. - Multi-value blocks + functions.
- Start section.
- Validation pass that runs before any code does.
Not implemented:
- Function references proposal (typed
(ref null func)short-form reftype with wire byte0x63). - GC proposal (
struct.*,array.*,ref.cast). - Component model (out of scope — packaging proposal, not a wasm core feature).
See Opcodes for the by-byte detail.
- Opcodes — every WebAssembly opcode group, supported or planned.
- Errors — the
WasmErrorADT in one table. - Spec compliance — running the W3C testsuite against the interpreter.