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