2 个版本
0.1.1 | 2021 年 4 月 30 日 |
---|---|
0.1.0 | 2021 年 4 月 30 日 |
#1282 in WebAssembly
每月 22 次下载
46KB
1.5K SLoC
s1vm
一个用 100% 安全的 Rust 编写的快速 WebAssembly (wasm) 解释器。
这个项目始于将 WASM3 的 VM 设计移植到安全 Rust 的想法。
请参阅 Ideas.md 了解一些可能用到的疯狂想法。
目标
- 仅使用安全 Rust。Crate 标记
#![forbid(unsafe_code)]
- 支持暂停/恢复。可以通过使用
async/await
或堆栈展开/重绕来实现。 - 资源限制(CPU/内存)。限制或节流 CPU 使用对运行沙盒代码很有用。
基准测试
与其他 wasm 解释器相比 s1vm
的基准测试
-
WASM3 - C
-
wasmi - Rust
-
fib.wasm 35
- wasm3 - 0.66 秒
- s1vm - 1.29 秒
- wasmi - 3.31 秒
-
fib.wasm 41
- wasm3 - 9.8 秒
- s1vm - 22.5 秒
- wasmi - 57.6 秒
待办事项
- - 支持调用宿主函数。
- src/compiler.rs - 实现缺失的编译器操作码。
依赖项
~400KB
~11K SLoC