Conversation

Replying to and
It uses lower time complexity algorithms, avoids lots of unnecessary work and has built-in implementations of commonly used shell commands. It has clever things like a built-in $(shell find) where it can track the timestamps of those directories and avoid running find again.
1
10
It's not just that ninja is faster but that it's a much faster implementation of dealing with make. It's not an entirely complete GNU make implementation and they take the practical approach of requiring minor build system adjustments. It's also more reliable than GNU make.
1
9
It's clever enough to realize that it needs to cope with environment variables changing, etc. compared to GNU make where if you change CFLAGS, it's not going to realize that it actually needs to rebuild everything. It was made as a stopgap while Android moves to Blueprint files.
1
8
I think it would be very useful for many people outside of Android if they knew it existed. There are a lot of other neat tools like this in Android and Chromium. They're huge projects and they come up with some really nice tooling to deal with real problems in a practical way.
3
10
kati is particularly optimized for the template-based Android make build system. Android turned make into a declarative build system where you describe the end result with variables and it figures out what to do. It was quite nice but Blueprint formalizes it and makes it nicer.
1
3
Other projects could adopt kati by purging some edge cases from their build system, teaching it how to handle some others and teaching it to optimize for their own idioms. It would be pretty easy and it would save them huge amounts of development time. Turns minutes to seconds.
2
2
You should use some nice, modern frontend to ninja or a modern build tool like Bazel. They only started implementing kati for Android once they'd started building a declarative build system. They realized it'd take years to migrate the massive build system for over 500 projects.
1