15 releases (6 breaking)
| 0.13.2 | Feb 2, 2021 |
|---|---|
| 0.13.1 | Dec 29, 2020 |
| 0.13.0 | Jul 20, 2020 |
| 0.9.4 | Dec 27, 2019 |
| 0.8.0 | Jun 23, 2019 |
#297 in Caching
188 downloads per month
Used in 10 crates
(4 directly)
105KB
1.5K
SLoC
topo
The topo crate provides incremental caching and identifiers for repeated function invocations. Together with a change notification mechanism it can be used to implement a form of incremental computing.
[0.13.2] - 2021-02-01
Changed
- Internal refactors to reduce code size.
[0.13.1] - 2020-12-28
Added
wasm-bindgencargo feature which enables correct usage of parking_lot on wasm32 targets.
[0.13.0] - 2020-07-19
Removed
cachemodule extracted to thedyn-cachecrate.
[0.12.0] - 2020-07-06
Changed
- Return type of
cache::{Cache, LocalCache}::get_if_arg_eq_prev_inputalso returns hash of the query type, andcache::{Cache, LocalCache}::storerequires it.
[0.11.0] - 2020-07-06
Added
cache::Hashedholds a query key and its hash for later storage.
Changed
cache::{Cache, LocalCache}::get_if_arg_eq_prev_inputnow returnsErr(Hashed)rather thanNonewhen a lookup fails. Thestorefunction on both types now requires thatHashedto be passed when inserting new input & output.- Cache contents are GC'd in a single loop, previously there were two iterations over each namespace.
Fixed
- This release removes the last "known redundant" work in the cache API.
[0.10.0] - 2020-07-05
Fixed
Idgeneration is no longer vulnerable to hashing collisions.
Added
- #[nested] allows specifying a
slot. cache::{Cache, GlobalCache}types for storing interned and memoized values.cache::{SharedCache, SharedGlobalCache}types for safe multiple-owner access to caches, implementingcache_withwith careful locking to allow nested calls in the future.rootfree function for allowing one to re-root a call topology (i.e. if running inside of a broader one).
Removed
CallsiteandPointare no longerpub.#![feature(track_caller)]is no longer needed, although until 1.46 hits beta/stable an MSRV of nightly-2020-07-02 applies.
Changed
call_in_slotaccepts borrowed slots.Idrenamed toCallId.illicitdependency updated to 1.0.impl Traithas been removed from public APIs where it may cause accidentalSend/!Sendcontracts.
[0.9.4] - 2019-12-26
Changed
- Updated
illicitdependency to0.9.0.
[0.9.3] - 2019-12-25
Changed
#[track_caller]is used to generateIds, replacing macros. Requires nightly for now.- Use
DefaultHasherinstead ofFnvHasher.
Added
call,call_in_slotfunctions.
Removed
call!andunstable_make_topo_macro!macros.
[0.9.2] - 2019-11-23
Changed
- Using
fnvcrate for hashingIds.
[0.9.1] - 2019-11-21
Removed
#![warn(intra_doc_resolution_failure)]was causing docs.rs issues due to root_html_url.
[0.9.0] - 2019-11-19
Added
#![forbid(unsafe_code)]call!accepts a "slot" other than the number of times a callsite has been seen. The callsite count is still the default.- Invoking
call!when noPointhas already been entered will now create a new root and enter it before executing the block.
Changed
- Rename
#[bound]to#[nested]. - Rename
current_callsite_counttoCallsite::current_count.
Removed
env!,Env,#[from_env]moved toillicitcrate.root!removed in favor of creating a new root whenevercall!is invoked outside of aPoint.
[0.8.2] - 2019-08-20
Fixed
root!no longer hides the outer environment from the called block.
[0.8.1] - 2019-08-17
Changed
Id'sDebugimpl uses hex.
Fixed
- Incorrect line endings.
[0.8.0] - 2019-06-23
Added
#[topo::bound]attaches a function to the topology.root!andcall!macros attach arbitrary blocks to a new or the current topology respectively, entering newPoints for each call, each of which has a (mostly) uniqueId.env!macro allows declaring type-indexed implicit variables, producesEnvinstances.
[0.1.0] - 2019-05-26
Published to reserve name on crates.io.
Dependencies
~3–5MB
~93K SLoC