From 22f2898b84b2faa2081aeeda04bbffd343befd63 Mon Sep 17 00:00:00 2001 From: Eric Gregory Date: Wed, 26 Aug 2026 09:17:57 -0400 Subject: [PATCH 1/4] docs: document the release train and Component Model feature adoption Brings two WASI Subgroup process documents onto the site. Roadmap: corrects the point release cadence to the second Tuesday of every second month, notes the first Tuesday cadence the WASI 0.2 series ran on, and adds the scheduled release dates through WASI 0.3.9. Releases: adds a Component Model features section covering the adoption process, the cumulative implementation requirement, and the adoption record through WASI 0.3.1, including the map and implements features adopted at the August 6, 2026 Subgroup meeting. Sources: docs/Release.md and docs/ComponentModelFeatures.md in the WASI repository. --- docs/releases/index.md | 17 +++++++++++++++++ docs/roadmap.md | 23 ++++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/docs/releases/index.md b/docs/releases/index.md index a490802..26d87f6 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -42,6 +42,23 @@ All active WASI proposals can be found on the [WASI GitHub repository](https://g WASI runtimes are tested against a shared test suite, [`wasi-testsuite`](https://github.com/WebAssembly/wasi-testsuite), which exercises interfaces from WASI 0.1 and WASI 0.3 across runtime implementations. The repository includes a test runner with adapters for the major runtimes (Wasmtime, jco, WAMR, and others), and is the shared reference for verifying runtime conformance. +## Component Model features + +WASI APIs are defined in terms of the [Component Model](https://component-model.bytecodealliance.org/), which develops new WIT syntax, types, and Canonical ABI functionality behind [gated features](https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md#gated-features). A stable WASI API may depend on a gated feature only after the WASI Subgroup votes to adopt it, through a process that parallels the phase process above. + +Adoption is cumulative. Implementing a given WASI version requires the ungated Component Model features, plus every feature adopted in that version and in all earlier versions. Adoption does not mean that a WASI API uses the feature: runtimes and toolchains implementing that WASI version must support it either way. + +| WASI version | Gate | Feature | Adopted | +| ------------ | ---- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| 0.2.0 | None | The default ungated Component Model features | WASI 0.2 vote (predates this process) | +| 0.3.0 | πŸ”€ | `async` lift and lower, `future` and `stream` | WASI 0.3 vote (predates this process) | +| 0.3.1 | πŸ—ΊοΈ | The `map` type | [August 6, 2026](https://github.com/WebAssembly/meetings/blob/main/wasi/2026/WASI-08-06.md) | +| 0.3.1 | 🏷️ | `implements` and `external-id` annotations on plain-named interface imports and exports | [August 6, 2026](https://github.com/WebAssembly/meetings/blob/main/wasi/2026/WASI-08-06.md) | + +A feature becomes eligible for adoption once its design is complete and it has been implemented across multiple runtimes and toolchains, with the feedback from that use incorporated. Proposals may experiment with features that have not been adopted, but only in prerelease versions such as `0.3.0-rc-*`. Stable releases must remain implementable without them, and CI enforces this by validating each changed proposal against the adopted feature set. + +For the full adoption record, see [Component Model features in WASI](https://github.com/WebAssembly/WASI/blob/main/docs/ComponentModelFeatures.md). For the adoption process, see [Adopting Component Model features](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md#adopting-component-model-features). + ## Active proposals ### Phase 5 - The Feature is Standardized (WG) diff --git a/docs/roadmap.md b/docs/roadmap.md index 8a6243f..1e4fea7 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -7,7 +7,28 @@ This roadmap is a living document representing projected timelines for WASI rele ## WASI Releases -WASI point releases occur every two months, on the first Thursday of that month, on a **release train model**: a regular cadence in which releases are published regardless of the enhancements and fixes that are "ready for the train." Point releases include smaller features and bug fixes, while major features and breaking changes are generally reserved for major versions. +WASI point releases follow a **release train model**: a regular cadence in which releases are published regardless of the enhancements and fixes that are "ready for the train." Point releases include smaller features and bug fixes, while major features and breaking changes are generally reserved for major versions. + +WASI 0.3 point releases ship every two months, on the second Tuesday of the month. The WASI 0.2 series ran on the same cadence, on the first Tuesday of the month. + +WASI 0.3.0 was an exception to the release train, shipping on June 11, 2026 following a WASI Subgroup vote. WASI 1.0 may also be scheduled outside the train. The cadence after 1.0 is undetermined. + +### Scheduled releases + +| Release | Date | +| ------- | ---- | +| WASI 0.3.0 | June 11, 2026 | +| WASI 0.3.1 | August 11, 2026 | +| WASI 0.3.2 | October 13, 2026 | +| WASI 0.3.3 | December 8, 2026 | +| WASI 0.3.4 | February 9, 2027 | +| WASI 0.3.5 | April 13, 2027 | +| WASI 0.3.6 | June 8, 2027 | +| WASI 0.3.7 | August 10, 2027 | +| WASI 0.3.8 | October 12, 2027 | +| WASI 0.3.9 | December 14, 2027 | + +Releases are cut by a WASI Subgroup co-chair through an automated GitHub Actions workflow. For the full process, see [Release](https://github.com/WebAssembly/WASI/blob/main/docs/Release.md) in the WASI repository. ## WASI 0.3 From f5a395d87a0c2d44ddbdf58046c60bb7901cefb9 Mon Sep 17 00:00:00 2001 From: Eric Gregory Date: Wed, 26 Aug 2026 09:58:22 -0400 Subject: [PATCH 2/4] docs: apply review corrections to the release process pages Roadmap: corrects the Wasmtime floor for WASI 0.3 from 43 to 46. Wasmtime 43 through 45 vendor the 0.3.0-rc-2026-03-15 snapshot rather than released 0.3.0, so a component built against 0.3.0 does not run on them. Scopes the WASI 0.2 cadence claim to 0.2.1 through 0.2.12, since seven of the twelve 0.2.x releases shipped on a Thursday. Marks 0.3.0 as a one-off release in the schedule table and retitles the table, which lists shipped releases as well as planned ones. Standardizes on "patch release" to match Release.md and the WASI 0.2 page, and dates the projected 0.3.x feature list. Releases: drops the emoji gate column, which conveyed nothing to a screen reader and duplicated the feature names beside it. Restores the clause stating that adopted features may be used by APIs in that release and later, the second case in which proposals may experiment with unadopted features, and the upstream issue links. --- docs/releases/index.md | 22 ++++++++++++---------- docs/roadmap.md | 18 ++++++++++-------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/docs/releases/index.md b/docs/releases/index.md index 26d87f6..71aa817 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -44,20 +44,22 @@ WASI runtimes are tested against a shared test suite, [`wasi-testsuite`](https:/ ## Component Model features -WASI APIs are defined in terms of the [Component Model](https://component-model.bytecodealliance.org/), which develops new WIT syntax, types, and Canonical ABI functionality behind [gated features](https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md#gated-features). A stable WASI API may depend on a gated feature only after the WASI Subgroup votes to adopt it, through a process that parallels the phase process above. +WASI APIs are defined in terms of the [Component Model](https://component-model.bytecodealliance.org/), which introduces new WIT syntax, types, and Canonical ABI functionality behind [gated features](https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md#gated-features): opt-in flags marking work that is not yet part of the default feature set. A stable WASI API, one marked `@since` rather than `@unstable`, may depend on a gated feature only after the WASI Subgroup votes to adopt it, using the same kind of Subgroup vote as a phase advancement. -Adoption is cumulative. Implementing a given WASI version requires the ungated Component Model features, plus every feature adopted in that version and in all earlier versions. Adoption does not mean that a WASI API uses the feature: runtimes and toolchains implementing that WASI version must support it either way. +Adoption is cumulative. Implementing a given WASI version requires the ungated Component Model features, plus every feature adopted in that version and in all earlier versions. Adoption does not mean that any WASI API uses the feature yet. It means that WASI APIs in that release and later may use it, and that every runtime and toolchain implementing that WASI version must support it either way. -| WASI version | Gate | Feature | Adopted | -| ------------ | ---- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| 0.2.0 | None | The default ungated Component Model features | WASI 0.2 vote (predates this process) | -| 0.3.0 | πŸ”€ | `async` lift and lower, `future` and `stream` | WASI 0.3 vote (predates this process) | -| 0.3.1 | πŸ—ΊοΈ | The `map` type | [August 6, 2026](https://github.com/WebAssembly/meetings/blob/main/wasi/2026/WASI-08-06.md) | -| 0.3.1 | 🏷️ | `implements` and `external-id` annotations on plain-named interface imports and exports | [August 6, 2026](https://github.com/WebAssembly/meetings/blob/main/wasi/2026/WASI-08-06.md) | +| WASI Version | Component Model Features Required | Adopted | +| ------------ | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- | +| 0.2.0 | The default ungated Component Model features | WASI 0.2 vote (predates this process) | +| 0.3.0 | `async` lift and lower, `future`, and `stream` | WASI 0.3 vote (predates this process) | +| 0.3.1 | The `map` type | [August 6, 2026](https://github.com/WebAssembly/meetings/blob/main/wasi/2026/WASI-08-06.md) ([#943](https://github.com/WebAssembly/WASI/issues/943)) | +| 0.3.1 | `implements` and `external-id` annotations on plain-named interface imports and exports | [August 6, 2026](https://github.com/WebAssembly/meetings/blob/main/wasi/2026/WASI-08-06.md) ([#942](https://github.com/WebAssembly/WASI/issues/942)) | -A feature becomes eligible for adoption once its design is complete and it has been implemented across multiple runtimes and toolchains, with the feedback from that use incorporated. Proposals may experiment with features that have not been adopted, but only in prerelease versions such as `0.3.0-rc-*`. Stable releases must remain implementable without them, and CI enforces this by validating each changed proposal against the adopted feature set. +The Component Model Explainer marks each of these with a gate symbol. -For the full adoption record, see [Component Model features in WASI](https://github.com/WebAssembly/WASI/blob/main/docs/ComponentModelFeatures.md). For the adoption process, see [Adopting Component Model features](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md#adopting-component-model-features). +A feature becomes eligible for adoption once its design is complete, multiple runtimes and toolchains have implemented it, and the resulting feedback has been incorporated. Proposals may experiment with features that have not been adopted, but only in prerelease versions such as `0.3.0-rc-*`, or in proposals that have not yet shipped in a stable WASI release. Stable releases must remain implementable without them, and CI enforces this by validating each changed proposal against the adopted feature set. + +See [Component Model features in WASI](https://github.com/WebAssembly/WASI/blob/main/docs/ComponentModelFeatures.md) for the full adoption record, and [Adopting Component Model features](https://github.com/WebAssembly/WASI/blob/main/CONTRIBUTING.md#adopting-component-model-features) for the process. ## Active proposals diff --git a/docs/roadmap.md b/docs/roadmap.md index 1e4fea7..df72d11 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -5,19 +5,21 @@ sidebar_position: 4 This roadmap is a living document representing projected timelines for WASI releases. Goals and projections are provisional and subject to revision. -## WASI Releases +## WASI releases -WASI point releases follow a **release train model**: a regular cadence in which releases are published regardless of the enhancements and fixes that are "ready for the train." Point releases include smaller features and bug fixes, while major features and breaking changes are generally reserved for major versions. +WASI patch releases follow a **release train model**: a regular cadence in which releases are published regardless of the enhancements and fixes that are "ready for the train." Patch releases include smaller features and bug fixes, while major features and breaking changes are generally reserved for major versions. -WASI 0.3 point releases ship every two months, on the second Tuesday of the month. The WASI 0.2 series ran on the same cadence, on the first Tuesday of the month. +WASI 0.3 patch releases ship every two months, on the second Tuesday. WASI 0.2.1 through 0.2.12 followed the same two month cadence on the first Tuesday. WASI 0.3.0 was an exception to the release train, shipping on June 11, 2026 following a WASI Subgroup vote. WASI 1.0 may also be scheduled outside the train. The cadence after 1.0 is undetermined. -### Scheduled releases +### Release schedule + +Releases through WASI 0.3.1 have shipped. Later dates are planned and subject to change. | Release | Date | | ------- | ---- | -| WASI 0.3.0 | June 11, 2026 | +| WASI 0.3.0 | June 11, 2026 (one-off release) | | WASI 0.3.1 | August 11, 2026 | | WASI 0.3.2 | October 13, 2026 | | WASI 0.3.3 | December 8, 2026 | @@ -32,13 +34,13 @@ Releases are cut by a WASI Subgroup co-chair through an automated GitHub Actions ## WASI 0.3 -WASI 0.3.0 was released on June 11, 2026. WASI 0.3 support is available in [Wasmtime 43+](https://github.com/bytecodealliance/wasmtime) and [jco](https://github.com/bytecodealliance/jco). +WASI 0.3.0 was released on June 11, 2026. WASI 0.3 support is available in [Wasmtime](https://wasmtime.dev/) 46 and later, which enables WASI 0.3 by default, and in [jco](https://github.com/bytecodealliance/jco). WASI 0.3 adds **native async support** to the Component Model and refactors WASI 0.2 interfaces to take advantage of native async primitives: `async func`, `stream`, and `future`. The `wasi:io` package is removed entirely, with its functionality absorbed into the Component Model's Canonical ABI. For a full overview of changes, see [WASI 0.3](releases/wasi-p3.md). Implementations may continue to support WASI 0.2 alongside 0.3, either by implementing both versions or by virtualizing (polyfilling) 0.2 in terms of 0.3. -Following WASI 0.3.0, a series of incremental and backwards-compatible 0.3.x releases will occur on the release train model. These point releases are expected to include: +Following WASI 0.3.0, a series of incremental and backwards-compatible 0.3.x releases will occur on the release train model. As projected in February 2025, these patch releases are expected to include: * **Cancellation** automatically integrated with language idioms * **Specialization** of `tuple, future>>` existing in 0.3.0 @@ -52,4 +54,4 @@ You can find more information in the [WebAssembly CG presentation from February The provisional timeline for WASI releases is as follows: -![The WASI timeline projects a WASI 0.3 release in summer 2026](../static/img/wasi-timeline.webp) \ No newline at end of file +![The WASI timeline projects a WASI 0.3 release in summer 2026](../static/img/wasi-timeline.webp) From 958e89c9f49e04a31124239ff8d479cce0ff3a24 Mon Sep 17 00:00:00 2001 From: Eric Gregory Date: Wed, 26 Aug 2026 10:20:23 -0400 Subject: [PATCH 3/4] docs: refresh the project timeline and the 0.3.x outlook Redraws the timeline as an SVG. The previous image showed WASI 0.3.0 as a projection at the right edge of 2026 and used the retired P2 and P3 labels. The replacement shows the shipped releases and the scheduled train, is legible in both themes, and is reviewable in the diff. Replaces the February 2025 feature projection, which WASI 0.3.1 did not deliver on, with what 0.3.1 actually adopted and how later features reach a release. --- docs/roadmap.md | 14 +++---------- static/img/wasi-timeline.svg | 38 ++++++++++++++++++++++++++++++++++ static/img/wasi-timeline.webp | Bin 79740 -> 0 bytes 3 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 static/img/wasi-timeline.svg delete mode 100644 static/img/wasi-timeline.webp diff --git a/docs/roadmap.md b/docs/roadmap.md index df72d11..94758c3 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -40,18 +40,10 @@ WASI 0.3 adds **native async support** to the Component Model and refactors WASI Implementations may continue to support WASI 0.2 alongside 0.3, either by implementing both versions or by virtualizing (polyfilling) 0.2 in terms of 0.3. -Following WASI 0.3.0, a series of incremental and backwards-compatible 0.3.x releases will occur on the release train model. As projected in February 2025, these patch releases are expected to include: +Following WASI 0.3.0, incremental and backwards-compatible 0.3.x releases ship on the release train. WASI 0.3.1 adopted the Component Model `map` type and the `implements` and `external-id` annotations, which WASI interfaces may use from that release onward. -* **Cancellation** automatically integrated with language idioms -* **Specialization** of `tuple, future>>` existing in 0.3.0 -* **Stream optimization** with Canonical ABI built-ins for forwarding/splicing, skipping/writing-zeroes, stream data segment, and lulls -* **Caller-supplied buffers** with more zero-copy in more scenarios -* **Threads**: first cooperative, then preemptive - -You can find more information in the [WebAssembly CG presentation from February 2025](https://docs.google.com/presentation/d/1z0WXS5BLFtbVynM9xAyilecYskN1IKe9Dad1nDEmgU8/edit#slide=id.g33067d21cc1_0_5). +Later releases may adopt further Component Model features. Candidates are developed behind [gated features](https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md#gated-features) and reach a WASI release only after a Subgroup vote, as described in [Component Model features](releases/index.md#component-model-features). Current candidates include threading built-ins, stackful async lift, fixed-length lists, the `error-context` type, and canonical interface names. ## Project timeline -The provisional timeline for WASI releases is as follows: - -![The WASI timeline projects a WASI 0.3 release in summer 2026](../static/img/wasi-timeline.webp) +![Timeline of WASI releases. WASI 0.2.0 shipped in January 2024, followed by patch releases through 0.2.12. WASI 0.3.0 shipped in June 2026, followed by 0.3.x patch releases every two months through 2027.](../static/img/wasi-timeline.svg) diff --git a/static/img/wasi-timeline.svg b/static/img/wasi-timeline.svg new file mode 100644 index 0000000..0b9c61b --- /dev/null +++ b/static/img/wasi-timeline.svg @@ -0,0 +1,38 @@ + + WASI release timeline + WASI 0.2.0 shipped in January 2024, followed by patch releases 0.2.1 through 0.2.12. WASI 0.3.0 shipped in June 2026, followed by 0.3.x patch releases every two months through 2027. + + + + + + + + + + + + + + + + + + + + 2024 + 2025 + 2026 + 2027 + WASI 0.2.0 + January 2024 + 0.2.1 to 0.2.12 + WASI 0.3.0 + June 2026 + 0.3.x every two months + + + + + + diff --git a/static/img/wasi-timeline.webp b/static/img/wasi-timeline.webp deleted file mode 100644 index f5c3154bf7794e4e94f004c9890bfe2ee1d1a709..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79740 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�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 From 9688a712ccebf7312f5b9cb52211ec6bbd149c67 Mon Sep 17 00:00:00 2001 From: Eric Gregory Date: Wed, 26 Aug 2026 10:23:17 -0400 Subject: [PATCH 4/4] docs: draw the 0.2.x series as release ticks on the timeline Replaces the span bracket, which had been shortened to avoid overlapping the 0.3.0 marker and so ended two months early. Ticks are accurate to the published dates and match how the 0.3.x train is drawn. --- static/img/wasi-timeline.svg | 77 +++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/static/img/wasi-timeline.svg b/static/img/wasi-timeline.svg index 0b9c61b..f477bfb 100644 --- a/static/img/wasi-timeline.svg +++ b/static/img/wasi-timeline.svg @@ -1,38 +1,51 @@ - - WASI release timeline - WASI 0.2.0 shipped in January 2024, followed by patch releases 0.2.1 through 0.2.12. WASI 0.3.0 shipped in June 2026, followed by 0.3.x patch releases every two months through 2027. + + WASI release timeline + WASI 0.2.0 shipped in January 2024, followed by patch releases 0.2.1 through 0.2.12 every two months. WASI 0.3.0 shipped in June 2026, followed by 0.3.x patch releases every two months through 2027. - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - 2024 - 2025 - 2026 - 2027 - WASI 0.2.0 - January 2024 - 0.2.1 to 0.2.12 - WASI 0.3.0 - June 2026 - 0.3.x every two months + + + + - - - + + 2024 + 2025 + 2026 + 2027 + 0.2.1 to 0.2.12 + 0.3.x every two months + WASI 0.2.0 + January 2024 + WASI 0.3.0 + June 2026