Salsa: Incremental recompilation
29 January 2019
So for the last couple of months or so, I’ve been hacking in my spare time on this library named salsa, along with a number of awesome other folks. Salsa basically extracts the incremental recompilation techniques that we built for rustc into a general-purpose framework that can be used by other programs. Salsa is developing quickly: with the publishing of v0.10.0, we saw a big step up in the overall ergonomics, and I think the current interface is starting to feel very nice.
Salsa is in use by a number of other projects. For example, matklad’s rust-analyzer, a nascent Rust IDE, is using salsa, as is the Lark1 compiler. Notably, rustc does not – it still uses its own incremental engine, which has some pros and cons compared to salsa.2
If you’d like to learn more about Salsa, you can check out [the Hello World example – but, even better, you can check out two videos that I just recorded:
- How Salsa Works, which gives a high-level introduction to the key concepts involved and shows how to use salsa;
- Salsa In More Depth, which really digs
into the incremental algorithm and explains – at a high-level – how Salsa is implemented.
- Thanks to Jonathan Turner for helping me to make this one!
If you’re interested in salsa, please jump on to our Zulip instance at salsa.zulipchat.com. It’s a really fun project to hack on, and we’re definitely still looking for people to help out with the implementation and the design. Over the next few weeks, I expect to be outlining a “path to 1.0” with a number of features that we need to push over the finish line.