Redo: a recursive, general-purpose build system for fast parallel builds
What is also interesting is that the appenwar implementation has now support for serializing logs in parallel builds:
https://apenwarr.ca./log/20181106
The linked documentation does a good job why redo is a very, very interesting (and for the complexity of the task, stunningly simple) approach to a build system. I find the approach to support parallel builds quite enlightening, and I also like a lot the property that it is language-agnostic, which is very helpful for larger projects, but also makes it easier to include special tools in C/C++ projects.
There are also some shortcomings of the design and some implementations of redo which are discussed here:
More past discussions that might be of interest:
* https://news.ycombinator.com/item?id=15060146
* https://news.ycombinator.com/item?id=15060193
By the way:
> At the time of this writing, none of them except apenwarr/redo (ie. this project) support parallel builds (redo -j).
I don't know where this information came from, but my (second) redo supported the --jobs option and interoperability with GNU make's jobs system (in either direction, make invoking redo or redo invoking make) from its very first version onwards. That's over half a decade ago, now. The Neukirchen one has similarly had -j, albeit using a mechanism that does not interoperate with GNU make, since at least 2015.