自 2024 年 5 月发布上一版更新后,轻量级 WebAssembly 解释器 Wasmi 历经数月打磨,终于正式发布 1.0 稳定版。这个版本不仅清理了历史 弃用 API,承诺未来接口稳定性,也标志着 Wasmi 在功能、性能、安全性上的成熟,可广泛应用于 IoT 设备、插件系统、云宿主、智能合约乃至游戏主机等场景。
1.0 的意义:API 与能力全面成熟
- API 稳定承诺:1.0 起不再保留旧版弃用接口,开发者可放心升级。
- 面向嵌入式场景:低内存占用、可预测执行、可与宿主良好集成,是嵌入式与资源受限环境的高性价比 Wasm Runtime。
支持的全新 Wasm 提案
自 2024 年 5 月以来,Wasmi 紧跟 Wasm 生态推进,完成多项提案实现:
- multi-memory:单模块多线性内存,实现用途隔离。
- memory64:支持 64 位寻址,突破 4GB 内存上限。
- custom-page-sizes:最小 1 字节页尺寸,适配超小型设备。
- simd / relaxed-simd:提供 128 位 SIMD 指令(可选启用),加速计算密集型任务。
- wide-arithmetic:新增 128 位
add/sub/mul运算,利于大整数应用。 - tail-call、extended-const 等 Wasm 3.0 提案:提前支持未来标准。
凭借这些更新,Wasmi 已完整覆盖 Wasm 2.0,甚至领先实现多项 Wasm 3.0 能力。
引擎优化:性能与内存双提升
- 内部重构:翻译引擎、字节码、执行循环经过大量清理与重写,执行效率和内存占用显著改善。
- M2 Pro 基准测试:Coremark 等测试均显示较旧版本有稳定收益,尽管仍沿用 2024 年引入的解释器架构。
安全与可靠性提升
- 安全审计:Stellar Development Foundation 赞助 Runtime Verification 对 Wasmi 进行全面审计,发现的问题已全部修复。
- 模糊测试体系:
translate:持续翻译随机 Wasm 数据,查找翻译器缺陷。execute:以多输入执行 Wasm,挖掘执行引擎 Bug。differential:与其它 Runtime(如 Wasmtime)对比执行,捕捉语义差异。
- OSS-Fuzz + Wast Testsuite:接入 Google OSS-Fuzz,并维护独立 Wast 测试集,覆盖 Wasmi 特有场景。
- 依赖收缩:外部依赖从 7 个降至 2 个(
spin、wasmparser),计划未来以自研wasmi_parse完全替换,进一步降低供应链风险。