From a89e5c7fdd82445e5d6e9c74f27f949d4330672b Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Tue, 9 Jun 2020 01:35:24 +0100 Subject: [PATCH 1/6] Add caniuse-like feature table Update roadmap page to describe current status of things, links to the standardization process and current list of proposals, as well as a caniuse-like table for implemented features across popular engines. --- _layouts/default.html | 2 +- css/custom.css | 26 ++++++++- docs/css/custom.css | 26 ++++++++- docs/features.json | 123 ++++++++++++++++++++++++++++++++++++++++ docs/images/bca.png | Bin 0 -> 8526 bytes docs/images/wasmer.png | Bin 0 -> 17230 bytes docs/index.html | 2 +- docs/roadmap/index.html | 116 +++++++++++++++++++++---------------- docs/specs/index.html | 2 +- features.json | 123 ++++++++++++++++++++++++++++++++++++++++ images/bca.png | Bin 0 -> 8526 bytes images/wasmer.png | Bin 0 -> 17230 bytes roadmap.md | 93 +++++++++++++++++++----------- 13 files changed, 426 insertions(+), 87 deletions(-) create mode 100644 docs/features.json create mode 100644 docs/images/bca.png create mode 100644 docs/images/wasmer.png create mode 100644 features.json create mode 100644 images/bca.png create mode 100644 images/wasmer.png diff --git a/_layouts/default.html b/_layouts/default.html index 193a5dad..b7d4b960 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,6 +1,6 @@ {% include header.html %}
-
+
{{content}}
diff --git a/css/custom.css b/css/custom.css index 441ee74c..edda6dbf 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,27 @@ pre code { pre code::before, pre code::after { content: normal; } + +#feature-support { + white-space: nowrap; + cursor: default; +} + +#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..edda6dbf 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,27 @@ pre code { pre code::before, pre code::after { content: normal; } + +#feature-support { + white-space: nowrap; + cursor: default; +} + +#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..4346d1df --- /dev/null +++ b/docs/features.json @@ -0,0 +1,123 @@ +{ + "features": { + "bigInt": { + "description": "JavaScript BigInt to WebAssembly i64 integration", + "url": "https://github.com/WebAssembly/JS-BigInt-integration", + "phase": 3 + }, + "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", + "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", + "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", + "features": { + "multiValue": true, + "mutableGlobals": true + } + }, + "Wasmtime": { + "url": "https://wasmtime.dev/", + "logo": "/images/bca.png", + "features": { + "bigInt": true, + "bulkMemory": "--enable-bulk-memory", + "multiValue": "--enable-multi-value", + "mutableGlobals": true, + "saturatedFloatToInt": true, + "signExtensions": true, + "simd": "--enable-simd" + } + }, + "Wasmer": { + "url": "https://wasmer.io/", + "logo": "/images/wasmer.png", + "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 0000000000000000000000000000000000000000..9baadb3627038f77dd05f64e116d0bbc8a6cee12 GIT binary patch literal 8526 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 MGz#LCqDJ5T4`U-T;Q#;t literal 0 HcmV?d00001 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..f6920e51 100644 --- a/docs/roadmap/index.html +++ b/docs/roadmap/index.html @@ -43,56 +43,76 @@
-
+

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, 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.

+ +

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