- major refactoring to the database APIs for safer parallel
processing (#78, #82):
- To set an input, you now write `db.query_mut(Query).set(...)`,
and you must declare your database as `mut`.
- To fork a thread, you now write `db.snapshot()`, which acquires
a read-lock that is only released when the snapshot is dropped
(note that this read-lock blocks `set` from occuring on the main
thread).
- Therefore, there can only be one mutable handle to the
database; all other handles are snapshots. This eliminates a variety
of complex and error-prone usage patterns.
- introduced the `salsa_event` callback that can be used for logging
and introspection (#63)
Changes:
- correct dead locks and add parallel stress test (#72)
- we now panic if you `get` an input that has not been `set` and
we do not compare inputs for equality (thus dropped `Default` and `Eq`
bounds) (#69)
- `PanicGuard` now detects internal salsa bugs (#71)