Skip to content
twmarshall edited this page Sep 10, 2014 · 10 revisions

TBD is designed to support incremental computation - keeping the output of a computation up-to-date with changes to the input with the least amount of work possible. In particular, TBD utilizes self-adjusting computation, a method of performing incremental computation developed by Umut Acar.

In self-adjusting computation, all values in a program that may change, either because they are an input value that may be changed by something external to the computation or because they depend on an input value, must be contained within an object called a 'modifiable'.

Modifiables can only be accessed using the functions in the library TBD provides, ensuring that TBD can track the execution of the computation and determine which portions of the program must be reexecuted when the input is updated, a process called change propagation.

In order to efficiently support change propagation, TBD maintains a 'dynamic dependency graph', a data structure that relates modifiables to the code that depends on their values. Finally, TBD supports a concept of memoization, which can prevent unnecessary code reexecution.

For a more detailed explanation of how TBD works, see the pages below:

TBD's Architecture

Defining Self-Adjusting Algorithms

Clone this wiki locally