WebAssembly Specifications
To support the embedding of WebAssembly into different environments, its specification is split into layers that are specified in separate documents.
Source for these documents is available here.
Core Specification
Defines the semantics of WebAssembly modules independent from a concrete embedding. The WebAssembly core is specified in a single document:
-
WebAssembly: defines the structure of WebAssembly modules, their instruction set, and their representation in binary and text format, as well as the semantics of validation, instantiation, and execution.
- Browser version (multi-page)
- W3C version (single-page)
- PDF version
Embedder Specifications
Define application programming interfaces (APIs) enabling the use of WebAssembly modules in concrete embedding environments. Currently, two APIs are specified:
JavaScript Embedding: defines JavaScript classes and objects for accessing WebAssembly from within JavaScript, including methods for validation, compilation, instantiation, and classes for representing and manipulating imports and exports as JavaScript objects.
Web Embedding: defines extensions to the JavaScript API made available specifically in web browsers, in particular, an interface for streaming compilation and instantiation from origin-bound
Response
types.
Metadata specifications
Define the format and semantics of extra information attached to a WebAssembly module
Code Metadata: defines metadata attached to instructions
Legacy Extensions
Define extensions that are deprecated, but may still be in use.
Legacy Exception Handling: defines additional instructions for exception handling that may still be available in some engines and tools, specifically web browsers.
Core specification
JavaScirpt Embedding
All Versions
- WebAssembly 1.0 (2017)
- WebAssembly 2.0 (2022)
- WebAssembly 3.0 (Draft 2024)