Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

wasm32-wasip3

Tier: 3

The wasm32-wasip3 target is the next stage of evolution of the wasm32-wasip2 target. The wasm32-wasip3 target enables the Rust standard library to use WASIp3 APIs to implement various pieces of functionality. WASIp3 brings native async support over WASIp2, which integrates well with Rust's async ecosystem.

Note: As of 2025-10-01 WASIp3 has not yet been approved by the WASI subgroup of the WebAssembly Community Group. Development is expected to conclude in late 2025 or early 2026. Until then the Rust standard library won't actually use WASIp3 APIs on the wasm32-wasip3 target as they are not yet stable and would reduce the stability of this target. Once WASIp3 is approved, however, the standard library will update to use WASIp3 natively.

Note: This target does not yet build as of 2025-10-01 due to and update needed in the libc crate. Using it will require a [patch] for now.

Note: Until the standard library is fully migrated to use the wasip3 crate then components produced for wasm32-wasip3 may import WASIp2 APIs. This is considered a transitionary phase until fully support of libstd is implemented.

Target maintainers

@alexcrichton

Requirements

This target is cross-compiled. The target supports std fully.

Platform requirements

The WebAssembly runtime should support both WASIp2 and WASIp3. Runtimes also are required to support components since this target outputs a component as opposed to a core wasm module. Two example runtimes for WASIp3 are Wasmtime and Jco.

Building the target

To build this target first acquire a copy of wasi-sdk. At this time version 22 is the minimum needed.

Next configure the WASI_SDK_PATH environment variable to point to where this is installed. For example:

export WASI_SDK_PATH=/path/to/wasi-sdk-22.0

Next be sure to enable LLD when building Rust from source as LLVM's wasm-ld driver for LLD is required when linking WebAssembly code together. Rust's build system will automatically pick up any necessary binaries and programs from WASI_SDK_PATH.

Testing

This target is not tested in CI at this time. Locally it can be tested with a wasmtime binary in PATH like so:

./x.py test --target wasm32-wasip3 tests/ui

Conditionally compiling code

It's recommended to conditionally compile code for this target with:

#[cfg(all(target_os = "wasi", target_env = "p3"))]

Enabled WebAssembly features

The default set of WebAssembly features enabled for compilation is currently the same as wasm32-unknown-unknown. See the documentation there for more information.