14次重大版本更新
0.36.0 | 2024年7月24日 |
---|---|
0.34.0 | 2024年7月8日 |
0.32.0-beta.8 |
|
0.32.0-beta.2 |
|
0.29.0 | 2023年3月20日 |
#516 在 WebAssembly
每月297次下载
2.5MB
52K SLoC
持续集成 | 测试覆盖率 | 文档 | Crates.io |
---|---|---|---|
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。
用法
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) |
参考类型 |
✅ | 自版本 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(《tt class="src-rs">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
使用 translate
、instantiate
、execute
或 overhead
过滤器,仅运行测试 Wasm 翻译、实例化、执行或杂项开销的基准测试,例如 cargo bench execute
。
我们为每个提交到 master
的基准测试维护了一个时间表,可以在 此处查看。
支持的平台
Wasmi 支持广泛的架构和平台。
- 有关更多详细信息,请参阅 Rust 支持的平台列表 此处。
- 注意:Wasmi 可用于
no_std
嵌入式环境,因此不需要标准库(std
)。 - 只有一些平台已在 CI 中检查,并由 Wasmi 维护者保证完全工作。
许可证
根据以下其中之一获得许可
- Apache License,版本 2.0(《tt class="src-rs">LICENSE-APACHE 或 http://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,将如上双许可,没有任何附加条款或条件。
依赖项
~10-24MB
~307K SLoC