wasm32-wasip2
层级:3
wasm32-wasip2
目标是一个新的,并且仍然(截至 2024 年 1 月)是一个实验性的目标。此目标是 wasm32-wasip1
目标的扩展,最初称为 wasm32-wasi
。它是 wasi(WebAssembly 系统接口)开发中的下一个演变,它使用 WebAssembly 组件模型 来允许一组标准化的系统调用,旨在为 WebAssembly 二进制文件提供本机主机功能。
目标维护者
- Alex Crichton,https://github.com/alexcrichton
- Ryan Levick,https://github.com/rylev
需求
此目标是交叉编译的。该目标完全支持 std
。
平台需求
WebAssembly 运行时应支持 wasi 预览 2 API 集。运行时还需要支持组件,因为此目标输出的是组件而不是核心 wasm 模块。截至撰写本文时,Wasmtime 17 及更高版本能够在没有额外标志的情况下本地运行此目标。
构建目标
要构建此目标,首先获取 wasi-sdk
的副本。目前,版本 22 是所需的最低版本。
接下来,将 WASI_SDK_PATH
环境变量配置为指向安装位置。例如
export WASI_SDK_PATH=/path/to/wasi-sdk-22.0
接下来,确保在从源代码构建 Rust 时启用 LLD,因为 LLVM 的 wasm-ld
驱动程序(用于 LLD)在将 WebAssembly 代码链接在一起时是必需的。Rust 的构建系统将自动从 WASI_SDK_PATH
中获取所有必要的二进制文件和程序。
测试
此目标目前在 CI 中没有经过测试。在本地,可以使用 PATH
中的 wasmtime
二进制文件进行测试,方法如下
./x.py test --target wasm32-wasip2 tests/ui