6 个版本
使用旧的 Rust 2015
0.5.4 | 2019 年 8 月 28 日 |
---|---|
0.5.3 | 2019 年 8 月 27 日 |
#29 in #wasm-bytecode
435KB
10K SLoC
源自: https://github.com/paritytech/wasmi
这是一个添加内置气体计费功能的 Parity 的 Wasmi crate 的分支。
将定期包含上游更改。
有关启用气体计费运行解释器的示例,请参阅 examples/interpret.rs。
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
功能需要 core
和 alloc
库以及夜间编译器。此外,与 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