Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 03-May-2022 | - | ||||
.github/workflows/ | H | 03-May-2022 | - | 99 | 92 | |
book/ | H | 03-May-2022 | - | 2,742 | 2,216 | |
examples/ | H | 03-May-2022 | - | 366 | 195 | |
src/ | H | 03-May-2022 | - | 4,874 | 3,128 | |
tests/ | H | 03-May-2022 | - | 2,980 | 2,119 | |
.cargo-checksum.json | H A D | 03-May-2022 | 89 | 1 | 1 | |
.cargo_vcs_info.json | H A D | 05-Aug-2020 | 74 | 6 | 5 | |
.dir-locals.el | H A D | 09-Jun-2020 | 40 | 2 | 1 | |
.gitignore | H A D | 09-Jun-2020 | 41 | 6 | 5 | |
Cargo.lock | H A D | 05-Aug-2020 | 11.4 KiB | 447 | 395 | |
Cargo.toml | H A D | 05-Aug-2020 | 1.4 KiB | 63 | 49 | |
Cargo.toml.orig-cargo | H A D | 05-Aug-2020 | 724 | 31 | 26 | |
FAQ.md | H A D | 03-Jul-2020 | 1.5 KiB | 35 | 26 | |
LICENSE-APACHE | H A D | 09-Jun-2020 | 10.6 KiB | 202 | 169 | |
LICENSE-MIT | H A D | 09-Jun-2020 | 1,023 | 24 | 21 | |
README.md | H A D | 03-Jul-2020 | 2.1 KiB | 50 | 34 | |
RELEASES.md | H A D | 09-Jun-2020 | 651 | 15 | 12 |
README.md
1# salsa 2 3[![Test](https://github.com/salsa-rs/salsa/workflows/Test/badge.svg)](https://github.com/salsa-rs/salsa/actions?query=workflow%3ATest) 4[![Book](https://github.com/salsa-rs/salsa/workflows/Book/badge.svg)](https://github.com/salsa-rs/salsa/actions?query=workflow%3ABook) 5[![Released API docs](https://docs.rs/salsa/badge.svg)](https://docs.rs/salsa) 6[![Crates.io](https://img.shields.io/crates/v/salsa.svg)](https://crates.io/crates/salsa) 7 8*A generic framework for on-demand, incrementalized computation.* 9 10## Obligatory warning 11 12Very much a WORK IN PROGRESS at this point. Ready for experimental use 13but expect frequent breaking changes. 14 15## Credits 16 17This system is heavily inspired by [adapton](http://adapton.org/), [glimmer](https://github.com/glimmerjs/glimmer-vm), and rustc's query 18system. So credit goes to Eduard-Mihai Burtescu, Matthew Hammer, 19Yehuda Katz, and Michael Woerister. 20 21## Key idea 22 23The key idea of `salsa` is that you define your program as a set of 24**queries**. Every query is used like function `K -> V` that maps from 25some key of type `K` to a value of type `V`. Queries come in two basic 26varieties: 27 28- **Inputs**: the base inputs to your system. You can change these 29 whenever you like. 30- **Functions**: pure functions (no side effects) that transform your 31 inputs into other values. The results of queries is memoized to 32 avoid recomputing them a lot. When you make changes to the inputs, 33 we'll figure out (fairly intelligently) when we can re-use these 34 memoized values and when we have to recompute them. 35 36## Want to learn more? 37 38To learn more about Salsa, try one of the following: 39 40- read the [heavily commented `hello_world` example](https://github.com/salsa-rs/salsa/blob/master/examples/hello_world/main.rs); 41- check out the [Salsa book](https://salsa-rs.github.io/salsa); 42- watch one of our [videos](https://salsa-rs.github.io/salsa/videos.html). 43 44## Getting in touch 45 46The bulk of the discussion happens in the [issues](https://github.com/salsa-rs/salsa/issues) 47and [pull requests](https://github.com/salsa-rs/salsa/pulls), 48but we have a [zulip chat](https://salsa.zulipchat.com/) as well. 49 50