6 个版本

使用旧的 Rust 2015

0.5.4 2019 年 8 月 28 日
0.5.3 2019 年 8 月 27 日

#29 in #wasm-bytecode

MIT/Apache

435KB
10K SLoC

源自: https://github.com/paritytech/wasmi

这是一个添加内置气体计费功能的 Parity 的 Wasmi crate 的分支。

将定期包含上游更改。

有关启用气体计费运行解释器的示例,请参阅 examples/interpret.rs

crates.io link Build Status

wasmi

wasmi - 一个 Wasm 解释器。

wasmi 被构想为 parity-ethereum(wasm 中的类似以太坊的合约)和 substrate 的组件。这些项目与区块链相关,需要高度的准确性,甚至可能过于保守。这意味着我们不会参与任何正在进行的 Wasm 建议的实现。我们还试图尽可能接近规范,这意味着我们试图避免规范未直接支持的功能。这意味着它在一方面是灵活的,另一方面应该没有问题迁移到另一个符合规范的执行引擎。

说了这么多,wasmi 应该是一个很好的初始原型设计选项。

构建 & 测试

由于 wasmi 包含一个 git 子模块,您需要使用 --recursive 克隆或显式检出子模块,否则测试会失败。

git clone https://github.com/paritytech/wasmi.git --recursive
cd wasmi
cargo build
cargo test

no_std 支持

此 crate 支持无 std 环境。启用 core 功能并禁用默认功能

[dependencies]
parity-wasm = {
	version = "0.31",
	default-features = false,
	features = "core"
}

core 功能需要 corealloc 库以及夜间编译器。此外,与 std::error 相关的代码已被禁用。

no_std 中进行浮点运算使用 libm,有时在调试模式下会崩溃(《https://github.com/japaric/libm/issues/4》)。因此,请确保使用发布构建或避免使用带有浮点运算的WASM,例如通过使用 deny_floating_point

许可证

wasmi 主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发,您可以选择其中之一。

请参阅 LICENSE-APACHE 和 LICENSE-MIT 以获取详细信息。

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在 wasmi 中的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~0.6–1MB
~22K SLoC