package incremental

  1. Overview
  2. Docs

A low-level, experimental interface to incremental. This is useful when you need more control over the dependency graph, for performance reasons. It comes at the cost that it's much harder to use right. Specifically, here is what you can do with an expert node:

  • learn when any child changes, so the expert node can update itself incrementally, rather than having to look at the value of all its children.
  • incrementally update its set of parents.
  • select which parents should fire.

If you use this interface, you are most definitely advised to test carefully, and in particular you should try it out using incremental_debug, which is going to check most pre-conditions.

module Dependency : sig ... end
module Node : sig ... end
module Step_result : sig ... end
val do_one_step_of_stabilize : _ State.t -> Step_result.t

do_one_step_of_stabilize state runs a part of stabilization. This can be used as a replacement for stabilize, to split up potentially long calls to stabilize.

A stabilization is ongoing until do_one_step_of_stabilize returns Done. During such a stabilization, behavior is the same as during a regular stabilization.

Calling do_one_step_of_stabilize during a call to do_one_step_of_stabilize or stabilize is a programming error but it is not detected. Behavior is undefined.