forked from ewasm/design
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request ewasm#2 from WebAssembly/high-level-goals-2
Update high-level goals, and add post-v1 features.
- Loading branch information
Showing
2 changed files
with
55 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,51 @@ | ||
# Essential Post-v.1 Features | ||
|
||
This is a list of essential features we *know* we need but were not part of the | ||
Minimum Viable Product that is [v.1](V1.md). | ||
Minimum Viable Product that is [v.1](V1.md). These will be developed following | ||
the [high-level goals](HighLevelGoals.md), and prioritized based on developer | ||
feedback. | ||
|
||
|
||
*This is just a skeleton list to start a discussion* | ||
|
||
## 64-bit integers | ||
* TODO | ||
|
||
## Threads | ||
* Atomics | ||
* Futex or [synchronic][] | ||
* Thread-local storage | ||
|
||
[synchronic]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4195.pdf | ||
|
||
## Fixed-width SIMD | ||
* TODO | ||
|
||
## Zero-cost Exception Handling | ||
## Dynamic loading | ||
* TODO | ||
|
||
## 64-bit integers | ||
## Platform-independent Just-in-Time compilatione | ||
* TODO | ||
* Potentially through dynamic loading. | ||
|
||
## Fine-grained memory management | ||
* Shared memory | ||
* `mmap`/`munmap`/`madvise` | ||
|
||
## Zero-cost Exception Handling | ||
* Developer access to stack unwinding and inspection. | ||
|
||
## Fixed-width SIMD a la SIMD.js | ||
## Garbage collection | ||
* TODO | ||
|
||
## Signature-restricted Proper Tail Calls | ||
* TODO | ||
|
||
## Irreducible control flow | ||
* TODO | ||
|
||
## Extra math | ||
The following features may not work the same on all platforms: | ||
* Fused multiply-add. | ||
* Reciprocal square-root approximate. | ||
* 16-bit floating-point values. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,27 @@ | ||
# WebAssembly High-Level Goals | ||
|
||
1. Define a portable, size- and load-time-efficient binary format to serve as a web compilation target. | ||
2. Define a human-editable text format that is isomorphic and convertible to/from the binary format. | ||
3. Design v.1 to allow an effective (load-time and performance) [polyfill](https://github.com/WebAssembly/polyfill) via client-side compilation to [asm.js](http://asmjs.org). | ||
4. Design v.1 as a Minimum Viable Product: basically what you can do with [asm.js](http://asmjs.org). | ||
5. Design to integrate well with the existing web platform: | ||
1. Define a portable, size- and load-time-efficient binary format to serve as a | ||
web compilation target which can be compiled to execute at native speed and | ||
take full advantage of a CPU's capabilities. | ||
2. Define a human-editable text format that is isomorphic and convertible | ||
to/from the binary format. | ||
3. Design to serve as a compilation target for a growing set of source languages | ||
over time, starting with C/C++. | ||
4. Design to maintain the versionless, feature-testing and backwards-compatible | ||
evolution story of the web; engines should not need multiple, versioned | ||
decoders. | ||
5. Design and implement incrementally: the initial version will be a Minimum | ||
Viable Product by being an effective [polyfill][] via client-side compilation | ||
to [asm.js][], with a feature set similar to [asm.js][]'s current | ||
features. Subsequent versions will be more | ||
[featureful](EssentialPostV1Features.md). | ||
6. Design to integrate well with the existing web platform: | ||
* execute in the same semantic universe as JavaScript; | ||
* allow synchronous calls to and from JavaScript; | ||
* enforce the same-origin security policy; and | ||
* access browser functionality through the same Web APIs that are accessible to JavaScript. | ||
6. Design to maintain the versionless, feature-testing and backwards-compatible evolution story | ||
of the web; engines should not need multiple, versioned decoders. | ||
* enforce the same-origin and permissions security policies; and | ||
* access browser functionality through the same Web APIs that are accessible | ||
to JavaScript. | ||
7. Design to allow execution in non-browser environments. | ||
|
||
|
||
[polyfill]: https://github.com/WebAssembly/polyfill | ||
[asm.js]: http://asmjs.org |