14次重大版本更新

0.36.0 2024年7月24日
0.34.0 2024年7月8日
0.32.0-beta.8 2024年3月23日
0.32.0-beta.2 2023年12月22日
0.29.0 2023年3月20日

#516WebAssembly

Download history 194/week @ 2024-04-17 645/week @ 2024-04-24 136/week @ 2024-05-01 185/week @ 2024-05-08 25/week @ 2024-05-15 306/week @ 2024-05-22 311/week @ 2024-05-29 227/week @ 2024-06-05 10/week @ 2024-06-12 134/week @ 2024-06-19 186/week @ 2024-06-26 136/week @ 2024-07-03 131/week @ 2024-07-10 4/week @ 2024-07-17 126/week @ 2024-07-24 10/week @ 2024-07-31

每月297次下载

MIT/Apache

2.5MB
52K SLoC

持续集成 测试覆盖率 文档 Crates.io
ci codecov docs crates

Wasmi - WebAssembly (Wasm) 解释器

Wasmi是一个高效且轻量级的WebAssembly解释器,专注于限制和嵌入式系统。

版本 0.31.0 已由 SRLabs审计

公告:所有权转移

截至2024年2月1日,Wasmi项目的原始所有者和维护者,Parity Technologies,已正式将项目的所有权转让给我,Robin Freyler。更多关于这次转让的信息 请点击此处

独特功能

以下列表列出了Wasmi的一些独特功能。

  • 简单、正确且可预测的WebAssembly执行。
  • 低开销且跨平台的嵌入式环境WebAssembly运行时。
  • JIT炸弹抵抗的翻译。
  • Wasmtime API松散镜像。
  • 100%符合WebAssembly规范测试套件。
  • 内置燃料计量支持。
  • 支持官方的Wasm C-API

用法

请参阅Wasmi使用指南,了解如何正确使用Wasmi

WebAssembly提案

新的Wasmi引擎支持多种WebAssembly提案,并将支持更多提案。

WebAssembly提案 状态 评论
mutable-global 自版本 0.14.0 以来。
saturating-float-to-int 自版本 0.14.0 以来。
sign-extension 自版本 0.14.0 以来。
multi-value 自版本 0.14.0 以来。
bulk-memory 自版本 0.24.0(#628)
参考类型 自版本 0.24.0(#635)
simd 不太可能得到支持。
尾调用 自版本 0.28.0(#683)
扩展常量 自版本 0.29.0(#707)
函数引用 📅 计划中但尚未实现。 (#774)
垃圾回收 📅 计划中但尚未实现。 (#775)
多内存 📅 计划中但尚未实现。 (#776)
线程 📅 计划中但尚未实现。 (#777)
relaxed-simd 由于 simd 不太可能得到支持,因此不太可能得到支持。
组件模型 📅 计划中但尚未实现。 (#897)
异常处理 📅 计划中但尚未实现。 (#1037)
分支提示 📅 计划中但尚未实现。 (#1036)
WASI 👨‍🔬 通过 wasmi_wasi crate 提供对 WASI(《tt class="src-rs">wasip1)的实验性支持。
C-API 👨‍🔬 通过 wasmi_c_api_impl crate 提供对官方 Wasm C-API 的实验性支持。

开发

构建 & 测试

克隆 Wasmi 仓库并使用 cargo 构建

git clone https://github.com/wasmi-labs/wasmi.git --recursive
cd wasmi
cargo build
cargo test

基准测试

为了对 Wasmi 进行基准测试,请使用以下命令

cargo bench

使用 translateinstantiateexecuteoverhead 过滤器,仅运行测试 Wasm 翻译、实例化、执行或杂项开销的基准测试,例如 cargo bench execute

我们为每个提交到 master 的基准测试维护了一个时间表,可以在 此处查看

支持的平台

Wasmi 支持广泛的架构和平台。

  • 有关更多详细信息,请参阅 Rust 支持的平台列表 此处
  • 注意:Wasmi 可用于 no_std 嵌入式环境,因此不需要标准库(std)。
  • 只有一些平台已在 CI 中检查,并由 Wasmi 维护者保证完全工作。

许可证

根据以下其中之一获得许可

任选其一。

贡献

除非您明确表示,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,将如上双许可,没有任何附加条款或条件。

依赖项

~10-24MB
~307K SLoC