Streaming calculation graph, written in Go.
It is currently a toy project to discover Go's features.
Here are the currently avaiable node types:
- Constant
- Observer
- Sink
- Add/Sub/Mul (variadic, type promotion)
- FanIn
- (FanOut is automatic and implicit, by branching a node's output to multiple other)
- Assembler (variadic)
A node can either be run in a step by step manner by calling its Run() method, or it can be looped over.
An Executor facility permits running or looping a node concurrently, while being easily interruptible.
The AssemblerNode permits collecting exactly one value from each input Node and returning them as a slice.
This helps constructing variadic nodes, as well as synchronizing nodes' work.
It can optionaly verify that each value is of a given type.
This project is licensed under the 2-clause BSD license. See LICENSE file.