cl-dataflow¶
cl-dataflow is a Common Lisp library for composable computation graphs:
pipelines, event-driven workflows, guarded state machines, effect boundaries,
lazy streams, and their push-based reactive dual. It targets SBCL, keeps its
entire public surface behind a single package, and takes exactly one runtime
dependency — cl-prolog, which
backs the graph edge relation. Where a general-purpose graph library gives you
data structures, cl-dataflow gives you a runtime: graphs that execute, carry
a context, record a trace, and hand control to a state machine.
Where to go next¶
New here? Getting Started → Core Concepts. Those three pages get you from an empty REPL to a running pipeline, plus the vocabulary the rest of the site assumes.
Building graphs. Graphs covers construction, validation, mutation, and export; Graph Algorithms and Graph Analysis cover the thirty or so analyses on top — connectivity, centrality, criticality, flow, and weighted shortest paths.
Running work through them. Pipelines and Workflows for sequential, branching, and fixpoint execution; State Machines for guarded transitions; Events and Effects for the boundaries that let one workflow drive another.
Processing sequences. Streams (Pull) is a lazy transducer layer, Reactive Subjects (Push) is its producer-driven dual, and Combinators and Resilience adds retry, fallback, memoization, and contracts around handlers. Observability and Serialization covers rendering and round-tripping what ran.
Looking something up. Public API Reference lists every exported symbol. Architecture explains how the runtime is split and carries the feature-by-feature status table. Development has the build, test, and coverage commands.
Design non-goals¶
cl-dataflow is intentionally not:
- a CLI framework
- parser combinators
- terminal or TTY handling
- a Prolog engine
- an HTTP server
- a database adapter
- a distributed execution runtime
- an async runtime
- a large dependency injection framework
- a generic utility package
Project¶
Contribution guidelines, the security policy, and the code of conduct are org-wide and live in nerima-lisp/.github.
MIT licensed — see LICENSE.