Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/languages.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ The languages below can be compiled to WebAssembly with WASI support. Some toolc
| 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 | 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/) |
| 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 via crate | 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 for `wasm32-wasip3`, and can be used from `wasm32-wasip2` though upstream recommends matching the crate to the 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 |

### Notes

- **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. 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.
- **WASI 0.3 ecosystem state.** Broad 0.3 support across languages is still landing. Rust has WASI 0.3 bindings in the [`wasip3`](https://crates.io/crates/wasip3) crate, written for the nightly Tier 3 `wasm32-wasip3` target. It can be used from the stable Tier 2 `wasm32-wasip2` target, though upstream recommends matching the crate to the target, and the standard library on `wasm32-wasip2` still uses WASI 0.2. `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.
- **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
Expand Down
12 changes: 6 additions & 6 deletions docs/releases/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ As you begin writing a Wasm application using WASI APIs, one of your first decis
| [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.
Which version to target depends on your toolchain. WASI 0.3 is the current release: [Wasmtime](https://wasmtime.dev/) 46 and later runs 0.3 components by default, Rust has 0.3 bindings in the `wasip3` crate, and jco ships an experimental 0.3 shim for Node.js. Most other toolchains still target WASI 0.2. Check the [Languages](../languages.md) page for your language before choosing. Runtimes with 0.3 support, including Wasmtime and jco, also run WASI 0.2 components, so starting on 0.2 does not close off 0.3 later.

For more information on release timelines and plans, see the [Roadmap](../roadmap.md).

Expand Down Expand Up @@ -56,17 +56,15 @@ Adoption is cumulative. Implementing a given WASI version requires the ungated C
| 0.3.1 | The `map<K, V>` 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)) |

The Component Model Explainer marks each of these with a gate symbol.

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

### Phases 4 and 5 - To be determined (WG)
### Phases 4 and 5 - To Be Determined

No proposals have reached these phases yet.
These phases are not yet defined, so no proposals have entered them.

### Phase 3 - Implementation Phase (CG + WG)

Expand All @@ -79,6 +77,8 @@ No proposals have reached these phases yet.
| [CLI][wasi-cli] | Environment variables, command-line arguments, stdio, and process exit | https://github.com/WebAssembly/WASI/tree/main/proposals/cli |
| [HTTP][wasi-http] | Incoming and outgoing HTTP request and response handling | https://github.com/WebAssembly/WASI/tree/main/proposals/http |

The `wasi:io` proposal was part of WASI 0.2 and was removed in WASI 0.3. Its interfaces are listed on the [WASI 0.2](wasi-p2.md) page.

### Phase 2 - Proposed Spec Text Available (CG + WG)

| API Proposal | Description | Repository |
Expand Down Expand Up @@ -121,7 +121,7 @@ No proposals have reached these phases yet.

## Versioning

Proposals remain in the 0.x semver range until they reach Phase 5 and are fully standardized. At that point, a 1.0 release should be made available.
Proposals remain in the 0.x semver range while they advance through the phase process. A WASI 1.0 release would follow full standardization, once the WASI Subgroup, the WebAssembly Community Group, and the WebAssembly Working Group have defined what that requires.

[wasi-blob-store]: https://github.com/WebAssembly/wasi-blob-store
[wasi-clocks]: https://github.com/WebAssembly/WASI/tree/main/proposals/clocks
Expand Down
2 changes: 1 addition & 1 deletion docs/releases/wasi-p2.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ WASI 0.2 includes several patch releases:
| [0.2.3](https://github.com/WebAssembly/WASI/releases/tag/v0.2.3) | This release includes minor documentation updates. |
| [0.2.2](https://github.com/WebAssembly/WASI/releases/tag/v0.2.2) | This release includes new WIT features for `@deprecated` feature gates and is exercised in the [wasi:http/proxy](https://github.com/WebAssembly/wasi-http/blob/main/wit/types.wit#L148-L158) world. For more information, see [component-model/WIT.md](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#feature-gates). |
| [0.2.1](https://github.com/WebAssembly/WASI/releases/tag/v0.2.1) | This release includes new WIT features for `@since` and `@unstable` feature gates. For more information, see [component-model/WIT.md](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#feature-gates). |
| [0.2.0](https://github.com/WebAssembly/WASI/releases/tag/v0.2.0) | This version officially launched with the vote in the WASI Subgroup January 24th, 2024. |
| [0.2.0](https://github.com/WebAssembly/WASI/releases/tag/v0.2.0) | This version officially launched with the vote in the WASI Subgroup January 25th, 2024. |

## Further reading

Expand Down
4 changes: 3 additions & 1 deletion docs/releases/wasi-p3.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,9 @@ WASI 0.3 support is available in:
- **[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 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.
Wasmtime 46 is the first release to implement the final WASI 0.3.0 specification. Wasmtime 43 through 45 implement the `0.3.0-rc-2026-03-15` snapshot, and Wasmtime 41 and 42 the earlier `0.3.0-rc-2026-01-06` snapshot; all of these require `-Sp3 -W component-model-async=y`. Wasmtime 44 added initial `wasi:tls@0.3.0-draft` support.

`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 do not 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<K, V>` 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.

Expand Down
34 changes: 16 additions & 18 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,34 +7,32 @@ This roadmap is a living document representing projected timelines for WASI rele

## WASI releases

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 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. Larger features and breaking changes are reserved for milestone releases such as 0.3.0.

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 patch releases ship every two months, on the second Tuesday. WASI 0.2.1 through 0.2.12 shipped on the same cadence.

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.

### 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 (one-off release) |
| 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 |
| Release | Date | Status |
| ------- | ---- | ------ |
| WASI 0.3.0 | June 11, 2026 | Shipped, outside the train |
| WASI 0.3.1 | August 11, 2026 | Shipped |
| WASI 0.3.2 | October 13, 2026 | Planned |
| WASI 0.3.3 | December 8, 2026 | Planned |
| WASI 0.3.4 | February 9, 2027 | Planned |
| WASI 0.3.5 | April 13, 2027 | Planned |
| WASI 0.3.6 | June 8, 2027 | Planned |
| WASI 0.3.7 | August 10, 2027 | Planned |
| WASI 0.3.8 | October 12, 2027 | Planned |
| WASI 0.3.9 | December 14, 2027 | Planned |

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

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 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<T>`, and `future<T>`. 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).

Expand All @@ -46,4 +44,4 @@ Later releases may adopt further Component Model features. Candidates are develo

## Project timeline

![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)
![Timeline of WASI releases. WASI 0.2.0 shipped in January 2024, followed by twelve patch releases every two months through 0.2.12. WASI 0.3.0 shipped two and a half years later, in June 2026, followed by 0.3.1 in August 2026. Further 0.3.x patch releases are planned every two months through 2027.](../static/img/wasi-timeline.svg)
Loading
Loading