Crates.io | topo |
lib.rs | topo |
version | 0.13.2 |
source | src |
created_at | 2019-05-26 23:26:42.277478 |
updated_at | 2021-02-02 04:04:20.731955 |
description | Tools for incrementally computing repeated callgraphs. |
homepage | https://moxie.rs |
repository | https://github.com/anp/moxie.git |
max_upload_size | |
id | 137216 |
size | 35,697 |
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.
wasm-bindgen
cargo feature which enables correct usage of parking_lot on wasm32 targets.cache
module extracted to the dyn-cache
crate.cache::{Cache, LocalCache}::get_if_arg_eq_prev_input
also returns hash of the
query type, and cache::{Cache, LocalCache}::store
requires it.cache::Hashed
holds a query key and its hash for later storage.cache::{Cache, LocalCache}::get_if_arg_eq_prev_input
now returns Err(Hashed)
rather than
None
when a lookup fails. The store
function on both types now requires that Hashed
to be
passed when inserting new input & output.Id
generation is no longer vulnerable to hashing collisions.slot
.cache::{Cache, GlobalCache}
types for storing interned and memoized values.cache::{SharedCache, SharedGlobalCache}
types for safe multiple-owner access to caches,
implementing cache_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).Callsite
and Point
are no longer pub
.#![feature(track_caller)]
is no longer needed, although until 1.46 hits beta/stable an MSRV of
nightly-2020-07-02 applies.call_in_slot
accepts borrowed slots.Id
renamed to CallId
.illicit
dependency updated to 1.0.impl Trait
has been removed from public APIs where it may cause accidental Send
/!Send
contracts.illicit
dependency to 0.9.0
.#[track_caller]
is used to generate Id
s, replacing macros. Requires nightly for now.DefaultHasher
instead of FnvHasher
.call
, call_in_slot
functions.call!
and unstable_make_topo_macro!
macros.fnv
crate for hashing Id
s.#![warn(intra_doc_resolution_failure)]
was causing docs.rs issues due to root_html_url.#![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.call!
when no Point
has already been entered will now create a new root and enter it
before executing the block.#[bound]
to #[nested]
.current_callsite_count
to Callsite::current_count
.env!
, Env
, #[from_env]
moved to illicit
crate.root!
removed in favor of creating a new root whenever call!
is invoked outside of a Point
.root!
no longer hides the outer environment from the called block.Id
's Debug
impl uses hex.#[topo::bound]
attaches a function to the topology.root!
and call!
macros attach arbitrary blocks to a new or the current topology respectively,
entering new Point
s for each call, each of which has a (mostly) unique Id
.env!
macro allows declaring type-indexed implicit variables, produces Env
instances.Published to reserve name on crates.io.