Skip to content
/ salsa Public

A generic framework for on-demand, incrementalized computation. Inspired by adapton, glimmer, and rustc's query system.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

salsa-rs/salsa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0414d89 · May 23, 2025
Jul 28, 2024
May 23, 2025
May 9, 2025
May 22, 2025
May 23, 2025
May 9, 2025
May 23, 2025
May 23, 2025
Sep 28, 2018
Aug 24, 2022
May 23, 2025
May 23, 2025
Jun 26, 2020
Sep 28, 2018
Sep 28, 2018
Mar 19, 2025
Aug 15, 2019
May 23, 2025
Mar 9, 2025

Repository files navigation

salsa

Test Book Released API docs Crates.io

A generic framework for on-demand, incrementalized computation.

Salsa Logo

Obligatory warning

Very much a WORK IN PROGRESS at this point.

Credits

This system is heavily inspired by adapton, glimmer, and rustc's query system. So credit goes to Eduard-Mihai Burtescu, Matthew Hammer, Yehuda Katz, and Michael Woerister.

Key idea

The key idea of salsa is that you define your program as a set of queries. Every query is used like function K -> V that maps from some key of type K to a value of type V. Queries come in two basic varieties:

  • Inputs: the base inputs to your system. You can change these whenever you like.
  • Functions: pure functions (no side effects) that transform your inputs into other values. The results of queries are memoized to avoid recomputing them a lot. When you make changes to the inputs, we'll figure out (fairly intelligently) when we can re-use these memoized values and when we have to recompute them.

Want to learn more?

To learn more about Salsa, try one of the following:

Getting in touch

The bulk of the discussion happens in the issues and pull requests, but we have a zulip chat as well.

Contributing

To create a release and publish to crates.io, update the version field in Cargo.toml. After pushed, GitHub Actions will publish the crates to crates.io automatically.

About

A generic framework for on-demand, incrementalized computation. Inspired by adapton, glimmer, and rustc's query system.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages