- 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
- Specify and implement incrementally:
- a Minimum Viable Product (MVP) for the standard with
roughly the same functionality as asm.js, primarily
aimed at C/C++;
additional features ,
initially focused on key features like threads,
zero cost exceptions, and SIMD,
follow by additional features
prioritized by feedback and experience, including support for languages
other than C/C++.
- Design to execute within and integrate well with the existing
- maintain the versionless, feature-tested and backwards-compatible evolution story of the Web;
- enforce the same-origin and permissions security policies;
- access browser functionality through the same Web APIs that are accessible
- 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:
- build a new LLVM backend for WebAssembly and an accompanying
clang port (why LLVM first?);
- promote other compilers and tools targeting WebAssembly; and
- enable other useful tooling.