The primary motivation here is reducing dependencies. rand has quite a
few of them, and many come from `getrandom` crate (bindings to system
APIs to get true randomness). Some of `getrandom` crates don't have
Apache 2.0 OR MIT license, and it probably doesn't make sense to make
salsa's licensing situation more complicated for feature we don't even
use.
There's a number of small&fast random crates there:
* randomize
* oorandom
* fastrand
I've picked oorandom because it was the simplest & smallest (doesn't
have a thread_local RNG, for example).
Changes:
- Add interned keys to salsa (#150) -- see salsa-rs/salsa-rfcs#2
for more details.
- Fix bugs re: GC and volatile queries
- Optimization for GC (#144), though I think this later got undone
as part of the bug fixes =)
- GC API now more orthogonal + flexible (#138)
- Removed `set_unchecked` testing mechanism (#141)
- Generated enums now squelch `non_camel_case_types` lint (#135)
- Tests now using `set_foo` (#139)
- `Query::group_storage` now called `Query::query_storage` (#142)
Contributors to this release:
- @matklad
- @memoryruins
- @nikomatsakis
- You now write `#[salsa::database(query_groups...)]` instead of
`database_storage!`, and you don't ned to list individual
queries (#123, #124, #125)
- We now generate `set_foo` methods for inputs (#126)
- We can now peek at values using debug query interface (#122)
- Local handles recover from unwinds better (#114)
- We don't issue docs for `__SalsaQueryDescriptor` (#116)
- The unwind safety impls were moved about (internal refactoring, #115)
Contributors (since I've not been citing these in the past, this
includes all contributors to salsa to date):
- @cormacrelf
- @fabianschuiki
- @jrmuizel
- @kleimkuhler
- @matklad
- @memoryruins
- @nikomatsakis
Switch to a procedural implementation of the `query_group!` macro,
residing in the `components/salsa_macros` subcrate.
Allow the user to override the invoked function via `salsa::invoke(...)`
and the name of the generated query type via `salsa::query_type(...)`.
In all tests, replace the `salsa::query_group! { ... }` invocations with
the new attribute-style `#[salsa::query_group]` macro, and change them
to the new naming scheme for query types (`...Query`).
Update README, examples, and documentation.
- Panic safety improvements (#81)
- We build on stable now (#94)
- Removed use of dynamic dispatch for constructing query
descriptors (#95)
- Technically a breaking change, though unlikely to affect clients
- Removed use of upgradable reads to avoid Amanieu/parking-lot#101 (#75)
- Upgraded parking lot (#100)
- Improved Debug output (#98)
- Snapshot implements Debug (#85)