A general-purpose Incremental Computation (IC) library for Rust.
available on crates.io
Based on:
The library exposes a small core interface.
See the Adapton trait.
The library uses rust macros to provide syntactic sugar.
See macros.
The library implements this interface with an imperative data structure, and without garbage collection.
See Engine.
The library provides generic incremental data structures and algorithms.
See also: collection.rs:
Next:
The library provides interfaces to script interactions using generic DSLs for editing and querying
See also: collection.rs:
Pure Function Caching:
Incremental computation via function caching
Bill Pugh and Tim Teitelbaum.
POPL 1989.
Structural Adapton:
Adapton: Composable, Demand-Driven Incremental Computation.
Matthew A. Hammer, Yit Phang Khoo, Michael Hicks and Jeffrey S. Foster.
PLDI 2014.
Nominal Adapton:
Incremental Computation with Names
Matthew A. Hammer, Joshua Dunfield, Kyle Headley, Nicholas Labich, Jeffrey S. Foster, Michael Hicks, David Van Horn.
OOPSLA 2015.
engine.rs I wrote Producer::copy and the ShapeShifter trait. Both avoid returning a Self. Rc<Box<Fn (_) -> _>> instead of Rc<Fn (_) -> _>?