A super-fast, stack-based virtual machine for dynamic languages
Getting your backend up and running shouldn't have to be hard.
The following code builds IR for evaluating sum = 20.0 + 30.0
:
```rust let mut builder = IrBuilder::new();
let a = builder.number(20.0); let b = builder.number(30.0);
let sum = builder.binary(a, BinaryOp::Add, b);
builder.bind(Binding::global("sum"), sum); ```
When you feel like the IR is looking smooth. Simply let VM throw it through the compiler, and run it.
rust
let mut vm = VM::new();
vm.exec(&builder.build());
The examples/
folder includes two small language implementations running on the ZubVM.
Atto is a functional, minimal language that showcases how little code is needed to implement a working, Turing-complete language. The syntax can be seen in the following teaser:
```hs fn sum x is if = x 0 1 + sum - x 1 sum - x 1
fn main is sum 12 ```
Mini is a simple language that looks basically like a mix of Rust and JavaScript. It covers a bit wider set of features than Atto. This does show in the size of the language though.
```rust let bar = 13.37;
fn foo() { fn baz(c) { return c + bar; }
return baz(10); }
global gangster = foo(); ```