uwasm

Crates.iouwasm
lib.rsuwasm
version0.2.0
sourcesrc
created_at2024-03-02 18:39:00.22918
updated_at2024-05-28 19:46:13.115856
descriptionRuntime for WebAssembly modules, suitable for use as a loader for user apps in firmwares running on microcontrollers like ESP32.
homepage
repository
max_upload_size
id1159908
size81,685
Darek N. (darksv)

documentation

README

uWasm

This project is a runtime for WebAssembly modules, suitable for use as a loader for user apps in firmwares running on microcontrollers like ESP32.

Motivation

It is being developed within this daily coding challenge. For me, this project serves as an opportunity to learn more about WebAssembly, delve deeper into low level programming, and... use more Rust :)

Hopefully, something useful will come out of this project.

Project scope

  • parser of WebAssembly binary representation;
    • basic subset of Wasm (support for SIMD, threads and other more advanced features is not planned)
  • bytecode interpreter;
  • native API to call from inside the virtual machine;
  • optional: JIT/AOT compilation using copy-and-patch method1.

Project goals

  • low memory footprint;
  • reasonable performance.

Additional ideas

  • introduce continuous integration (via Github Actions) on real hardware to ensure proper performance on target platforms;
  • experiment with process scheduling.

Contributing

When writing commit messages please follow semantic commit messages guidelines.

Useful tools and resources

Compile and run simple test program on 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

Footnotes

  1. https://dl.acm.org/doi/10.1145/3485513

Commit count: 0

cargo fmt