ra-jit

Edit Rust. See it change in milliseconds, in the program that is already running.

nix run github:indexable-inc/blaze
Editing the running Game of Life: rule, colours and speed change live

What you get

How fast

Edit one function, then build. 200-crate workspace, median of three.

Editcargora-jit
Function in the main crate1.76 s0.42 s
Function in a crate everything depends on6.33 s0.60 s

Benchmark history: every run on real projects, next to plain cargo.

Try it

nix run github:indexable-inc/blaze#blaze -- build

Use it as your normal cargo build

nix profile install github:indexable-inc/blaze#blaze
cargo blaze enable

Plain cargo build, run, test and check then go through ra-jit. ra-jit disable undoes it.

Live edits

ra-jit-live = { git = "https://github.com/indexable-inc/blaze" }
let mut live = ra_jit_live::Live::start().ok();
loop {
    if let Some(outcome) = live.as_mut().and_then(|it| it.poll()) {
        eprintln!("ra-jit: {outcome}");
    }
    // ...your frame
}

What to know

More: how it works, full results, what is supported, GitHub.

Where it is going

ra-jit is a superset of Rust. What it adds, it adds in the open: the charter says what we hold to, and the RFCs are the designs being argued about. Sign in with GitHub to comment on any paragraph.

Credits

ra-jit stands on the shoulders of giants. Thank you to the people who built rust-analyzer, Cranelift, LLVM and inkwell, salsa, object, Rust, and rustd (DioxusLabs), whose code ra-jit includes. None of these projects endorses ra-jit. Made at ix for den's native app. MIT or Apache-2.0. This site is Flecs scripts, run under Flecs compiled to wasm.