blob: 9e7359d22e6360ef936b5d8b275ffe53fa947a95 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# WebAssembly High-Level Goals
1. Define a [portable](Portability.md), size- and load-time-efficient
[binary format](MVP.md#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](https://en.wikipedia.org/wiki/Mobile_device) and
[IoT](https://en.wikipedia.org/wiki/Internet_of_Things).
2. Specify and implement incrementally:
* a [Minimum Viable Product (MVP)](MVP.md) for the standard with
roughly the same functionality as [asm.js](http://asmjs.org), primarily
aimed at [C/C++](CAndC++.md);
* [additional features :unicorn:][future general],
initially focused on key features like [threads][future threads],
[zero cost exceptions][future exceptions], and [SIMD][future simd],
followed by additional features
prioritized by feedback and experience, including support for languages
other than C/C++.
3. Design to execute within and integrate well with the *existing*
[Web platform](Web.md):
* maintain the versionless, [feature-tested](FeatureTest.md) 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.
4. Design to support [non-browser embeddings](NonWeb.md) as well.
5. Make a great platform:
* build a new LLVM backend for WebAssembly and an accompanying
clang port ([why LLVM first?](FAQ.md#which-compilers-can-i-use-to-build-webassembly-programs));
* promote other compilers and tools targeting WebAssembly; and
* enable other useful [tooling](Tooling.md).
[future general]: FutureFeatures.md
[future threads]: https://github.com/WebAssembly/design/issues/1073
[future simd]: https://github.com/WebAssembly/design/issues/1075
[future exceptions]: https://github.com/WebAssembly/design/issues/1078
|