• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H03-May-2022-9992

book/H03-May-2022-2,7422,216

examples/H03-May-2022-366195

src/H03-May-2022-4,8743,128

tests/H03-May-2022-2,9802,119

.cargo-checksum.jsonH A D03-May-202289 11

.cargo_vcs_info.jsonH A D05-Aug-202074 65

.dir-locals.elH A D09-Jun-202040 21

.gitignoreH A D09-Jun-202041 65

Cargo.lockH A D05-Aug-202011.4 KiB447395

Cargo.tomlH A D05-Aug-20201.4 KiB6349

Cargo.toml.orig-cargoH A D05-Aug-2020724 3126

FAQ.mdH A D03-Jul-20201.5 KiB3526

LICENSE-APACHEH A D09-Jun-202010.6 KiB202169

LICENSE-MITH A D09-Jun-20201,023 2421

README.mdH A D03-Jul-20202.1 KiB5034

RELEASES.mdH A D09-Jun-2020651 1512

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