Robbepop / runwell

An experimental WebAssembly virtual machine.
Apache License 2.0
12 stars 2 forks source link
compiler interpreter virtual-machine wasm webassembly

The runwell WebAssembly Virtual Machine

Continuous Integration Coverage LoC
GHActions loc

An attempt for a non-bombable, optimizing WebAssembly (Wasm) JIT compiler with deterministic behaviour.

WIP - The runwell virtual machine is under active development. Don't expect it to be working. Here be dragons.

Crates & Documentation

Crate Docs Description
runwell_entity Data structures to follow data oriented design architecture using entity component structures.
runwell_ir Defines the Runwell Intermediate Representation (IR) on the instruction level.
runwell_module Defines the module and function structure of the Runwell IR.
runwell_interpreter Implements a simple Runwell IR interpreter.
runwell_wasm Implements routines to convert from WebAssembly (Wasm) to Runwell IR.

The crates are ordered in the way they depend on each other. Crates below might depend on a subset of the crates above them.

Why WebAssembly?

WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.

Read more here.

Planned & Implemented Wasm Proposals

[x] Means that the feature is either fully implemented or that some implemented foundation already exists.

Credits

Credits go to the people behind the Bytecode Alliance for their fantastic work on the WebAssembly specification and work on WebAssembly frameworks, libraries and tooling. This project took a lot of inspiration from projects found under their GitHub Organization.