6个版本 (重大更改)

0.5.0 2022年7月25日
0.4.2 2022年7月24日
0.4.1 2021年9月23日
0.4.0 2021年4月15日
0.1.0 2019年4月19日

#75 in WebAssembly

Download history 5468/week @ 2024-03-14 6288/week @ 2024-03-21 6006/week @ 2024-03-28 5497/week @ 2024-04-04 5514/week @ 2024-04-11 5948/week @ 2024-04-18 7005/week @ 2024-04-25 4615/week @ 2024-05-02 4146/week @ 2024-05-09 4383/week @ 2024-05-16 4762/week @ 2024-05-23 5538/week @ 2024-05-30 4733/week @ 2024-06-06 4182/week @ 2024-06-13 4645/week @ 2024-06-20 4258/week @ 2024-06-27

18,705 每月下载量
220 个crate使用 (直接使用5个)

MIT/Apache

76KB
2K 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规范测试套件。
  • 内置燃料计量支持。

使用方法

有关如何正确使用 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)
reference-types 自版本 0.24.0 开始。 (#635)
simd 不太可能得到支持。
tail-calls 自版本 0.28.0 开始。 (#683)
extended-const 自版本 0.29.0 开始。 (#707)
function-references 📅 计划中但尚未实现。 (#774)
gc 📅 计划中但尚未实现。 (#775)
multi-memory 📅 计划中但尚未实现。 (#776)
threads 📅 计划中但尚未实现。 (#777)
relaxed-simd 由于不太可能支持 simd,因此不太可能得到支持。
component-model 📅 计划中但尚未实现。 (#897)
WASI 👨‍🔬 通过 wasmi_wasi crate 或 Wasmi CLI 应用程序提供实验性支持。

开发

构建 & 测试

克隆 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 许可证中定义的,均应按照上述方式双许可,不附加任何其他条款或条件。

依赖项

~305KB