blaze

Rebuild Rust in milliseconds, with the same commands as cargo.

curl -fsSL https://ix.dev/blaze | sh

Then blaze run in any Rust project. Install has the other ways in and what you need; Usage has the day to day.

How blaze works

Five short lessons, a few minutes each: one idea per screen, and a question now and then to check it landed. No compiler knowledge needed; a little Rust is enough.

Some lessons build on others, so the path branches. As blaze changes, updates branch off the lesson they extend; What's new lists them all.

Section 1

The basics

How blaze builds, in five lessons, and what has changed since on the stable channel.

  1. Lesson 1What a build doesCompile, then link, and why a one-line edit can still take a while.10 steps · 4 min · 3 questions
  2. Lesson 2Only what changedWhy editing a function's body is cheap, and its signature less so.10 steps · 4 min · 3 questions
  3. Lesson 3Proc macrosWhy running them as sandboxed WebAssembly makes their output cacheable.9 steps · 3 min · 3 questions
  4. Lesson 4Hermetic buildsSame inputs, same output, whatever else is on the machine.8 steps · 3 min · 3 questions
  5. Update to lesson 4 · Oct 27Pinned downloadsBuild scripts that download now build sealed: each download is pinned by its hash and handed in.5 steps · 2 min · 1 question
  6. Lesson 5Sharing workOne store for your own work, and a shared one for your team.9 steps · 3 min · 3 questions
Section 2

Canary and experiments

Updates on the canary channel and behind experimental flags: newer, and still settling.

  1. Update to lesson 2 · Oct 28Why it rebuiltA build names every function it rebuilt and why, and blaze why tells you afterwards.4 steps · 2 min · 1 question
  2. Update to lesson 3 · Oct 28Macros that keep stateMacros that remember things between expansions now work, and the rest stay kept.5 steps · 2 min · 1 question
  3. Update to lesson 3 · Oct 28Const macrosAn experiment: a derive written as a function in your own package, expanded by blaze itself.5 steps · 2 min · 1 question
  4. Update to lesson 4 · Oct 28Kept test passesA test that reads nothing from outside its code passes once, and stays passed until that code changes.5 steps · 2 min · 1 question
  5. Update to lesson 5 · Oct 28Build scripts, sharedA build script's kept run is found from any checkout, on CI or through a remote, not just its own.4 steps · 2 min · 1 question
The end of the courseAfter lesson 5, you know how blaze builds. New updates show up in their section as blaze changes.

Your progress, and when you last came by, stay in this browser. Nothing is sent anywhere.

How fast

Edit one function, then build. A generated 200-crate workspace on Linux x86-64 with 8 CPUs, median of three, measured once by hand.

Editcargoblaze
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 on the same machine.

Credits

blaze 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 blaze includes. None of these projects endorses blaze. Made at ix for den's native app. MIT or Apache-2.0. This site is Flecs scripts, rendered by a Rust renderer compiled to wasm.

Designed in the open: the charter says what blaze holds to, and the RFCs are designs still being argued about. Sign in with GitHub to comment on any paragraph.

Discussion

Questions, corrections, ideas: anything about this page.