A modern, efficient, embedded build system. Features include:
- Dynamic dependencies: Dependencies can be discovered at runtime; not everything needs to be declared in advance.
- Early cutoff: Avoids building reverse dependencies if results haven't changed.
- Minimal: Only rebuilds when out of date, at most once.
- Persistent: Results are transparently cached in a SQLite database, and can be shared across machines.
- Parallel: Independent builds occur in parallel.
- Ergonomic: Tasks can be written as regular Haskell functions, registered with Template Haskell.
In "Build Systems à la Carte" terminology, this pairs a suspending scheduler with constructive traces for rebuilding, similar to Buck2.
This was extracted from another project, so most of the Git history lives there.