- Added
Scope.is_topto determine if the scope is the top-level scope (outside of any binds) - Add an optional
emit_bind_edgesparameter to allsave_dotgraphviz functions which you can use to omit the dashed lines connecting bind nodes to nodes allocated in their scope - Expose
For_analyzermodule in theIncrementalinterface for traversal ofIncrnodes for analysis purposes.
- Add
incr_memoizelibrary for memoizing incremental binds. This library keeps the incremental nodes of old binds alive by storing them in a data structure.- Introduce
Store_paramssubmodule for configuring the memoization behavior.
- Introduce
- Adds a
Let_syntaxmodule toIncremental_intf.S. We've found things like this useful in a couple of different projects as a nice alternative to themapNfunctions.
-
Made it possible to use Incremental without invalidation -- i.e. a change in a the left-hand side of bind does not invalidate nodes created on the right-hand side.
This is configurable via the argument to
Incremental.Make_with_config, which now takes:val bind_lhs_change_should_invalidate_rhs : boolSo, one can now build an Incremental without invalidation using:
Incremental.Make_with_config (struct include Incremental.Config.Default () let bind_lhs_change_should_invalidate_rhs = false end) ()The implementation is simple: When a bind rhs changes, instead of
invalidate_nodes_created_on_rhs, werescope_nodes_created_on_rhs, which moves the nodes up to the bind's parent.Turned the unit tests into a functor parameterized on
bind_lhs_change_should_invalidate_rhs, and run them with bothtrueandfalse. Modified tests where necessary to skip tests of invalidity whenbind_lhs_change_should_invalidate_rhs = false.Added a unit test of
bind_lhs_change_should_invalidate_rhs = truethat makes sure a node created on a bind rhs whose lhs subsequently changes continues to stabilize correctly. -
Splitted incremental into a part that can run in javascript, incremental_kernel, and the other one.
-
Add README.org to Incremental.
-
Added some type annotations based on comments by @def-lkb about lack of principality.
-
Switched to ppx.