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
93,844 每月下载量
在 14 个crate中使用 (via wasmi)
90KB
2.5K 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。
用法
有关如何正确使用 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
使用 translate
、instantiate
、execute
或 overhead
过滤器,仅运行测试 Wasm 翻译、实例化、执行或杂项开销性能的基准测试,例如 cargo bench execute
。
我们为每个提交到 master
的基准测试维护一个时间表,可以在 此处查看。
支持的平台
Wasmi 支持广泛的架构和平台。
- 更多详细信息,请参阅此 支持的 Rust 平台列表。
- 注意: Wasmi 可以在
no_std
嵌入式环境中使用,因此不需要标准库 (std
)。 - 仅检查某些平台在 CI 中,并由 Wasmi 维护者保证完全正常工作。
许可
根据您选择的以下任一项许可
- Apache 许可证,版本 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在该作品中的任何贡献都应双重许可,如上所述,不附加任何额外条款或条件。
依赖项
~1.2–1.6MB
~24K SLoC