The build.lua build system

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?).

Implemented schedulers and rebuilders
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: