35个版本 (破坏性)

0.36.0 2024年7月24日
0.34.0 2024年7月8日
0.17.0 2024年3月23日
0.15.0 2023年12月18日
0.2.0 2022年7月24日

#439 in WebAssembly

Download history 43935/week @ 2024-04-26 45182/week @ 2024-05-03 49869/week @ 2024-05-10 51562/week @ 2024-05-17 62190/week @ 2024-05-24 59465/week @ 2024-05-31 65266/week @ 2024-06-07 72486/week @ 2024-06-14 83681/week @ 2024-06-21 67364/week @ 2024-06-28 72365/week @ 2024-07-05 85853/week @ 2024-07-12 94854/week @ 2024-07-19 89905/week @ 2024-07-26 88231/week @ 2024-08-02 94065/week @ 2024-08-09

383,235 每月下载量
用于 222 个库 (3 直接)

MIT/Apache

115KB
2K SLoC

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

Wasmi - WebAssembly (Wasm) 解释器

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

版本 0.31.0 已由 SRLabs审计

公告:所有权转让

截至2024-02-01,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
饱和浮点转整数 自版本 0.14.0
符号扩展 自版本 0.14.0
多值 自版本 0.14.0
批量内存 自版本 0.24.0(#628)
引用类型 自版本 0.24.0(#635)
单指令多数据(SIMD) 不太可能得到支持。
尾调用 自版本 0.28.0(#683)
扩展常量 自版本 0.29.0(#707)
函数引用 📅 计划中但尚未实现。 (#774)
垃圾回收(GC) 📅 计划中但尚未实现。 (#775)
多内存 📅 计划中但尚未实现。 (#776)
线程 📅 计划中但尚未实现。 (#777)
放宽的SIMD 由于不太可能支持SIMD,因此不太可能支持放宽的SIMD。
组件模型 📅 计划中但尚未实现。 (#897)
异常处理 📅 计划中但尚未实现。 (#1037)
分支提示 📅 计划中但尚未实现。 (#1036)
WASI 👨‍🔬 通过wasmi_wasi crate,实验性地支持WASI(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 许可协议定义),将如上双许可,不附加任何额外条款或条件。

依赖项

~595KB
~12K SLoC