+
{{content}}
diff --git a/css/custom.css b/css/custom.css
index 441ee74c..adc09679 100644
--- a/css/custom.css
+++ b/css/custom.css
@@ -1624,7 +1624,7 @@ header {
padding: 12px;
}
-.page-section .container>*:first-child, .page-section .container-narrow>*:first-child,
+.page-section .container>*:first-child, .page-section .container-narrow>*:first-child,
section .container>*:first-child, section .container-narrow>*:first-child,
header .container>*:first-child, header .container-narrow>*:first-child, {
margin-top: 0
@@ -1958,3 +1958,35 @@ pre code {
pre code::before, pre code::after {
content: normal;
}
+
+#feature-support {
+ white-space: nowrap;
+ cursor: default;
+}
+
+#feature-support>caption {
+ text-align: left;
+}
+
+#feature-support sup {
+ padding-left: 1pt;
+}
+
+#feature-support tr>* {
+ text-align: center;
+}
+
+#feature-support tr:first-child>th {
+ vertical-align: bottom;
+ white-space: normal;
+}
+
+#feature-support .img-container {
+ width: 32px;
+ height: 32px;
+}
+
+#feature-support td[title] {
+ text-decoration: underline dashed;
+ text-underline-position: under;
+}
diff --git a/docs/css/custom.css b/docs/css/custom.css
index 441ee74c..adc09679 100644
--- a/docs/css/custom.css
+++ b/docs/css/custom.css
@@ -1624,7 +1624,7 @@ header {
padding: 12px;
}
-.page-section .container>*:first-child, .page-section .container-narrow>*:first-child,
+.page-section .container>*:first-child, .page-section .container-narrow>*:first-child,
section .container>*:first-child, section .container-narrow>*:first-child,
header .container>*:first-child, header .container-narrow>*:first-child, {
margin-top: 0
@@ -1958,3 +1958,35 @@ pre code {
pre code::before, pre code::after {
content: normal;
}
+
+#feature-support {
+ white-space: nowrap;
+ cursor: default;
+}
+
+#feature-support>caption {
+ text-align: left;
+}
+
+#feature-support sup {
+ padding-left: 1pt;
+}
+
+#feature-support tr>* {
+ text-align: center;
+}
+
+#feature-support tr:first-child>th {
+ vertical-align: bottom;
+ white-space: normal;
+}
+
+#feature-support .img-container {
+ width: 32px;
+ height: 32px;
+}
+
+#feature-support td[title] {
+ text-decoration: underline dashed;
+ text-underline-position: under;
+}
diff --git a/docs/features.json b/docs/features.json
new file mode 100644
index 00000000..cbff45e6
--- /dev/null
+++ b/docs/features.json
@@ -0,0 +1,129 @@
+{
+ "features": {
+ "bigInt": {
+ "description": "JS BigInt to Wasm i64 integration",
+ "url": "https://github.com/WebAssembly/JS-BigInt-integration",
+ "phase": 4
+ },
+ "bulkMemory": {
+ "description": "Bulk memory operations",
+ "url": "https://github.com/WebAssembly/bulk-memory-operations/blob/master/proposals/bulk-memory-operations/Overview.md",
+ "phase": 3
+ },
+ "exceptions": {
+ "description": "Exception handling",
+ "url": "https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md",
+ "phase": 2
+ },
+ "multiValue": {
+ "description": "Multi-value",
+ "url": "https://github.com/WebAssembly/spec/blob/master/proposals/multi-value/Overview.md",
+ "phase": 4
+ },
+ "mutableGlobals": {
+ "description": "Import & export of mutable globals",
+ "url": "https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md",
+ "phase": 4
+ },
+ "referenceTypes": {
+ "description": "Reference types",
+ "url": "https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md",
+ "phase": 3
+ },
+ "saturatedFloatToInt": {
+ "description": "Non-trapping float-to-int conversions",
+ "url": "https://github.com/WebAssembly/spec/blob/master/proposals/nontrapping-float-to-int-conversion/Overview.md",
+ "phase": 4
+ },
+ "signExtensions": {
+ "description": "Sign-extension operations",
+ "url": "https://github.com/WebAssembly/spec/blob/master/proposals/sign-extension-ops/Overview.md",
+ "phase": 4
+ },
+ "simd": {
+ "description": "Fixed-width SIMD",
+ "url": "https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md",
+ "phase": 3
+ },
+ "tailCall": {
+ "description": "Tail calls",
+ "url": "https://github.com/WebAssembly/tail-call/blob/master/proposals/tail-call/Overview.md",
+ "phase": 3
+ },
+ "threads": {
+ "description": "Threads and atomics",
+ "url": "https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md",
+ "phase": 2
+ }
+ },
+ "browsers": {
+ "Chrome": {
+ "url": "https://www.google.com/chrome/",
+ "logo": "/images/chrome.svg",
+ "version": "83",
+ "features": {
+ "bigInt": "#enable-experimental-webassembly-features",
+ "bulkMemory": true,
+ "multiValue": "#enable-experimental-webassembly-features",
+ "mutableGlobals": true,
+ "referenceTypes": "#enable-experimental-webassembly-features",
+ "saturatedFloatToInt": true,
+ "signExtensions": true,
+ "simd": "#enable-webassembly-simd",
+ "threads": true
+ }
+ },
+ "Firefox": {
+ "url": "https://www.mozilla.org/firefox/",
+ "logo": "/images/firefox.svg",
+ "version": "77",
+ "features": {
+ "bigInt": "Nightly",
+ "bulkMemory": "javascript.options.shared_memory",
+ "multiValue": "Nightly",
+ "mutableGlobals": true,
+ "referenceTypes": "Nightly",
+ "saturatedFloatToInt": true,
+ "signExtensions": true,
+ "threads": "Nightly"
+ }
+ },
+ "Safari": {
+ "url": "https://www.apple.com/safari/",
+ "logo": "/images/safari_48x48.png",
+ "version": "13.1",
+ "features": {
+ "multiValue": true,
+ "mutableGlobals": true
+ }
+ },
+ "Wasmtime": {
+ "url": "https://wasmtime.dev/",
+ "logo": "/images/bca.png",
+ "version": "0.17",
+ "features": {
+ "bigInt": true,
+ "bulkMemory": "--enable-bulk-memory",
+ "multiValue": true,
+ "mutableGlobals": true,
+ "referenceTypes": "--enable-reference-types",
+ "saturatedFloatToInt": true,
+ "signExtensions": true,
+ "simd": "--enable-simd"
+ }
+ },
+ "Wasmer": {
+ "url": "https://wasmer.io/",
+ "logo": "/images/wasmer.png",
+ "version": "0.17",
+ "features": {
+ "bigInt": true,
+ "mutableGlobals": true,
+ "saturatedFloatToInt": true,
+ "signExtensions": true,
+ "simd": "--enable-simd",
+ "threads": "--enable-threads"
+ }
+ }
+ }
+}
diff --git a/docs/images/bca.png b/docs/images/bca.png
new file mode 100644
index 00000000..9baadb36
Binary files /dev/null and b/docs/images/bca.png differ
diff --git a/docs/images/wasmer.png b/docs/images/wasmer.png
new file mode 100644
index 00000000..3b136d1b
Binary files /dev/null and b/docs/images/wasmer.png differ
diff --git a/docs/index.html b/docs/index.html
index 94227d3f..738e730c 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -49,7 +49,7 @@
-
+
Developer reference documentation for Wasm can be found on
MDN's WebAssembly pages.
The open standards for WebAssembly are developed in a
W3C Community Group (that includes representatives from all major browsers) as well as a
W3C Working Group.
diff --git a/docs/roadmap/index.html b/docs/roadmap/index.html
index 388cc337..30b3895f 100644
--- a/docs/roadmap/index.html
+++ b/docs/roadmap/index.html
@@ -43,56 +43,82 @@
-
+
Roadmap
-
WebAssembly Consensus
-
-
WebAssembly CG members representing four browsers, Chrome, Edge, Firefox, and WebKit, have reached consensus that the design of the initial (MVP) WebAssembly API and binary format is complete to the extent that no further design work is possible without implementation experience and significant usage. This marks the end of the Browser Preview and signals that browsers can begin shipping WebAssembly on-by-default. From this point forward, future features will be designed to ensure backwards compatibility.
-
-
This consensus includes a JavaScript API and binary format accompanied by a reference interpreter. You can test out WebAssembly today using the Emscripten toolchain by following the developer’s guide and reading more on MDN. You can also explore a variety of other advanced tools.
-
-
See Getting Started to start experimenting and
-Feedback for how and where to direct feedback.
-
-
See this message on the community group mailing list.
-
-
Next Steps
-
-
The WebAssembly community group and contributors plan to:
-
-
- - distill the design
-and spec interpreter repos
-into a single unified specification in the spec
-repo
- - propose a new charter for a W3C WebAssembly Working Group
- - graduate the WebAssembly LLVM backend from experimental to stable (and update Emscripten)
- - prototype additional WebAssembly integration into browser developer tools
- - Start work on post-MVP features
-
-
-
Changes Since the Browser Preview
-
-
- - The binary version
- of WebAssembly has been frozen at
0x1 (from this point forward
- all new features will be added in a backwards-compatible manner,
- and be detected through feature-testing). To update your
- WebAssembly modules, upgrade to the latest version of Emscripten
- and recompile.
-
-
-
Past Milestones
-
-
- - April 2015 - WebAssembly Community Group started
- - June 2015 - The first public announcement [1][2]
- - March 2016 - Definition of core feature with multiple interoperable implementations [1] [2] [3]
- - October 2016 - Browser Preview announced with multiple interoperable implementations [1] [2] [3]
- - February 2017 - Official logo chosen
- - March 2017 - Cross-browser consensus and end of Browser Preview
-
+
In November 2017, WebAssembly CG members representing four browsers, Chrome, Edge, Firefox, and WebKit, reached consensus that the design of the initial (MVP) WebAssembly API and binary format is complete to the extent that no further design work is possible without implementation experience and significant usage.
+
+
After the initial release, WebAssembly has been gaining new features through the standardization process. For the complete list of current proposals and their respective stages, check out the WebAssembly/proposals repo.
+
+
+ The table below aims to track implemented features in popular engines:
+
+
+
+
+
+
To detect supported features at runtime from JavaScript, check out the wasm-feature-detect library, which powers the “Your browser” column above.
diff --git a/docs/specs/index.html b/docs/specs/index.html
index 47ec1852..f17c1d36 100644
--- a/docs/specs/index.html
+++ b/docs/specs/index.html
@@ -43,7 +43,7 @@
-
+
Specifications
diff --git a/features.json b/features.json
new file mode 100644
index 00000000..cbff45e6
--- /dev/null
+++ b/features.json
@@ -0,0 +1,129 @@
+{
+ "features": {
+ "bigInt": {
+ "description": "JS BigInt to Wasm i64 integration",
+ "url": "https://github.com/WebAssembly/JS-BigInt-integration",
+ "phase": 4
+ },
+ "bulkMemory": {
+ "description": "Bulk memory operations",
+ "url": "https://github.com/WebAssembly/bulk-memory-operations/blob/master/proposals/bulk-memory-operations/Overview.md",
+ "phase": 3
+ },
+ "exceptions": {
+ "description": "Exception handling",
+ "url": "https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md",
+ "phase": 2
+ },
+ "multiValue": {
+ "description": "Multi-value",
+ "url": "https://github.com/WebAssembly/spec/blob/master/proposals/multi-value/Overview.md",
+ "phase": 4
+ },
+ "mutableGlobals": {
+ "description": "Import & export of mutable globals",
+ "url": "https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md",
+ "phase": 4
+ },
+ "referenceTypes": {
+ "description": "Reference types",
+ "url": "https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md",
+ "phase": 3
+ },
+ "saturatedFloatToInt": {
+ "description": "Non-trapping float-to-int conversions",
+ "url": "https://github.com/WebAssembly/spec/blob/master/proposals/nontrapping-float-to-int-conversion/Overview.md",
+ "phase": 4
+ },
+ "signExtensions": {
+ "description": "Sign-extension operations",
+ "url": "https://github.com/WebAssembly/spec/blob/master/proposals/sign-extension-ops/Overview.md",
+ "phase": 4
+ },
+ "simd": {
+ "description": "Fixed-width SIMD",
+ "url": "https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md",
+ "phase": 3
+ },
+ "tailCall": {
+ "description": "Tail calls",
+ "url": "https://github.com/WebAssembly/tail-call/blob/master/proposals/tail-call/Overview.md",
+ "phase": 3
+ },
+ "threads": {
+ "description": "Threads and atomics",
+ "url": "https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md",
+ "phase": 2
+ }
+ },
+ "browsers": {
+ "Chrome": {
+ "url": "https://www.google.com/chrome/",
+ "logo": "/images/chrome.svg",
+ "version": "83",
+ "features": {
+ "bigInt": "#enable-experimental-webassembly-features",
+ "bulkMemory": true,
+ "multiValue": "#enable-experimental-webassembly-features",
+ "mutableGlobals": true,
+ "referenceTypes": "#enable-experimental-webassembly-features",
+ "saturatedFloatToInt": true,
+ "signExtensions": true,
+ "simd": "#enable-webassembly-simd",
+ "threads": true
+ }
+ },
+ "Firefox": {
+ "url": "https://www.mozilla.org/firefox/",
+ "logo": "/images/firefox.svg",
+ "version": "77",
+ "features": {
+ "bigInt": "Nightly",
+ "bulkMemory": "javascript.options.shared_memory",
+ "multiValue": "Nightly",
+ "mutableGlobals": true,
+ "referenceTypes": "Nightly",
+ "saturatedFloatToInt": true,
+ "signExtensions": true,
+ "threads": "Nightly"
+ }
+ },
+ "Safari": {
+ "url": "https://www.apple.com/safari/",
+ "logo": "/images/safari_48x48.png",
+ "version": "13.1",
+ "features": {
+ "multiValue": true,
+ "mutableGlobals": true
+ }
+ },
+ "Wasmtime": {
+ "url": "https://wasmtime.dev/",
+ "logo": "/images/bca.png",
+ "version": "0.17",
+ "features": {
+ "bigInt": true,
+ "bulkMemory": "--enable-bulk-memory",
+ "multiValue": true,
+ "mutableGlobals": true,
+ "referenceTypes": "--enable-reference-types",
+ "saturatedFloatToInt": true,
+ "signExtensions": true,
+ "simd": "--enable-simd"
+ }
+ },
+ "Wasmer": {
+ "url": "https://wasmer.io/",
+ "logo": "/images/wasmer.png",
+ "version": "0.17",
+ "features": {
+ "bigInt": true,
+ "mutableGlobals": true,
+ "saturatedFloatToInt": true,
+ "signExtensions": true,
+ "simd": "--enable-simd",
+ "threads": "--enable-threads"
+ }
+ }
+ }
+}
diff --git a/images/bca.png b/images/bca.png
new file mode 100644
index 00000000..9baadb36
Binary files /dev/null and b/images/bca.png differ
diff --git a/images/wasmer.png b/images/wasmer.png
new file mode 100644
index 00000000..3b136d1b
Binary files /dev/null and b/images/wasmer.png differ
diff --git a/roadmap.md b/roadmap.md
index 31949a9d..c9cb7d9a 100644
--- a/roadmap.md
+++ b/roadmap.md
@@ -3,44 +3,75 @@ layout: default
---
# Roadmap
-## WebAssembly Consensus
+In November 2017, WebAssembly CG members representing four browsers, Chrome, Edge, Firefox, and WebKit, reached consensus that the design of the initial (MVP) WebAssembly API and binary format is complete to the extent that no further design work is possible without implementation experience and significant usage.
-WebAssembly CG members representing four browsers, Chrome, Edge, Firefox, and WebKit, have reached consensus that the design of the initial ([MVP](/docs/mvp/)) WebAssembly API and binary format is complete to the extent that no further design work is possible without implementation experience and significant usage. This marks the end of the Browser Preview and signals that browsers can begin shipping WebAssembly on-by-default. From this point forward, future features will be designed to ensure backwards compatibility.
+After the initial release, WebAssembly has been gaining new features through the [standardization process](https://github.com/WebAssembly/meetings/blob/master/process/phases.md). For the complete list of current proposals and their respective stages, check out the [`WebAssembly/proposals` repo](https://github.com/WebAssembly/proposals).
-This consensus includes a [JavaScript API](/docs/js/) and [binary format](/docs/binary-encoding/) accompanied by a [reference interpreter](https://github.com/WebAssembly/spec/tree/master/interpreter). You can test out WebAssembly today using the Emscripten toolchain by following the [developer’s guide](/getting-started/developers-guide/) and reading more on [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly). You can also explore a variety of other [advanced tools](/getting-started/advanced-tools/).
+
+ The table below aims to track implemented features in popular engines:
+
+
+
-* distill the [design](https://github.com/webassembly/design)
- and [spec interpreter](https://github.com/WebAssembly/spec/tree/master/interpreter) repos
- into a single unified specification in the [spec](https://github.com/WebAssembly/spec)
- repo
-* propose a new charter for a W3C WebAssembly Working Group
-* graduate the [WebAssembly LLVM backend](https://github.com/llvm/llvm-project/tree/master/llvm/test/CodeGen/WebAssembly) from experimental to stable (and update Emscripten)
-* prototype additional WebAssembly integration into browser developer tools
-* Start work on [post-MVP features](/docs/future-features/)
-
-## Changes Since the Browser Preview
-
-- The [binary version](/docs/binary-encoding/#high-level-structure)
- of WebAssembly has been frozen at `0x1` (from this point forward
- all new features will be added in a backwards-compatible manner,
- and be detected through feature-testing). To update your
- WebAssembly modules, upgrade to the latest version of Emscripten
- and recompile.
-
-## Past Milestones
-
-- April 2015 - [WebAssembly Community Group](https://www.w3.org/community/webassembly) started
-- June 2015 - The first [public announcement](https://github.com/WebAssembly/design/issues/150) [[1](https://blogs.msdn.microsoft.com/mikeholman/2015/06/17/working-on-the-future-of-compile-to-web-applications/)][[2](https://blog.mozilla.org/luke/2015/06/17/webassembly/)]
-- March 2016 - Definition of core feature with multiple interoperable implementations [[1](https://blogs.windows.com/msedgedev/2016/03/15/previewing-webassembly-experiments)] [[2](https://v8project.blogspot.com/2016/03/experimental-support-for-webassembly.html)] [[3](https://hacks.mozilla.org/2016/03/a-webassembly-milestone/)]
-- October 2016 - Browser Preview announced with multiple interoperable implementations [[1](https://blogs.windows.com/msedgedev/2016/10/31/webassembly-browser-preview/)] [[2](https://v8project.blogspot.com/2016/10/webassembly-browser-preview.html)] [[3](https://hacks.mozilla.org/2016/10/webassembly-browser-preview)]
-- February 2017 - Official [logo](https://github.com/WebAssembly/design/issues/980) chosen
-- March 2017 - [Cross-browser consensus](https://lists.w3.org/Archives/Public/public-webassembly/2017Feb/0002.html) and end of Browser Preview
+To detect supported features at runtime from JavaScript, check out the [`wasm-feature-detect` library](https://github.com/GoogleChromeLabs/wasm-feature-detect), which powers the "Your browser" column above.