# wasm-module # 运行时 # 加载器 # 微控制器 # 运行 # ESP32 # 适用

nightly 无 std uwasm

WebAssembly 模块运行时,适用于在如 ESP32 等微控制器上运行的固件中作为用户应用程序的加载器

3 个不稳定版本

0.2.0 2024 年 5 月 28 日
0.1.1 2024 年 3 月 2 日
0.1.0 2024 年 3 月 2 日

#171 in 无标准库

每月 50 次下载

MIT 许可证

82KB
2K SLoC

uWasm

这是一个 WebAssembly 模块的运行时,适用于作为在如 ESP32 等微控制器上运行的固件中用户应用程序的加载器。

动机

该项目是在 这个每日编码挑战 中开发的。对我而言,这个项目是一个学习 WebAssembly、深入底层编程以及...更多地使用 Rust 的机会 :)

希望这个项目能产生一些有用的东西。

项目范围

  • WebAssembly 二进制表示的解析器;
    • Wasm 的基本子集(不计划支持 SIMD、线程和其他更高级的功能)
  • 字节码解释器;
  • 从虚拟机内部调用的本地 API;
  • 可选:使用复制和修补方法进行 JIT/AOT 编译^1

项目目标

  • 低内存占用;
  • 合理的性能。

其他想法

  • 在实际硬件上引入持续集成(通过 GitHub Actions),以确保在目标平台上正确运行;
  • 尝试进程调度。

贡献

在编写提交信息时,请遵循 语义提交信息指南

有用的工具和资源

在 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

无运行时依赖