From 9ad9d23290fa06b570cb692dd41badd2089eddcb Mon Sep 17 00:00:00 2001 From: Eric Gregory Date: Wed, 26 Aug 2026 09:21:17 -0400 Subject: [PATCH 1/3] docs: correct stale references, document WASI 0.3.1, expand contribute Fixes six broken links: the Subgroup charter and the WASI contributing guide moved or were referenced with the wrong case, the io proposal directory no longer exists on main, the wasip2 README path is gone, and WAMR moved to wamr.dev. Corrects statements that the WASI 0.3.0 release made false: WASI 0.2 is no longer the most recent stable release, Wasmtime 46 has shipped rather than being forthcoming, and the Component Model Book migration guide is published rather than forthcoming. Syncs the active proposals tables with upstream Proposals.md: removes I/O, which is no longer an active proposal, and renames GFX to WebGPU. Adds the OCI registry requirement for Phase 2 entry and replaces the Phase 4 and 5 descriptions, which the Subgroup has left undetermined. Adds a WASI 0.3 patch releases table covering 0.3.0 and 0.3.1. Adds a Contributing to WASI section to the contribute page, adds the upstream process documents to resources, and removes the unused HomepageFeatures boilerplate component. --- docs/contribute.md | 17 ++++- docs/introduction.md | 4 +- docs/releases/index.md | 15 ++--- docs/releases/wasi-p1.md | 2 +- docs/releases/wasi-p2.md | 4 +- docs/releases/wasi-p3.md | 17 +++-- docs/resources.md | 5 +- src/components/HomepageFeatures/index.js | 64 ------------------- .../HomepageFeatures/styles.module.css | 11 ---- 9 files changed, 44 insertions(+), 95 deletions(-) delete mode 100644 src/components/HomepageFeatures/index.js delete mode 100644 src/components/HomepageFeatures/styles.module.css diff --git a/docs/contribute.md b/docs/contribute.md index 4aa8333..0f4ccff 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -2,10 +2,25 @@ title: "Contribute" sidebar_position: 6 --- + +## Contributing to this site This site is a community effort supported by volunteers through the Bytecode Alliance's Special Interest Group for Documentation. The **[Bytecode Alliance](https://bytecodealliance.org/)** is a community comprised of many individual contributors and 30+ companies involved in the WebAssembly space. The Bytecode Alliance is focused on creating a shared implementation of standards produced by the WebAssembly CG, the WASI Subgroup, and other standardization bodies. We believe that standards are best informed by implementation. To enable this, we bring together a wide range of different use cases. Many of our contributors are also active in standardization and use this implementation experience and feedback to inform their work. -If you would like to get involved, you can find us on the SIG Documentation channel of the [Bytecode Alliance's Zulip server](https://bytecodealliance.zulipchat.com/) or [contribute on the WASI.dev GitHub repo](https://github.com/bytecodealliance/wasi.dev). \ No newline at end of file +If you would like to get involved, you can find us on the SIG Documentation channel of the [Bytecode Alliance's Zulip server](https://bytecodealliance.zulipchat.com/) or [contribute on the WASI.dev GitHub repo](https://github.com/bytecodealliance/wasi.dev). + +## Contributing to WASI + +WASI itself is developed by the **WASI Subgroup** of the W3C WebAssembly Community Group. Discussion happens in [GitHub issues](https://github.com/WebAssembly/WASI/issues) and [pull requests](https://github.com/WebAssembly/WASI/pulls) on the WASI repository, and in [bi-weekly Subgroup meetings](https://github.com/WebAssembly/meetings/tree/main/wasi) that anyone may attend. + +To take part: + +* **[Contributing to WASI](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md)** describes the phase process, what each phase requires, and how to propose a new API. +* **[The WASI Subgroup charter](https://github.com/WebAssembly/WASI/blob/main/docs/Charter.md)** defines what is in scope for WASI. +* **[Proposals](https://github.com/WebAssembly/WASI/blob/main/docs/Proposals.md)** lists every active proposal and its champions. +* **[`wasi-testsuite`](https://github.com/WebAssembly/wasi-testsuite)** takes contributions of new test cases and runtime adapters. + +For an overview of how proposals advance and become part of a release, see the [Releases](./releases/) page. diff --git a/docs/introduction.md b/docs/introduction.md index d9bb2b4..a4929b2 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -12,7 +12,7 @@ To date, WASI has seen three milestone releases: **0.1**, **0.2**, and **0.3**. ## Who are we? -WASI is an open standard under active development by the [**WASI Subgroup**](https://github.com/WebAssembly/WASI/blob/main/Charter.md) in the **W3C WebAssembly Community Group**. Discussions happen in [GitHub issues](https://github.com/WebAssembly/WASI/issues), [pull requests](https://github.com/WebAssembly/WASI/pulls), and [bi-weekly Zoom meetings](https://github.com/WebAssembly/meetings/tree/main/wasi). +WASI is an open standard under active development by the [**WASI Subgroup**](https://github.com/WebAssembly/WASI/blob/main/docs/Charter.md) in the **W3C WebAssembly Community Group**. Discussions happen in [GitHub issues](https://github.com/WebAssembly/WASI/issues), [pull requests](https://github.com/WebAssembly/WASI/pulls), and [bi-weekly Zoom meetings](https://github.com/WebAssembly/meetings/tree/main/wasi). ## Who are you? @@ -20,7 +20,7 @@ WASI and Wasm are tools for any type of software developer: whether you're writi ## How to get started -There are many different runtimes that support WASI including [Wasmtime](https://wasmtime.dev/), [WAMR](https://bytecodealliance.github.io/wamr.dev/), [WasmEdge](https://wasmedge.org/), [wazero](https://wazero.io/), [Wasmer](https://wasmer.io/), [wasmi](https://github.com/wasmi-labs/wasmi), [wasm3](https://github.com/wasm3/wasm3), [jco](https://github.com/bytecodealliance/jco), [pywasm](https://github.com/mohanson/pywasm) and [zwasm](https://github.com/zwasm/zwasm). Many of these runtimes have different areas of focus (i.e., IoT, embedded devices, and edge for WAMR, server-side and non-web embeddings with components for Wasmtime, and running in JS environments and browsers for Jco). The introductory documentation for each is a great place to start. +There are many different runtimes that support WASI including [Wasmtime](https://wasmtime.dev/), [WAMR](https://wamr.dev/), [WasmEdge](https://wasmedge.org/), [wazero](https://wazero.io/), [Wasmer](https://wasmer.io/), [wasmi](https://github.com/wasmi-labs/wasmi), [wasm3](https://github.com/wasm3/wasm3), [jco](https://github.com/bytecodealliance/jco), [pywasm](https://github.com/mohanson/pywasm) and [zwasm](https://github.com/zwasm/zwasm). Many of these runtimes have different areas of focus (i.e., IoT, embedded devices, and edge for WAMR, server-side and non-web embeddings with components for Wasmtime, and running in JS environments and browsers for Jco). The introductory documentation for each is a great place to start. WASI can be implemented by both core Wasm modules and applications built according to the **Component Model**, a specification for Wasm applications that are interoperable and composable. You can learn more about components in the Bytecode Alliance's **[WebAssembly Component Model](https://component-model.bytecodealliance.org/)** documentation. diff --git a/docs/releases/index.md b/docs/releases/index.md index a490802..246f184 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -25,18 +25,17 @@ For more information on release timelines and plans, see the [Roadmap](../roadma ## Proposals for the standard -All WASI APIs are **proposals** for standardization by the WASI Subgroup. The API proposals in WASI 0.1 and 0.2 met implementation and portability criteria for inclusion at the time of those releases. A proposal advances through the following stages as defined in the [WASI Subgroup's Phase Process](https://github.com/WebAssembly/WASI/blob/main/Contributing.md#the-phase-process): +All WASI APIs are **proposals** for standardization by the WASI Subgroup. The API proposals in WASI 0.1 and 0.2 met implementation and portability criteria for inclusion at the time of those releases. A proposal advances through the following stages as defined in the [WASI Subgroup's Phase Process](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md#the-phase-process): * **Phase 0 - Pre-proposal**: The pre-proposal phase serves as a way to share ideas. At this phase, the WASI subgroup has not yet decided that the pre-proposal is in scope for WASI, and there may be overlap between pre-proposals. * **Phase 1 - Feature proposal**: In this phase, the proposal is added to the proposal list and a new fork of the spec repo is created. -* **Phase 2 - Feature description available**: During this phase, one or more implementations prototype the feature and a test suite is added. +* **Phase 2 - Feature description available**: To enter this phase, a proposal documents its portability criteria and publishes its WIT description to an OCI registry. During this phase, one or more implementations prototype the feature and a test suite is added. * **Phase 3 - Implementation phase**: At this phase, project champions create releases following the conventions of semantic versioning (semver). -* **Phase 4 - Standardize the feature:** At this point, the feature is fully handed off to the Working Group, where edge cases are considered and only minor changes occur. -* **Phase 5 - The feature is standardized**: Once the Working Group reaches consensus that the feature is complete, editors perform final editorial tweaks and merge the feature into the main branch of the primary spec repo. +* **Phases 4 and 5 - Standardization**: Phases 4 and 5 are where a feature is finished and standardized. As WASI matures, the WASI Subgroup will coordinate with the WebAssembly Community Group and the WebAssembly Working Group to define this process. Proposals are first made to the **WASI Subgroup** of the [WebAssembly Community Group](https://www.w3.org/community/webassembly/). (See the [WASI Subgroup's meeting schedule](https://github.com/WebAssembly/meetings/tree/main/wasi).) -All active WASI proposals can be found on the [WASI GitHub repository](https://github.com/WebAssembly/WASI/blob/main/docs/Proposals.md). See the [Contributing to WASI page](https://github.com/WebAssembly/WASI/blob/main/Contributing.md) for information about submitting a new proposal. +All active WASI proposals can be found on the [WASI GitHub repository](https://github.com/WebAssembly/WASI/blob/main/docs/Proposals.md). See the [Contributing to WASI page](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md) for information about submitting a new proposal. ## WASI test suite @@ -58,7 +57,6 @@ WASI runtimes are tested against a shared test suite, [`wasi-testsuite`](https:/ | API Proposal | Description | Repository | | ----------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------- | -| [I/O][wasi-io] | Streams, pollables, and async wait primitives; removed in WASI 0.3 | https://github.com/WebAssembly/WASI/tree/main/proposals/io | | [Clocks][wasi-clocks] | Wall-clock and monotonic-clock access | https://github.com/WebAssembly/WASI/tree/main/proposals/clocks | | [Random][wasi-random] | Cryptographically secure and insecure random byte generation | https://github.com/WebAssembly/WASI/tree/main/proposals/random | | [Filesystem][wasi-filesystem] | File and directory operations on preopened directories | https://github.com/WebAssembly/WASI/tree/main/proposals/filesystem | @@ -76,7 +74,7 @@ WASI runtimes are tested against a shared test suite, [`wasi-testsuite`](https:/ | [Key-value Store][wasi-kv-store] | CRUD operations against a key-value backend | https://github.com/WebAssembly/wasi-kv-store | | [Machine Learning (wasi-nn)][wasi-nn] | Inference against pre-trained ML models | https://github.com/WebAssembly/wasi-nn | | [Runtime Config][wasi-runtime-config] | Read-only access to host-provided configuration values | https://github.com/WebAssembly/wasi-runtime-config | -| [GFX][wasi-gfx] | Cross-platform graphics primitives for surfaces and frames | https://github.com/WebAssembly/wasi-gfx | +| [WebGPU][wasi-webgpu] | Cross-platform graphics primitives for surfaces and frames | https://github.com/WebAssembly/wasi-webgpu | | [Messaging][wasi-messaging] | Publish/subscribe and request/reply messaging primitives | https://github.com/WebAssembly/wasi-messaging | ### Phase 1 - Feature Proposal (CG) @@ -119,7 +117,6 @@ Proposals remain in the 0.x semver range until they reach Phase 5 and are fully [wasi-gpio]: https://github.com/WebAssembly/wasi-gpio [wasi-http]: https://github.com/WebAssembly/WASI/tree/main/proposals/http [wasi-i2c]: https://github.com/WebAssembly/wasi-i2c -[wasi-io]: https://github.com/WebAssembly/WASI/tree/main/proposals/io [wasi-kv-store]: https://github.com/WebAssembly/wasi-kv-store [wasi-logging]: https://github.com/WebAssembly/wasi-logging [wasi-messaging]: https://github.com/WebAssembly/wasi-messaging @@ -139,5 +136,5 @@ Proposals remain in the 0.x semver range until they reach Phase 5 and are fully [wasi-tls]: https://github.com/WebAssembly/wasi-tls [wasi-url]: https://github.com/WebAssembly/wasi-url [wasi-usb]: https://github.com/WebAssembly/wasi-usb -[wasi-gfx]: https://github.com/WebAssembly/wasi-gfx +[wasi-webgpu]: https://github.com/WebAssembly/wasi-webgpu [wasi-cli]: https://github.com/WebAssembly/WASI/tree/main/proposals/cli diff --git a/docs/releases/wasi-p1.md b/docs/releases/wasi-p1.md index 60542f8..0d88022 100644 --- a/docs/releases/wasi-p1.md +++ b/docs/releases/wasi-p1.md @@ -40,7 +40,7 @@ Compared to WASI 0.2 and later releases, WASI 0.1 has several limitations: ## Runtime support -WASI 0.1 has the broadest runtime support of any WASI version: [Wasmtime](https://wasmtime.dev/), [Wasmer](https://wasmer.io/), [WasmEdge](https://wasmedge.org/), [WAMR](https://bytecodealliance.github.io/wamr.dev/), [wazero](https://wazero.io/), [wasmi](https://github.com/wasmi-labs/wasmi), [wasm3](https://github.com/wasm3/wasm3), Node.js (via the [WASI module](https://nodejs.org/api/wasi.html)), and Deno all provide WASI 0.1 support. +WASI 0.1 has the broadest runtime support of any WASI version: [Wasmtime](https://wasmtime.dev/), [Wasmer](https://wasmer.io/), [WasmEdge](https://wasmedge.org/), [WAMR](https://wamr.dev/), [wazero](https://wazero.io/), [wasmi](https://github.com/wasmi-labs/wasmi), [wasm3](https://github.com/wasm3/wasm3), Node.js (via the [WASI module](https://nodejs.org/api/wasi.html)), and Deno all provide WASI 0.1 support. ## Further reading diff --git a/docs/releases/wasi-p2.md b/docs/releases/wasi-p2.md index 0ec3e73..eaf44e4 100644 --- a/docs/releases/wasi-p2.md +++ b/docs/releases/wasi-p2.md @@ -3,7 +3,7 @@ title: "WASI 0.2" sidebar_position: 2 --- -WASI 0.2 is the most recent stable WASI release. It marked the full rebase of WASI onto the [Component Model](https://component-model.bytecodealliance.org/) and the [WebAssembly Interface Type (WIT)](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md) Interface Description Language, replacing the C-like WITX IDL used in WASI 0.1. +WASI 0.2 is a stable WASI release, superseded by [WASI 0.3](wasi-p3.md) and still widely supported. It marked the full rebase of WASI onto the [Component Model](https://component-model.bytecodealliance.org/) and the [WebAssembly Interface Type (WIT)](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md) Interface Description Language, replacing the C-like WITX IDL used in WASI 0.1. ## Overview @@ -39,7 +39,7 @@ You can explore the types and definitions for a given WASI 0.2 API in its WIT fi ## Runtime support -WASI 0.2 portability criteria were met by [Wasmtime](https://wasmtime.dev/) and [jco](https://github.com/bytecodealliance/jco), both of which passed the WASI 0.2 test suite at the time of certification. Other runtimes including [WAMR](https://bytecodealliance.github.io/wamr.dev/) and [WasmEdge](https://wasmedge.org/) have varying levels of WASI 0.2 support. +WASI 0.2 portability criteria were met by [Wasmtime](https://wasmtime.dev/) and [jco](https://github.com/bytecodealliance/jco), both of which passed the WASI 0.2 test suite at the time of certification. Other runtimes including [WAMR](https://wamr.dev/) and [WasmEdge](https://wasmedge.org/) have varying levels of WASI 0.2 support. ## Patch releases diff --git a/docs/releases/wasi-p3.md b/docs/releases/wasi-p3.md index a578788..ecb3323 100644 --- a/docs/releases/wasi-p3.md +++ b/docs/releases/wasi-p3.md @@ -3,7 +3,7 @@ title: "WASI 0.3" sidebar_position: 1 --- -WASI 0.3 brings **native async** to WebAssembly components, moving asynchronous functionality that previously lived in the `wasi:io` package down into the Component Model itself. WASI 0.3.0 was released on June 11, 2026. This page provides an overview of what changed in WASI 0.3 and why. +WASI 0.3 brings **native async** to WebAssembly components, moving asynchronous functionality that previously lived in the `wasi:io` package down into the Component Model itself. WASI 0.3.0 was released on June 11, 2026, followed by patch releases every two months. This page provides an overview of what changed in WASI 0.3 and why. ## Why native async? @@ -189,10 +189,10 @@ The `len` parameter is renamed to `max-len` on `get-random-bytes` and `get-insec WASI 0.3 support is available in: -- **[Wasmtime](https://wasmtime.dev/)** Wasmtime 45 runs the latest release candidate today, and Wasmtime 46 will ship WASI 0.3.0 with Component Model Async enabled by default. +- **[Wasmtime](https://wasmtime.dev/)**, which supports WASI 0.3.0 by default from Wasmtime 46 onward, with the `component-model-async` feature enabled by default - **[jco](https://github.com/bytecodealliance/jco)** for JavaScript environments -Wasmtime v44 added initial `wasi:tls@0.3.0-draft` support. From v44 onward, `wasmtime serve` can serve 0.3 components when invoked with `-Sp3 -W component-model-async=y`, automatically falling back to the WASI 0.2 `wasi:http/proxy` world for components that don't export the 0.3 `service` world. +Wasmtime v44 added initial `wasi:tls@0.3.0-draft` support. From v44 onward, `wasmtime serve` serves both WASI 0.3 and WASI 0.2 components from the same binary, falling back to the WASI 0.2 `wasi:http/proxy` world for components that don't export the 0.3 `service` world. On v44 and v45 this requires `-Sp3 -W component-model-async=y`. Runtimes verify WASI 0.3 conformance against the shared [`wasi-testsuite`](https://github.com/WebAssembly/wasi-testsuite). WASI 0.3 coverage is now running on Wasmtime and jco across Linux, macOS, and Windows. @@ -207,7 +207,16 @@ To migrate: - Switching to the appropriate world: `wasi:cli/command` for CLI programs, `wasi:http/service` for HTTP servers, `wasi:http/middleware` for middleware components. - Updating `start-foo` / `finish-foo` call sites to use the corresponding `async func` declarations. -A detailed 0.2-to-0.3 migration guide with working examples is forthcoming in the [Component Model documentation](https://component-model.bytecodealliance.org/). +For a detailed migration guide with working examples, see [Migrating from WASI 0.2 to WASI 0.3](https://component-model.bytecodealliance.org/design/migrating-to-p3.html) in the Component Model documentation. + +## Patch releases + +WASI 0.3 patch releases ship every two months on the release train. See the [Roadmap](../roadmap.md) for the schedule. + +| Version | Changelog | +| ---------------------------------------------------------------- | --------- | +| [0.3.1](https://github.com/WebAssembly/WASI/releases/tag/v0.3.1) | Released August 11, 2026. Adopts the Component Model `map` type and the `implements` annotation, which WASI interfaces may use from this release onward. Runtimes and toolchains must support both to be compatible with WASI 0.3.1 and later. | +| [0.3.0](https://github.com/WebAssembly/WASI/releases/tag/v0.3.0) | Released June 11, 2026. The initial WASI 0.3 release, rebasing WASI onto the Component Model's native async primitives. | ## Further reading diff --git a/docs/resources.md b/docs/resources.md index 9ada30d..521efac 100644 --- a/docs/resources.md +++ b/docs/resources.md @@ -9,6 +9,9 @@ The following resources are helpful for those wishing to learn more about WASI a * **[The WASI GitHub repository](https://github.com/WebAssembly/WASI)** * **[`wasi-testsuite`](https://github.com/WebAssembly/wasi-testsuite)**: shared test suite and runner for WASI runtimes, with adapters for the major implementations and tests covering WASI 0.1 and WASI 0.3. +* **[Contributing to WASI](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md)**: the phase process, phase entry requirements, and how to submit a proposal. +* **[Release](https://github.com/WebAssembly/WASI/blob/main/docs/Release.md)**: the WASI release train and the release schedule through 2027. +* **[Component Model features in WASI](https://github.com/WebAssembly/WASI/blob/main/docs/ComponentModelFeatures.md)**: which Component Model features each WASI version requires, and how the WASI Subgroup adopts them. ## WASI 0.3 @@ -16,7 +19,7 @@ The following resources are helpful for those wishing to learn more about WASI a ## WASI 0.2 -* **[WASI 0.2 GitHub repository](https://github.com/WebAssembly/WASI/blob/main/wasip2/README.md)** +* **[WASI 0.2 GitHub repository](https://github.com/WebAssembly/WASI/tree/wasi-0.2)** ## The Component Model diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js deleted file mode 100644 index acc7621..0000000 --- a/src/components/HomepageFeatures/index.js +++ /dev/null @@ -1,64 +0,0 @@ -import clsx from 'clsx'; -import Heading from '@theme/Heading'; -import styles from './styles.module.css'; - -const FeatureList = [ - { - title: 'Easy to Use', - Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, - description: ( - <> - Docusaurus was designed from the ground up to be easily installed and - used to get your website up and running quickly. - - ), - }, - { - title: 'Focus on What Matters', - Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, - description: ( - <> - Docusaurus lets you focus on your docs, and we'll do the chores. Go - ahead and move your docs into the docs directory. - - ), - }, - { - title: 'Powered by React', - Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, - description: ( - <> - Extend or customize your website layout by reusing React. Docusaurus can - be extended while reusing the same header and footer. - - ), - }, -]; - -function Feature({Svg, title, description}) { - return ( -
-
- -
-
- {title} -

{description}

-
-
- ); -} - -export default function HomepageFeatures() { - return ( -
-
-
- {FeatureList.map((props, idx) => ( - - ))} -
-
-
- ); -} diff --git a/src/components/HomepageFeatures/styles.module.css b/src/components/HomepageFeatures/styles.module.css deleted file mode 100644 index b248eb2..0000000 --- a/src/components/HomepageFeatures/styles.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} - -.featureSvg { - height: 200px; - width: 200px; -} From c4fc793b64e1f535fd512aa8b5fc7cf4d45e10d8 Mon Sep 17 00:00:00 2001 From: Eric Gregory Date: Wed, 26 Aug 2026 10:00:00 -0400 Subject: [PATCH 2/3] docs: apply review corrections to the accuracy refresh Corrects the Wasmtime runtime support paragraph. The previous text dated the wasmtime serve dual-world fallback to v44, when it has been present since v41, and implied that v44 and v45 run released WASI 0.3.0 when they vendor the 0.3.0-rc-2026-03-15 snapshot. Wasmtime 46 is the floor for released 0.3.0. Adds external-id to the WASI 0.3.1 changelog entry. The gate adopted at the August 6 meeting covers implements and external-id together, so the entry understated what a 0.3.1 runtime must implement. Hoists the 0.3.1 implementation requirement out of the changelog cell into the runtime support section, where implementers land, and links both to the Component Model features section. Corrects the claim that Subgroup meetings are open to anyone. They are open to W3C WebAssembly Community Group members, which anyone can join. Retitles the phases 4 and 5 bullet to match upstream, which leaves the process to be determined, and collapses the two empty proposal tables that restated the retired per-phase descriptions. Restores the other Phase 2 entry criteria, corrects the Phase 3 heading to CG + WG, and refreshes the WebGPU description, which described the old wasi-gfx umbrella rather than the current package. --- docs/contribute.md | 6 +++--- docs/releases/index.md | 19 ++++++------------- docs/releases/wasi-p2.md | 2 +- docs/releases/wasi-p3.md | 12 +++++++----- docs/resources.md | 4 ++-- 5 files changed, 19 insertions(+), 24 deletions(-) diff --git a/docs/contribute.md b/docs/contribute.md index 0f4ccff..0060f97 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -14,13 +14,13 @@ If you would like to get involved, you can find us on the SIG Documentation chan ## Contributing to WASI -WASI itself is developed by the **WASI Subgroup** of the W3C WebAssembly Community Group. Discussion happens in [GitHub issues](https://github.com/WebAssembly/WASI/issues) and [pull requests](https://github.com/WebAssembly/WASI/pulls) on the WASI repository, and in [bi-weekly Subgroup meetings](https://github.com/WebAssembly/meetings/tree/main/wasi) that anyone may attend. +WASI itself is developed in the open by the **WASI Subgroup**, in [GitHub issues](https://github.com/WebAssembly/WASI/issues) and [pull requests](https://github.com/WebAssembly/WASI/pulls) on the WASI repository and in [Subgroup meetings](https://github.com/WebAssembly/meetings/tree/main/wasi) held every two weeks. Meetings are open to members of the W3C WebAssembly Community Group, which anyone can join. -To take part: +Start with these documents: * **[Contributing to WASI](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md)** describes the phase process, what each phase requires, and how to propose a new API. * **[The WASI Subgroup charter](https://github.com/WebAssembly/WASI/blob/main/docs/Charter.md)** defines what is in scope for WASI. * **[Proposals](https://github.com/WebAssembly/WASI/blob/main/docs/Proposals.md)** lists every active proposal and its champions. * **[`wasi-testsuite`](https://github.com/WebAssembly/wasi-testsuite)** takes contributions of new test cases and runtime adapters. -For an overview of how proposals advance and become part of a release, see the [Releases](./releases/) page. +For an overview of how proposals advance and become part of a release, see the [Releases](./releases/index.md) page. diff --git a/docs/releases/index.md b/docs/releases/index.md index 246f184..9713478 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -29,9 +29,9 @@ All WASI APIs are **proposals** for standardization by the WASI Subgroup. The AP * **Phase 0 - Pre-proposal**: The pre-proposal phase serves as a way to share ideas. At this phase, the WASI subgroup has not yet decided that the pre-proposal is in scope for WASI, and there may be overlap between pre-proposals. * **Phase 1 - Feature proposal**: In this phase, the proposal is added to the proposal list and a new fork of the spec repo is created. -* **Phase 2 - Feature description available**: To enter this phase, a proposal documents its portability criteria and publishes its WIT description to an OCI registry. During this phase, one or more implementations prototype the feature and a test suite is added. +* **Phase 2 - Feature description available**: During this phase, one or more implementations prototype the feature and a test suite is added. Entry requires documented portability criteria and a WIT description published to an OCI registry, among other criteria described in the [phase process](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md#the-phase-process). * **Phase 3 - Implementation phase**: At this phase, project champions create releases following the conventions of semantic versioning (semver). -* **Phases 4 and 5 - Standardization**: Phases 4 and 5 are where a feature is finished and standardized. As WASI matures, the WASI Subgroup will coordinate with the WebAssembly Community Group and the WebAssembly Working Group to define this process. +* **Phases 4 and 5 - To be determined**: These phases are where a feature is finished and standardized. As WASI matures, the WASI Subgroup will coordinate with the WebAssembly Community Group and the WebAssembly Working Group to define this process. Proposals are first made to the **WASI Subgroup** of the [WebAssembly Community Group](https://www.w3.org/community/webassembly/). (See the [WASI Subgroup's meeting schedule](https://github.com/WebAssembly/meetings/tree/main/wasi).) @@ -43,17 +43,11 @@ WASI runtimes are tested against a shared test suite, [`wasi-testsuite`](https:/ ## Active proposals -### Phase 5 - The Feature is Standardized (WG) +### Phases 4 and 5 - To be determined (WG) -| API Proposal | Description | Repository | -| ------------ | ----------- | ---------- | +No proposals have reached these phases yet. -### Phase 4 - Standardize the Feature (WG) - -| API Proposal | Description | Repository | -| ------------ | ----------- | ---------- | - -### Phase 3 - Implementation Phase (SG) +### Phase 3 - Implementation Phase (CG + WG) | API Proposal | Description | Repository | | ----------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------- | @@ -74,7 +68,7 @@ WASI runtimes are tested against a shared test suite, [`wasi-testsuite`](https:/ | [Key-value Store][wasi-kv-store] | CRUD operations against a key-value backend | https://github.com/WebAssembly/wasi-kv-store | | [Machine Learning (wasi-nn)][wasi-nn] | Inference against pre-trained ML models | https://github.com/WebAssembly/wasi-nn | | [Runtime Config][wasi-runtime-config] | Read-only access to host-provided configuration values | https://github.com/WebAssembly/wasi-runtime-config | -| [WebGPU][wasi-webgpu] | Cross-platform graphics primitives for surfaces and frames | https://github.com/WebAssembly/wasi-webgpu | +| [WebGPU][wasi-webgpu] | Access to the WebGPU API for GPU rendering and compute | https://github.com/WebAssembly/wasi-webgpu | | [Messaging][wasi-messaging] | Publish/subscribe and request/reply messaging primitives | https://github.com/WebAssembly/wasi-messaging | ### Phase 1 - Feature Proposal (CG) @@ -111,7 +105,6 @@ Proposals remain in the 0.x semver range until they reach Phase 5 and are fully [wasi-blob-store]: https://github.com/WebAssembly/wasi-blob-store [wasi-clocks]: https://github.com/WebAssembly/WASI/tree/main/proposals/clocks [wasi-crypto]: https://github.com/WebAssembly/wasi-crypto -[wasi-data]: https://github.com/singlestore-labs/wasi-data [wasi-distributed-lock-service]: https://github.com/WebAssembly/wasi-distributed-lock-service [wasi-filesystem]: https://github.com/WebAssembly/WASI/tree/main/proposals/filesystem [wasi-gpio]: https://github.com/WebAssembly/wasi-gpio diff --git a/docs/releases/wasi-p2.md b/docs/releases/wasi-p2.md index eaf44e4..1e017f5 100644 --- a/docs/releases/wasi-p2.md +++ b/docs/releases/wasi-p2.md @@ -3,7 +3,7 @@ title: "WASI 0.2" sidebar_position: 2 --- -WASI 0.2 is a stable WASI release, superseded by [WASI 0.3](wasi-p3.md) and still widely supported. It marked the full rebase of WASI onto the [Component Model](https://component-model.bytecodealliance.org/) and the [WebAssembly Interface Type (WIT)](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md) Interface Description Language, replacing the C-like WITX IDL used in WASI 0.1. +WASI 0.2 is a stable release, superseded by [WASI 0.3](wasi-p3.md) but still widely supported. It marked the full rebase of WASI onto the [Component Model](https://component-model.bytecodealliance.org/) and the [WebAssembly Interface Type (WIT)](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md) Interface Description Language, replacing the C-like WITX IDL used in WASI 0.1. ## Overview diff --git a/docs/releases/wasi-p3.md b/docs/releases/wasi-p3.md index ecb3323..be1c67a 100644 --- a/docs/releases/wasi-p3.md +++ b/docs/releases/wasi-p3.md @@ -3,7 +3,7 @@ title: "WASI 0.3" sidebar_position: 1 --- -WASI 0.3 brings **native async** to WebAssembly components, moving asynchronous functionality that previously lived in the `wasi:io` package down into the Component Model itself. WASI 0.3.0 was released on June 11, 2026, followed by patch releases every two months. This page provides an overview of what changed in WASI 0.3 and why. +WASI 0.3 brings **native async** to WebAssembly components, moving asynchronous functionality that previously lived in the `wasi:io` package down into the Component Model itself. WASI 0.3.0 was released on June 11, 2026. This page provides an overview of what changed in WASI 0.3 and why. ## Why native async? @@ -189,10 +189,12 @@ The `len` parameter is renamed to `max-len` on `get-random-bytes` and `get-insec WASI 0.3 support is available in: -- **[Wasmtime](https://wasmtime.dev/)**, which supports WASI 0.3.0 by default from Wasmtime 46 onward, with the `component-model-async` feature enabled by default +- **[Wasmtime](https://wasmtime.dev/)** 46 and later, which enables WASI 0.3 and the `component-model-async` feature by default - **[jco](https://github.com/bytecodealliance/jco)** for JavaScript environments -Wasmtime v44 added initial `wasi:tls@0.3.0-draft` support. From v44 onward, `wasmtime serve` serves both WASI 0.3 and WASI 0.2 components from the same binary, falling back to the WASI 0.2 `wasi:http/proxy` world for components that don't export the 0.3 `service` world. On v44 and v45 this requires `-Sp3 -W component-model-async=y`. +Wasmtime 46 is the first release to implement released WASI 0.3.0. Wasmtime 41 through 45 implement the `0.3.0-rc-2026-03-15` snapshot instead, and require `-Sp3 -W component-model-async=y`; Wasmtime 44 added initial `wasi:tls@0.3.0-draft` support on that snapshot. `wasmtime serve` accepts either a WASI 0.3 or a WASI 0.2 component, falling back to the WASI 0.2 `wasi:http/proxy` world for components that don't export the 0.3 `service` world. + +Implementing WASI 0.3.1 requires the Component Model features adopted in 0.3.0 (`async` lift and lower, `future`, and `stream`) plus those adopted in 0.3.1 (the `map` type and the `implements` and `external-id` annotations), on top of the ungated baseline. See [Component Model features](index.md#component-model-features) for the full list. Runtimes verify WASI 0.3 conformance against the shared [`wasi-testsuite`](https://github.com/WebAssembly/wasi-testsuite). WASI 0.3 coverage is now running on Wasmtime and jco across Linux, macOS, and Windows. @@ -211,11 +213,11 @@ For a detailed migration guide with working examples, see [Migrating from WASI 0 ## Patch releases -WASI 0.3 patch releases ship every two months on the release train. See the [Roadmap](../roadmap.md) for the schedule. +WASI 0.3 patch releases ship every two months on the release train. See the [Roadmap](../roadmap.md) for release timelines. | Version | Changelog | | ---------------------------------------------------------------- | --------- | -| [0.3.1](https://github.com/WebAssembly/WASI/releases/tag/v0.3.1) | Released August 11, 2026. Adopts the Component Model `map` type and the `implements` annotation, which WASI interfaces may use from this release onward. Runtimes and toolchains must support both to be compatible with WASI 0.3.1 and later. | +| [0.3.1](https://github.com/WebAssembly/WASI/releases/tag/v0.3.1) | Released August 11, 2026. Adopts the Component Model `map` type and the `implements` and `external-id` annotations. WASI interfaces may use them from this release onward. See [Component Model features](index.md#component-model-features) for what each WASI version requires. | | [0.3.0](https://github.com/WebAssembly/WASI/releases/tag/v0.3.0) | Released June 11, 2026. The initial WASI 0.3 release, rebasing WASI onto the Component Model's native async primitives. | ## Further reading diff --git a/docs/resources.md b/docs/resources.md index 521efac..138aa68 100644 --- a/docs/resources.md +++ b/docs/resources.md @@ -10,7 +10,7 @@ The following resources are helpful for those wishing to learn more about WASI a * **[The WASI GitHub repository](https://github.com/WebAssembly/WASI)** * **[`wasi-testsuite`](https://github.com/WebAssembly/wasi-testsuite)**: shared test suite and runner for WASI runtimes, with adapters for the major implementations and tests covering WASI 0.1 and WASI 0.3. * **[Contributing to WASI](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md)**: the phase process, phase entry requirements, and how to submit a proposal. -* **[Release](https://github.com/WebAssembly/WASI/blob/main/docs/Release.md)**: the WASI release train and the release schedule through 2027. +* **[The WASI release process](https://github.com/WebAssembly/WASI/blob/main/docs/Release.md)**: how the release train works, with the schedule through 2027. * **[Component Model features in WASI](https://github.com/WebAssembly/WASI/blob/main/docs/ComponentModelFeatures.md)**: which Component Model features each WASI version requires, and how the WASI Subgroup adopts them. ## WASI 0.3 @@ -19,7 +19,7 @@ The following resources are helpful for those wishing to learn more about WASI a ## WASI 0.2 -* **[WASI 0.2 GitHub repository](https://github.com/WebAssembly/WASI/tree/wasi-0.2)** +* **[WASI 0.2 documentation](https://github.com/WebAssembly/WASI/tree/wasi-0.2)** (the `wasi-0.2` branch) ## The Component Model From d33f93b684cc6cf848c009c4289baa76a73cd9fd Mon Sep 17 00:00:00 2001 From: Eric Gregory Date: Wed, 26 Aug 2026 10:21:37 -0400 Subject: [PATCH 3/3] docs: steer readers between WASI 0.2 and 0.3, and refresh 0.3 toolchains The releases table listed WASI 0.2 and 0.3 both as Stable with nothing to choose between them, while language support for 0.3 is still landing. Distinguishes the two, points readers at the Languages page, and notes that a WASI 0.3 runtime also runs WASI 0.2 components. Refreshes the 0.3 rows on the Languages page. Rust has WASI 0.3 bindings in the wasip3 crate, which tracks released 0.3.0 and works from either component target, so the previous "0.3 nightly" understated it. Describes the jco preview3-shim as experimental, which is how the package describes itself. --- docs/languages.md | 6 +++--- docs/releases/index.md | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/languages.md b/docs/languages.md index f19f5d4..9780a31 100644 --- a/docs/languages.md +++ b/docs/languages.md @@ -13,13 +13,13 @@ The languages below can be compiled to WebAssembly with WASI support. Some toolc | Go | Upstream Go (`GOOS=wasip1`) | Modules | 0.1 | Go Project | | | Go | [`go-modules`](https://github.com/bytecodealliance/go-modules); [TinyGo](https://tinygo.org/) | Components | 0.2 | Bytecode Alliance; TinyGo Project | | | Java | [GraalVM](https://www.graalvm.org/) | Planned | Planned | Oracle | Planned: see the [tracking issue](https://github.com/oracle/graal/issues/9762), [roadmap](https://github.com/orgs/oracle/projects/21/views/1), and [presentation](https://youtu.be/uefc2t9AmQI?t=1218) | -| JavaScript and TypeScript | [`jco`](https://github.com/bytecodealliance/jco) | Components | 0.2; 0.3 in progress | Bytecode Alliance | The `preview3-shim` package ships 0.3 host bindings; streams support landed, futures support following | +| JavaScript and TypeScript | [`jco`](https://github.com/bytecodealliance/jco) | Components | 0.2; 0.3 experimental | Bytecode Alliance | The [`preview3-shim`](https://www.npmjs.com/package/@bytecodealliance/preview3-shim) package provides experimental WASI 0.3 implementations for Node.js | | Kotlin | [Kotlin](https://kotlinlang.org/docs/wasm-wasi.html) | Modules | 0.2 | JetBrains | Implementation in progress; see the [tracking issue](https://youtrack.jetbrains.com/issue/KT-64568) | | MoonBit | MoonBit compiler with [`wit-bindgen` MoonBit backend](https://github.com/bytecodealliance/wit-bindgen/tree/main/crates/moonbit) | Modules; components via `wasm-tools component new` | 0.2 | MoonBit | | | Python | [`componentize-py`](https://github.com/bytecodealliance/componentize-py) | Components | 0.2 | Bytecode Alliance | | | Python | [`cpython`](https://snarky.ca/state-of-wasi-support-for-cpython-march-2024/) | Modules | 0.2 | Python | Implementation in progress | | Ruby | [`ruby.wasm`](https://github.com/ruby/ruby.wasm) | Modules | 0.2 | Ruby | Implementation in progress | -| Rust | [`wasm32-wasip2`](https://doc.rust-lang.org/rustc/platform-support/wasm32-wasip2.html) and [`wasm32-wasip3`](https://doc.rust-lang.org/nightly/rustc/platform-support/wasm32-wasip3.html) compiler targets | Modules and components | 0.1, 0.2; 0.3 nightly | Rust Project | `wasm32-wasip2` is Tier 2 on stable; `wasm32-wasip3` is Tier 3, nightly only. See the [0.2 introduction](https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets/) and [0.2 stabilization](https://blog.rust-lang.org/2024/11/26/wasip2-tier-2/) | +| Rust | [`wasm32-wasip2`](https://doc.rust-lang.org/rustc/platform-support/wasm32-wasip2.html) and [`wasm32-wasip3`](https://doc.rust-lang.org/nightly/rustc/platform-support/wasm32-wasip3.html) compiler targets | Modules and components | 0.1, 0.2, 0.3 | Rust Project | `wasm32-wasip2` is Tier 2 on stable; `wasm32-wasip3` is Tier 3, nightly only. The [`wasip3`](https://crates.io/crates/wasip3) crate provides WASI 0.3 bindings and works from either component target. See the [0.2 introduction](https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets/) and [0.2 stabilization](https://blog.rust-lang.org/2024/11/26/wasip2-tier-2/) | | Swift | [Swift](https://www.swift.org/) | Planned | Planned | Swift | Planned: see the [accepted roadmap vision](https://forums.swift.org/t/accepted-vision-a-vision-for-webassembly-support-in-swift/80332) | | Zig | `zig build-exe -target wasm32-wasi` | Modules | 0.1 | Zig | No first-party Zig component toolchain | @@ -27,7 +27,7 @@ The languages below can be compiled to WebAssembly with WASI support. Some toolc - **Modules vs components.** A Wasm **module** is a single binary in the core WebAssembly format and can use WASI 0.1. A **component** is built to the Component Model and can use WASI 0.2 or 0.3, gaining composability, cross-language interoperability, and richer interface types. See the [Releases](releases/index.md) and [Roadmap](roadmap.md) pages for more on the WASI releases. - **Adapting modules to components.** Several toolchains produce core modules today and wrap them into components using [`wasm-tools component new`](https://github.com/bytecodealliance/wasm-tools) with a 0.1-to-0.2 adapter. This is the path for C/C++ and MoonBit. -- **WASI 0.3 ecosystem state.** Broad language-level 0.3 support is still landing. The Rust `wasm32-wasip3` target is Tier 3 (nightly only). `jco` ships a `preview3-shim` package with streams support landed and futures support following. Other toolchains have not yet shipped 0.3 support. +- **WASI 0.3 ecosystem state.** Broad language-level 0.3 support is still landing. Rust has WASI 0.3 bindings in the [`wasip3`](https://crates.io/crates/wasip3) crate, usable from the stable Tier 2 `wasm32-wasip2` target or the nightly Tier 3 `wasm32-wasip3` target. `jco` ships an experimental `preview3-shim` for Node.js. Other toolchains have not yet shipped 0.3 support, so target WASI 0.2 with those. A WASI 0.3 runtime also runs WASI 0.2 components. - **Version pinning.** The Component Model defines [canonical interface names](https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md#-canonical-interface-name) so that components can link across compatible versions, but not all tools support this version-aware linking yet. Until they do, target the same version (`0.3.0`) across all WIT-aware tools. Mismatches surface as confusing `wrong type` errors at instantiation. ### Building guides diff --git a/docs/releases/index.md b/docs/releases/index.md index 9713478..15fa206 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -17,10 +17,12 @@ As you begin writing a Wasm application using WASI APIs, one of your first decis | Release | Status | Description | | ------- | ------ | ----------- | -| [WASI 0.3](wasi-p3.md) | Stable | Native async support with `async func`, `stream`, and `future` | -| [WASI 0.2](wasi-p2.md) | Stable | Component Model foundation with WIT interfaces, composability, and cross-language interoperability | +| [WASI 0.3](wasi-p3.md) | Stable, current | Native async support with `async func`, `stream`, and `future` | +| [WASI 0.2](wasi-p2.md) | Stable, superseded by 0.3 | Component Model foundation with WIT interfaces, composability, and cross-language interoperability | | [WASI 0.1](wasi-p1.md) | Legacy | POSIX-inspired module API with broad runtime support | +Target WASI 0.3 where your toolchain supports it. Rust and JavaScript have WASI 0.3 bindings today, and [Wasmtime](https://wasmtime.dev/) 46 and later runs WASI 0.3 components by default. Support in other toolchains is still landing, so check the [Languages](../languages.md) page first and target WASI 0.2 if your language is not there yet. A WASI 0.3 runtime also runs WASI 0.2 components, so choosing 0.2 today does not close off 0.3 later. + For more information on release timelines and plans, see the [Roadmap](../roadmap.md). ## Proposals for the standard