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 |
#179 in Caching
28 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-bindgen
cargo feature which enables correct usage of parking_lot on wasm32 targets.
[0.13.0] - 2020-07-19
Removed
cache
module extracted to thedyn-cache
crate.
[0.12.0] - 2020-07-06
Changed
- Return type of
cache::{Cache, LocalCache}::get_if_arg_eq_prev_input
also returns hash of the query type, andcache::{Cache, LocalCache}::store
requires it.
[0.11.0] - 2020-07-06
Added
cache::Hashed
holds a query key and its hash for later storage.
Changed
cache::{Cache, LocalCache}::get_if_arg_eq_prev_input
now returnsErr(Hashed)
rather thanNone
when a lookup fails. Thestore
function on both types now requires thatHashed
to 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
Id
generation 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_with
with careful locking to allow nested calls in the future.root
free function for allowing one to re-root a call topology (i.e. if running inside of a broader one).
Removed
Callsite
andPoint
are 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_slot
accepts borrowed slots.Id
renamed toCallId
.illicit
dependency updated to 1.0.impl Trait
has been removed from public APIs where it may cause accidentalSend
/!Send
contracts.
[0.9.4] - 2019-12-26
Changed
- Updated
illicit
dependency to0.9.0
.
[0.9.3] - 2019-12-25
Changed
#[track_caller]
is used to generateId
s, replacing macros. Requires nightly for now.- Use
DefaultHasher
instead ofFnvHasher
.
Added
call
,call_in_slot
functions.
Removed
call!
andunstable_make_topo_macro!
macros.
[0.9.2] - 2019-11-23
Changed
- Using
fnv
crate for hashingId
s.
[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 noPoint
has already been entered will now create a new root and enter it before executing the block.
Changed
- Rename
#[bound]
to#[nested]
. - Rename
current_callsite_count
toCallsite::current_count
.
Removed
env!
,Env
,#[from_env]
moved toillicit
crate.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
'sDebug
impl 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 newPoint
s for each call, each of which has a (mostly) uniqueId
.env!
macro allows declaring type-indexed implicit variables, producesEnv
instances.
[0.1.0] - 2019-05-26
Published to reserve name on crates.io.
Dependencies
~2.8–5MB
~93K SLoC