This repo is the very early experimental code that will eventually become a C++11 library that implements a dataflow model on a directed acyclic graph (DAG).
The idea is inspired by various financial software systems that have this use case e.g. asset pricing models defined by a graph of spreads to other assets, but it is intended to be applicable to generic use-cases.
The aims of the library are to :
- Provide a framework to construct a graph of dependent values (i.e. nodes) defined by the arguments and the return values of pure functions defined by the client
- a 'driven' model requiring a call to a calculate function, not an 'actor/event/responsive' model
- Provide a singlethreaded and multithreaded routine to calculate all the values in the graph in the correct order of dependency
- Avoid recomputing values that have not changed
- To allow the graph to be updated in between calculations
- Be statically type-safe throughout
- Strive for simplicity of use - Not necessarily of implementation
- Minimal dependencies
- Header only library