19 个版本
使用旧的 Rust 2015
0.2.15 | 2018 年 5 月 3 日 |
---|---|
0.2.14 | 2018 年 5 月 3 日 |
0.2.13 | 2018 年 4 月 29 日 |
0.2.2 | 2018 年 3 月 31 日 |
0.0.0 | 2018 年 3 月 11 日 |
#7 in #everywhere
在 3 crates 中使用
455KB
11K SLoC
wasm-core
旨在在任何地方运行的可移植 WebAssembly 实现。
特性
高效
wasm-core 包含两个执行引擎,一个解释器和基于 LLVM 的 JIT。前者主要用于资源受限或不受 LLVM MCJIT 支持的平台,后者设计用于高性能,应在可能的情况下使用。
通过 LLVM 优化和按需编译,wasm-core 的 JIT 引擎能够在 x86-64 上实现接近原生性能。
可移植
wasm-core 支持 no_std
。这意味着它可以在任何有 libcore
和 liballoc
可用的平台上运行,包括许多嵌入式设备和甚至操作系统内核。
安全
默认执行环境完全沙箱化,这意味着用户代码在没有明确原生导入的情况下无法访问外部环境。
易于集成
可以通过实现 NativeResolver
特性轻松导入外部函数,外部可以轻松调用导出的 WebAssembly 函数。请参见 Ice Core 作为示例。
如何使用
不是直接加载 WebAssembly 文件,wasm-core 使用 wasm-translator
crate 在 translator/
下生成的从原始 WebAssembly 代码生成的 IR 格式代码。
请参见 Ice Core 作为执行纯-wasm 代码的示例,以及 wa/
作为执行由 Emscripten 生成的 wasm 的示例。(注意:一旦 LLVM 的 WebAssembly 后端变得稳定且可以从 clang 完全使用,可能将删除对 Emscripten 生成代码的支持。)
错误
请参见带有 bug
标记的问题。
贡献
欢迎为此项目做出贡献!如果您修复了错误,请直接提交拉取请求;如果您想添加新功能,请首先提交讨论问题。
依赖关系
~0.5–8.5MB
~135K SLoC