Skip to main content

Releases

Modules and components

WebAssembly binaries may be components built according to the Component Model or modules built to the core WebAssembly specification.

As you begin writing a Wasm application using WASI APIs, one of your first decisions will be which type of binary you want to produce. This decision is typically guided by your use case and the runtime you wish to use. Check to see which WASI releases your runtime supports.

  • Components can use WASI 0.2 or 0.3 and the Component Model for composability and interoperability, meaning that a WebAssembly component compiled from one language (Rust, for example) can communicate or be combined with a component compiled from another language (such as Go). WASI 0.3 adds native async support, building on the foundation established in WASI 0.2.

  • Modules can use APIs from WASI 0.1, an earlier stage of WASI's development. Since WASI 0.2 was released end of January 2024, WASI 0.1 support is more widespread among Wasm runtimes, and it is widely used in production today.

WASI releases

ReleaseStatusDescription
WASI 0.3Stable, currentNative async support with async func, stream<T>, and future<T>
WASI 0.2Stable, superseded by 0.3Component Model foundation with WIT interfaces, composability, and cross-language interoperability
WASI 0.1LegacyPOSIX-inspired module API with broad runtime support

Which version to target depends on your toolchain. WASI 0.3 is the current release: Wasmtime 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 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.

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:

  • 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. Entry requires documented portability criteria and a WIT description published to an OCI registry, among other criteria described in 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 - 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. (See the WASI Subgroup's meeting schedule.)

All active WASI proposals can be found on the WASI GitHub repository. See the Contributing to WASI page for information about submitting a new proposal.

WASI test suite

WASI runtimes are tested against a shared test suite, 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, which introduces new WIT syntax, types, and Canonical ABI functionality behind 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 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 VersionComponent Model Features RequiredAdopted
0.2.0The default ungated Component Model featuresWASI 0.2 vote (predates this process)
0.3.0async lift and lower, future, and streamWASI 0.3 vote (predates this process)
0.3.1The map<K, V> typeAugust 6, 2026 (#943)
0.3.1implements and external-id annotations on plain-named interface imports and exportsAugust 6, 2026 (#942)

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 for the full adoption record, and Adopting Component Model features for the process.

Active proposals

Phases 4 and 5 - To Be Determined

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

Phase 3 - Implementation Phase (CG + WG)

API ProposalDescriptionRepository
ClocksWall-clock and monotonic-clock accesshttps://github.com/WebAssembly/WASI/tree/main/proposals/clocks
RandomCryptographically secure and insecure random byte generationhttps://github.com/WebAssembly/WASI/tree/main/proposals/random
FilesystemFile and directory operations on preopened directorieshttps://github.com/WebAssembly/WASI/tree/main/proposals/filesystem
SocketsTCP and UDP networking, plus DNS resolutionhttps://github.com/WebAssembly/WASI/tree/main/proposals/sockets
CLIEnvironment variables, command-line arguments, stdio, and process exithttps://github.com/WebAssembly/WASI/tree/main/proposals/cli
HTTPIncoming and outgoing HTTP request and response handlinghttps://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 page.

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

API ProposalDescriptionRepository
Clocks: TimezoneTimezone-aware datetime conversions and UTC offsetshttps://github.com/WebAssembly/WASI/tree/main/proposals/clocks
HTTP: Informational Outbound Response1xx informational response support for outbound HTTPhttps://github.com/WebAssembly/WASI/tree/main/proposals/http
I2CInter-Integrated Circuit bus access for embedded peripheralshttps://github.com/WebAssembly/wasi-i2c
Key-value StoreCRUD operations against a key-value backendhttps://github.com/WebAssembly/wasi-kv-store
Machine Learning (wasi-nn)Inference against pre-trained ML modelshttps://github.com/WebAssembly/wasi-nn
Runtime ConfigRead-only access to host-provided configuration valueshttps://github.com/WebAssembly/wasi-runtime-config
WebGPUAccess to the WebGPU API for GPU rendering and computehttps://github.com/WebAssembly/wasi-webgpu
MessagingPublish/subscribe and request/reply messaging primitiveshttps://github.com/WebAssembly/wasi-messaging

Phase 1 - Feature Proposal (CG)

API ProposalDescriptionRepository
Blob StoreObject-storage operations on containers and blobshttps://github.com/WebAssembly/wasi-blob-store
CryptoSignatures, hashing, and symmetric encryption primitiveshttps://github.com/WebAssembly/wasi-crypto
GPIOGeneral-purpose digital I/O pin control for embedded deviceshttps://github.com/WebAssembly/wasi-gpio
Distributed Lock ServiceDistributed locking primitives for coordinating across nodeshttps://github.com/WebAssembly/wasi-distributed-lock-service
LoggingStructured logging with severity levelshttps://github.com/WebAssembly/wasi-logging
ObserveApplication telemetry plumbing for observability toolinghttps://github.com/dylibso/wasi-observe
OTelOpenTelemetry traces, metrics, and logshttps://github.com/calebschoepp/wasi-otel
ParallelParallel computation primitives such as map and reducehttps://github.com/WebAssembly/wasi-parallel
Pattern MatchPattern matching against strings using regex-style expressionshttps://github.com/WebAssembly/wasi-pattern-match
SPISerial Peripheral Interface bus access for embedded peripheralshttps://github.com/WebAssembly/wasi-spi
SQLConnection-oriented SQL database operationshttps://github.com/WebAssembly/wasi-sql
SQL EmbedEmbedded SQL execution against in-process databaseshttps://github.com/WebAssembly/wasi-sql-embed
ThreadsNative thread spawning and synchronization for componentshttps://github.com/WebAssembly/wasi-native-threads
TLSTransport Layer Security for sockets and other byte streamshttps://github.com/WebAssembly/wasi-tls
URLURL parsing, construction, and manipulationhttps://github.com/WebAssembly/wasi-url
USBUSB device enumeration and host communicationhttps://github.com/WebAssembly/wasi-usb

Phase 0 - Pre-Proposal (CG)

ProposalDescriptionRepository
proxy-wasm/specPlugin interface for proxies and gateways; will advance as multiple smaller proposalshttps://github.com/proxy-wasm/spec

Versioning

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.