
Redo: a recursive, general-purpose build system for fast parallel builds - jnxx
https://redo.readthedocs.io/en/latest/
======
jnxx
What is also interesting is that the appenwar implementation has now support
for serializing logs in parallel builds:

[https://apenwarr.ca./log/20181106](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:

[https://jdebp.eu/FGA/introduction-to-
redo.html](https://jdebp.eu/FGA/introduction-to-redo.html)

------
JdeBP
More past discussions that might be of interest:

* [https://news.ycombinator.com/item?id=15060146](https://news.ycombinator.com/item?id=15060146)

* [https://news.ycombinator.com/item?id=15060193](https://news.ycombinator.com/item?id=15060193)

* [https://news.ycombinator.com/item?id=18425734](https://news.ycombinator.com/item?id=18425734)

* [https://news.ycombinator.com/item?id=15182585](https://news.ycombinator.com/item?id=15182585)

------
JdeBP
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.

