| Crates.io | topo |
| lib.rs | topo |
| version | 0.13.2 |
| created_at | 2019-05-26 23:26:42.277478+00 |
| updated_at | 2021-02-02 04:04:20.731955+00 |
| 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 Ids, 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 Ids.#![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 Points 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.