indexable-inc / ra-jit
git clone https://github.com/indexable-inc/ra-jit.git
Rust compiler daemon on rust-analyzer: fast incremental cargo builds and live edits to running programs. Try: nix run github:indexable-inc/ra-jit
+146
stars, 24h Β· #78
+146
stars, 7 days Β· #366
+146
stars, 30 days Β· #1,645
146
β
total Β· +146% this week
4
forks Β· 9 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageRust
LicenseApache-2.0
Created2026-10-19 (today)
Last pushtoday
Watchers0
OwnerOrganization
GitHub topics
cargocompilercraneliftdeveloper-toolshot-reloadincremental-compilationjitlive-codingrustrust-analyzer
Links
- GitHub: github.com/indexable-inc/ra-jit
- Homepage: https://ra-jit.ix.dev
- Releases Β· Issues Β· Hacker News mentions
README excerpt
ra-jit Edit Rust. See it change in milliseconds, in the program that is already running. [code] That opens a Game of Life window you can edit while it runs (live on macOS Apple silicon). For release news: Watch β Custom β Releases on GitHub. ## What you get - **Live edits.** Save a file and the running program has the new code about a millisecond later. Its state stays. (docs/live.md) - **Fast builds.** After the first build, an edit rebuilds only the functions you changed. No `rustc`, no waiting. - **Same cargo.** `cargo ra-jit build|run|test|check` in any project. ## How fast Live edit to running code, Game of Life demo (median of 20 edits, one 96-core Linux machine): | Edit | incremental `cargo build` | ra-jit live | | |---|---:|---:|---:| | One function | 169 ms | 7 ms | **24x** | | One function, 300 new functions added | 282 ms | 60 ms | 4.7x | Edit, then build, on real projects at pinned commits. Each cell is incremental `cargo build` β `cargo ra-jit build`, both warm, same linker, median of 5 edits. Linux x86-64, AWS c8a.metal-24xl, bare metal, pinned with taskset (AMD EPYC 9R45, 16 of its 96 cores, 188 GiB), ra-jit `6a7d245e47` on 2026-10-20. | Project | Edit a function | Edit a widely used function | Change a signature | Nothing changed | |---|---:|---:|---:|---:| | ripgrep 15.1.0 | 447 ms β **90 ms** (5.0x) | 713 ms β **50 ms** (14x) | 556 ms β **86 ms** (6.5x) | 382 ms β **28 ms** (14x) | | fd 10.3.0 | 433 ms β **99 ms** (4.4x) | 403 ms β **86 ms** (4.7x) | 651 ms β **122 ms** (5.3x) | 381 ms β **31 ms** (12x) | | bat 0.26.0 | 428 ms β **60 ms** (7.1x) | 667 ms β **54 ms** (12x) | 951 ms β **67 ms** (14x) | 58 ms β **26 ms** (2.2x) | | hyperfine 1.19.0 | 315 ms β **92 ms** (3.4x) | 349 ms β **98 ms** (3.6x) | 352 ms β **140 ms** (2.5x) | 298 ms β **30 ms** (9.9x) | | just 1.43.0 | 656 ms β **48 ms** (14x) | 687 ms β **52 ms** (13x) | 664 ms β **76 ms** (8.7x) | 41 ms β **24 ms** (1.7x) | | axum 0.8.6 | 350 ms β **57 ms** (6.1x) | 798 ms β **52 ms** (15x) | | 71 ms β **26 ms** (2.7x) | | nushell 0.108.0 | 1.44 s β **325 ms** (4.4x) | 4.75 s β **221 ms** (22x) | 4.84 s β **288 ms** (17x) | 179 ms β **43 ms** (4.2x) | Measured by hand with `harness/bench.py`; the `bench-readme` workflow re-runs it on the dedicated benchmark machine. Cold builds, the spread of every number, the LLVM tier and how fast the built programs run: docs/benchmarks.md (raw JSON). Not measured yet: workspaces of a million lines or more, and test suites (#benchmarks). ## Try it on your project [code] No nix? `cargo +1.99.0 install --locked ra-jit`, or put the binaries from a release on your PATH. Then use Rust 1.99.0 with its source: `rustup toolchain install 1.99.0 -c rust-src && rustup override set 1.99.0`. ### Use it as your normal `cargo build` [code] From then on plain `cargo build`, `run`, `test` and `check` in any project go through ra-jit. `ra-jit disable` puts your cargo config back. ### Live edits Add the crate and poll once per frame: [code] [