2 个版本

0.1.1 2021 年 4 月 30 日
0.1.0 2021 年 4 月 30 日

#1282 in WebAssembly

每月 22 次下载

MIT/Apache 许可

46KB
1.5K SLoC

s1vm

一个用 100% 安全的 Rust 编写的快速 WebAssembly (wasm) 解释器。

这个项目始于将 WASM3 的 VM 设计移植到安全 Rust 的想法。

请参阅 Ideas.md 了解一些可能用到的疯狂想法。

目标

  1. 仅使用安全 Rust。Crate 标记 #![forbid(unsafe_code)]
  2. 支持暂停/恢复。可以通过使用 async/await 或堆栈展开/重绕来实现。
  3. 资源限制(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