- Define a portable, size- and load-time-efficient binary format to serve as a compilation target which can be compiled to execute at native speed by taking advantage of common hardware capabilities available on a wide range of platforms, including mobile and IoT.
- Specify and implement incrementally:
- develop new features as independent proposals;
- maintain layering, with a core spec focused on pure sandboxed computation, with host interactions factored out into higher specification layers;
- preserve backwards compatibility;
- prioritize new features according to feedback and experience; and
- avoid biasing towards any one programming language family.
- Design to execute within and integrate well with the existing
Web platform:
- maintain the versionless, feature-tested and backwards-compatible evolution story of the Web;
- execute in the same semantic universe as JavaScript;
- allow synchronous calls to and from JavaScript;
- enforce the same-origin and permissions security policies;
- access browser functionality through the same Web APIs that are accessible to JavaScript; and
- define a human-editable text format that is convertible to and from the binary format, supporting View Source functionality.
- Design to support non-browser embeddings as well.
- Make a great platform:
- promote compilers and tools targeting WebAssembly;
- enable other useful tooling;
- maintain a high level of determinism; and
- specify using formal semantics.