A generic framework for on-demand, incrementalized computation.
This is a fork of https://github.com/salsa-rs/salsa/ adjusted to rust-analyzer's needs.
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.
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:
To learn more about Salsa, try one of the following:
hello_world
example;The bulk of the discussion happens in the issues and pull requests, but we have a zulip chat as well.