mirror of
https://github.com/salsa-rs/salsa.git
synced 2024-11-28 17:42:00 +00:00
33 lines
1.1 KiB
Markdown
33 lines
1.1 KiB
Markdown
# salsa
|
|
|
|
*A generic framework for on-demand, incrementalized computation.*
|
|
|
|
## Obligatory warning
|
|
|
|
Very much a WORK IN PROGRESS at this point. Not really ready for use.
|
|
|
|
## 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.
|
|
|
|
## Goals
|
|
|
|
It tries to hit a few goals:
|
|
|
|
- No need for a base crate that declares the "complete set of queries"
|
|
- Each query can define its own storage and doesn't have to be memoized
|
|
- Each module only has to know about the queries that it depends on
|
|
and that it provides (but no others)
|
|
- Compiles to fast code, with no allocation, dynamic dispatch, etc on
|
|
the "memoized hit" fast path
|
|
- Can recover from cycles gracefully (though I didn't really show
|
|
that)
|
|
- Should support arenas and other lifetime-based things without requiring
|
|
lifetimes everywhere when you're not using them (untested)
|
|
|
|
## Example
|
|
|
|
There is a working `hello_world` example which is probably the best documentation.
|
|
More to come when I expand out a few more patterns.
|