#wasm-interpreter #interpreter #vm #virtualization

无标准库 wasmi_c_api_macros

支持 wasmi_c_api_impl 库的宏

1 个不稳定版本

0.36.0 2024年7月24日

#1182WebAssembly

Download history 91/week @ 2024-07-20 27/week @ 2024-07-27

每月 118 次下载
用于 wasmi_c_api_impl

MIT/Apache

16KB
130

持续集成 测试覆盖率 文档 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 支持广泛的架构和平台。

  • 更多详细信息,请参阅此 支持平台列表
  • 注意:Wasmi 可以用于 no_std 嵌入式环境,因此不需要标准库 (std)。
  • 只有一些平台在 CI 中进行了检查,并由 Wasmi 维护者保证完全工作。

许可证

根据您的选择,受以下任一许可证的许可

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在内的任何贡献,应按上述方式双授权,不附加任何其他条款或条件。

依赖项

~79KB