The build.lua
build system provides an entire
family of build systems implemented almost entirely in Lua
5.4. Inspired by the amazing Build
Systems a la Carte by Andrey Mokhov, Neil Mitchell and
Simon Peyton Jones, this small Lua library implements (and
allows you to implement) a multitude of otherwise completely
separate tools.
See the included make
inspired
tool.
A build system library
This is a library for building build systems. Right now I only provide a prebuilt implementation of make, but I plan on adding implementations of ninja and redo inspired tools.
You can build your own systems on top of this. It implements the architecture of the mentioned paper and you can even mix and match parts from different build systems. For example, mixing make's topological scheduler with Apenwarr's rebuilder. Or write a Shake-like DSL (but using Lua) and swap between different "hashers" for checking when a file is up to date (do you want early stopping via a SHA1 hash? or just check mtimes like make? or maybe a mix of the two?).
Topological | Restarting | Suspending | |
---|---|---|---|
Modification time | Yes | No | Yes |
Verifying Traces | Yes | No | Yes |
Constructive Traces | No | No | No |
Deep Constructive Traces | No | No | No |
I still need to implement:
- The restarting scheduler.
- Constructive traces.
- Deep constructive traces.