52 个版本 (重大变更)

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.1.1 2018 年 3 月 24 日

#2 in WebAssembly

Download history 43646/week @ 2024-05-04 53920/week @ 2024-05-11 50334/week @ 2024-05-18 64063/week @ 2024-05-25 59796/week @ 2024-06-01 66237/week @ 2024-06-08 73588/week @ 2024-06-15 84216/week @ 2024-06-22 70619/week @ 2024-06-29 70574/week @ 2024-07-06 89245/week @ 2024-07-13 95731/week @ 2024-07-20 84853/week @ 2024-07-27 91398/week @ 2024-08-03 119953/week @ 2024-08-10 76173/week @ 2024-08-17

每月 388,058 次下载
用于 326 个 crate (直接使用 45 个)

MIT/Apache

2.5MB
55K 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 许可证定义,都应按照上述方式进行双许可,不附加任何额外条款或条件。

依赖

~4MB
~71K SLoC