This page describes the unreleased "Salsa 2022" version, which is a major departure from older versions of salsa. The code here works but is only available on github and from the salsa-2022 crate.

This chapter documents the code that salsa generates and its "inner workings". We refer to this as the "plumbing".


The plumbing section is broken up into chapters:

  • The jars and ingredients covers how each salsa item (like a tracked function) specifies what data it needs and runtime, and how links between items work.
  • The database and runtime covers the data structures that are used at runtime to coordinate workers, trigger cancellation, track which functions are active and what dependencies they have accrued, and so forth.
  • The query operations chapter describes how the major operations on function ingredients work. This text was written for an older version of salsa but the logic is the same:
  • The terminology section describes various words that appear throughout.