3 个不稳定版本
0.2.0 | 2024 年 5 月 28 日 |
---|---|
0.1.1 | 2024 年 3 月 2 日 |
0.1.0 | 2024 年 3 月 2 日 |
#171 in 无标准库
每月 50 次下载
82KB
2K SLoC
uWasm
这是一个 WebAssembly 模块的运行时,适用于作为在如 ESP32 等微控制器上运行的固件中用户应用程序的加载器。
动机
该项目是在 这个每日编码挑战 中开发的。对我而言,这个项目是一个学习 WebAssembly、深入底层编程以及...更多地使用 Rust 的机会 :)
希望这个项目能产生一些有用的东西。
项目范围
- WebAssembly 二进制表示的解析器;
- Wasm 的基本子集(不计划支持 SIMD、线程和其他更高级的功能)
- 字节码解释器;
- 从虚拟机内部调用的本地 API;
- 可选:使用复制和修补方法进行 JIT/AOT 编译^1。
项目目标
- 低内存占用;
- 合理的性能。
其他想法
- 在实际硬件上引入持续集成(通过 GitHub Actions),以确保在目标平台上正确运行;
- 尝试进程调度。
贡献
在编写提交信息时,请遵循 语义提交信息指南。
有用的工具和资源
- https://github.webassembly.net.cn/wabt/demo/wat2wasm/ - Wasm 文本表示的在线编译器
- https://github.webassembly.net.cn/spec/core/index.html - WebAssembly 规范
在 VM 上编译和运行简单的测试程序
rustup add wasm32-unknown-unknown
rustc --target=wasm32-unknown-unknown tests/call_print.rs -C panic=abort -O
cargo run --bin uwasm-perf -- call_print.wasm 1