diff --git a/docs/contribute.md b/docs/contribute.md index 4aa8333..0060f97 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 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. + +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/index.md) 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/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 a490802..15fa206 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -17,26 +17,27 @@ 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 -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**: 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). -* **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 - 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).) -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 @@ -44,21 +45,14 @@ WASI runtimes are tested against a shared test suite, [`wasi-testsuite`](https:/ ## Active proposals -### Phase 5 - The Feature is Standardized (WG) - -| API Proposal | Description | Repository | -| ------------ | ----------- | ---------- | - -### Phase 4 - Standardize the Feature (WG) +### Phases 4 and 5 - To be determined (WG) -| API Proposal | Description | Repository | -| ------------ | ----------- | ---------- | +No proposals have reached these phases yet. -### Phase 3 - Implementation Phase (SG) +### Phase 3 - Implementation Phase (CG + WG) | 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 +70,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] | 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) @@ -113,13 +107,11 @@ 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 [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 +131,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..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 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 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 @@ -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..be1c67a 100644 --- a/docs/releases/wasi-p3.md +++ b/docs/releases/wasi-p3.md @@ -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/)** 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/)** 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` 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 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. @@ -207,7 +209,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 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` 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 9ada30d..138aa68 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. +* **[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 @@ -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 documentation](https://github.com/WebAssembly/WASI/tree/wasi-0.2)** (the `wasi-0.2` branch) ## 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; -}