30 个版本 (11 个重大更改)

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

#1275WebAssembly

Download history 60/week @ 2024-04-15 759/week @ 2024-04-22 103/week @ 2024-04-29 178/week @ 2024-05-06 138/week @ 2024-05-13 214/week @ 2024-05-20 206/week @ 2024-05-27 489/week @ 2024-06-03 57/week @ 2024-06-10 34/week @ 2024-06-17 205/week @ 2024-06-24 218/week @ 2024-07-01 265/week @ 2024-07-08 42/week @ 2024-07-15 151/week @ 2024-07-22 394/week @ 2024-07-29

每月 858 次下载
用于 wasmi_cli

MIT/Apache

2.5MB
51K 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)
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)
exception-handling 📅 计划中但尚未实现。 (#1037)
branch-hinting 📅 计划中但尚未实现。 (#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许可证定义的,有意提交以包含在作品中的任何贡献,均应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~9-22MB
~274K SLoC