15个版本 (5个重大更新)

0.36.0 2024年7月24日
0.35.0 2024年7月11日
0.34.0 2024年7月8日
0.33.1 2024年7月1日
0.1.0 2024年5月2日

#1019 in WebAssembly

Download history 347/week @ 2024-04-29 450/week @ 2024-05-06 507/week @ 2024-05-13 794/week @ 2024-05-20 934/week @ 2024-05-27 2549/week @ 2024-06-03 13743/week @ 2024-06-10 17837/week @ 2024-06-17 22095/week @ 2024-06-24 21460/week @ 2024-07-01 18292/week @ 2024-07-08 25311/week @ 2024-07-15 27413/week @ 2024-07-22 22003/week @ 2024-07-29

93,844 每月下载量
14 个crate中使用 (via wasmi)

MIT/Apache

90KB
2.5K 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
批量内存 自版本 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 (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许可证定义,您有意提交以包含在该作品中的任何贡献都应双重许可,如上所述,不附加任何额外条款或条件。

依赖项

~1.2–1.6MB
~24K SLoC