I want a better build executor

27 points by polywolf


david_chisnall

Perhaps I missed this, but it looks as if this isn’t solving the big problem that Ninja has: the lack of support for dynamically discovering edges in the build graph. This is something that C++ modules require and is a big part of the reason language like Rust and Java pretend to be a single step to any outer build system. Even LaTeX has this requirement: if you run latex, you may discover you need to rerun latex to update cross references, you need to run BibTeX to update dependencies, and so on.

tomas

I was looking so long for the Tomorrow Corporation Tech Demo, but could not remember the title.

Other than in the header, I don't see any mention of determinism and how it relates to the proposed architecture.

andyc

Like n2, ronin would use a single-pass approach to support early cutoff. It would hash an "input manifest" to decide whether to rebuild. Unlike n2, it would store a mapping from that hash back to the original manifest so you can query why a rebuild happened.

Hm, why not fork/contribute this feature to n2 ?

The main advantage of Ronin is that it can slot in underneath existing build systems people are already using—CMake and Meson—without needing changes to your build files at all.

It looks like n2 has some affordances here too, and I guess it uses the same syntax as ninja.

From https://github.com/evmar/n2:

n2 can emulate the expected CMake behavior when invoked as ninja. To do this you create a symlink named ninja somewhere in your $PATH, such that CMake can discover it.

The EDN format seems superfluous ... why not use ninja syntax, or a superset of it?