|
1 | 1 | # WAGMI (WebAssembly General & Minimal Interpreter) |
2 | | -WAGMI is a minimalistic in-place WebAssembly interpreter written in Rust (WIP). |
3 | 2 |
|
4 | | -Original idea: https://www.cs.tufts.edu/comp/150FP/archive/ben-titzer/wasm-interp.pdf |
| 3 | +WAGMI is a minimalistic in-place WebAssembly interpreter written in Rust, with full support for the [WebAssembly 1.0 core standard](https://www.w3.org/TR/wasm-core-1/). |
5 | 4 |
|
6 | | -The spec test suite in this repo is from https://github.com/WebAssembly/spec/releases/tag/list |
| 5 | +Based on the [original paper by Ben L. Titzer](https://www.cs.tufts.edu/comp/150FP/archive/ben-titzer/wasm-interp.pdf). |
7 | 6 |
|
8 | | -The associated `wast2json` and `wat2wasm` binaries are of version `1.0.13 (1.0.14)`, you can find the Windows version here: https://github.com/WebAssembly/wabt/releases/tag/1.0.15 |
| 7 | +## Project Structure |
9 | 8 |
|
10 | | -Newer tests/wast converter may not work since this project specifically targets the 1.0 core WebAssembly standard. There will not be active development beyond full 1.0 support. |
| 9 | +- `/src` - Core interpreter implementation |
| 10 | + - `module.rs` - WebAssembly module parsing and structure |
| 11 | + - `validator.rs` - Module validation logic |
| 12 | + - `instance.rs` - Runtime instance and execution engine |
| 13 | + - `wasm_memory.rs` - Linear memory management |
| 14 | + - `signature.rs` - Function signature handling |
| 15 | + - `leb128.rs` - LEB128 encoding/decoding utilities |
| 16 | + - `byte_iter.rs` - Byte stream iteration helpers |
| 17 | + - `error.rs` - Error types and handling |
| 18 | + - `lib.rs` - Library entry point |
| 19 | + - `/bin` - Example usage demonstrations |
| 20 | +- `/tests` - Tests |
| 21 | + - `/spec_tests.rs` - Test runner |
| 22 | + - `/core` - WebAssembly spec test suite |
| 23 | +- `/docs` - More detailed documentation |
| 24 | + |
| 25 | +## Testing |
| 26 | + |
| 27 | +The spec test suite is from the [WebAssembly specification repository](https://github.com/WebAssembly/spec/releases/tag/list). The `wast2json` and `wat2wasm` binaries used are version 1.0.13 (1.0.14) [Windows version available here](https://github.com/WebAssembly/wabt/releases/tag/1.0.15). |
| 28 | + |
| 29 | +**Note:** This project specifically targets the WebAssembly 1.0 core standard. Newer test converters may not be compatible. There is no plan for development beyond 1.0 support. |
0 commit comments