7 个版本

使用旧的 Rust 2015

0.4.5 2019 年 5 月 14 日
0.4.4 2019 年 5 月 14 日
0.3.0 2019 年 5 月 14 日

#25 in #wasm-bytecode

MIT/Apache

410KB
10K SLoC

crates.io link Build Status

xwasmi

xwasmi - 一个 Wasm 解释器。

xwasmi 被设想为 s-sophon (xwasm 中的 sophon-like 合约) 和 higgsfield 的组件。这些项目与区块链相关,需要高度的准确性,即使这可能过于保守。这意味着我们不想参与任何正在进行的 Wasm 建议的实现。我们还在尽可能接近规范,这意味着我们试图避免规范未直接支持的特性。这意味着它在一方面是灵活的,另一方面则不存在迁移到另一个规范兼容的执行引擎的问题。

综上所述,xwasmi 应该是一个不错的初始原型选项。

构建 & 测试

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

git clone https://github.com/susytech/xwasmi.git --recursive
cd xwasmi
cargo build
cargo test

no_std 支持

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

[dependencies]
xwasm = {
	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

许可证

xwasmi 主要根据MIT许可证和Apache许可证(版本2.0)的条款分发,任您选择。

详见LICENSE-APACHE和LICENSE-MIT。

贡献

除非您明确表示,否则您根据Apache-2.0许可证定义的,有意提交给 xwasmi 的任何贡献,都将根据上述条款双许可,没有任何附加条款或条件。

依赖关系

~330–660KB
~14K SLoC