As stated in the high-level goals, the first release aims at being a Minimum Viable Product (MVP). This means that there are important features we know we want and need, but are post-MVP; these are in a separate essential post-MVP features document. The MVP will contain features which are available today in modern web browsers and which perform well even on mobile devices, which leads to roughly the same functionality as asm.js.
The major design components of the MVP have been broken up into separate documents:
- The distributable, loadable and executable unit of code in WebAssembly is called a module.
- The behavior of WebAssembly code in a module is specified in terms of an AST.
- The WebAssembly binary format, which is designed to be natively decoded by WebAssembly implementations, is specified as a binary serialization of a module's AST.
- The WebAssembly text format, which is designed to be read and written when using tools (e.g., assemblers, debuggers, profilers), is specified as a textual projection of a module's AST.
- WebAssembly is designed to be implemented both by web browsers and completely different execution environments.
- To ease the transition to WebAssembly while native support is still being deployed, the WebAssembly MVP is designed to allow an effective and efficient polyfill to JavaScript.