Rust WASI 目标的变更

Rust WASI 目标的变更

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

Rust 1.78将引入新的wasm32-wasip1和wasm32-wasip2目标,以支持WASI 0.2。建议WASI 0.1用户在Rust 1.84之前迁移到新的wasm32-wasip1目标。Rust计划在2024年内逐步完善wasm32-wasip2目标,并将wasm32-wasi目标更名为wasm32-wasip1。这些变化将为项目提供8个月的过渡期。

🔎

延伸解读

迁移时间线与关键节点

文章给出了明确的迁移时间表:Rust 1.78(2024年5月2日)引入wasm32-wasip1,1.81(2024年9月5日)开始对使用wasm32-wasi发出警告,1.84(2025年1月9日)移除该目标。用户有8个月过渡期,需在更新工具链时切换目标名称。注意wasm32-wasi-preview1-threads在1.78直接更名为wasm32-wasip1-threads,无过渡期。

wasm32-wasip2的现状与使用建议

wasm32-wasip2在Rust 1.78中以tier 3级别引入,初期缺少stdlib支持等许多预期功能,因此官方不建议立即使用。目前若想编译到WASI 0.2,推荐使用cargo-component工具,它通过转换层将WASI 0.1二进制转为WASI 0.2组件,虽有效率损失但已可用。Rust计划在2024年内完善该目标并提升至tier 2,届时cargo-component将原生支持。

命名变更的背景与影响

将wasm32-wasi重命名为wasm32-wasip1,是为了给未来的WASI 1.0目标腾出wasm32-wasi名称,并保持目标命名一致性。wasip1可读作“WASI 0.1”或“WASI预览1”,官方规范使用“预览”术语。这一变更仅影响WASI目标,wasm32-unknown-unknown和wasm32-unknown-emscripten不受影响。

❓

Q&A

Rust 1.78将引入哪些新的目标?

Rust 1.78将引入wasm32-wasip1和wasm32-wasip2目标,以支持WASI 0.2。

WASI 0.1用户应该在何时迁移到新目标?

WASI 0.1用户应在Rust 1.84之前迁移到新的wasm32-wasip1目标。

wasm32-wasip1和wasm32-wasip2的区别是什么?

wasm32-wasip1是现有wasm32-wasi目标的重命名,而wasm32-wasip2是新的目标,初期缺少许多功能。

Rust计划如何完善wasm32-wasip2目标?

Rust计划在2024年内逐步完善wasm32-wasip2目标,最终将其提升为tier 2目标。

如何将WASI 0.1二进制文件转换为WASI 0.2组件?

用户可以使用cargo-component工具将WASI 0.1二进制文件转换为WASI 0.2组件。

wasm32-wasi目标何时会被移除?

wasm32-wasi目标将在Rust 1.84(2025年1月9日)被移除。

🏷️

标签

➡️

继续阅读