- Adds a
Let_syntax
module toIncremental_intf.S
. We've found things like this useful in a couple of different projects as a nice alternative to themapN
functions.
-
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 : bool
So, 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 bothtrue
andfalse
. 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 = true
that 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.