Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I wish there was something like an updated Make, a tool that works for everything but updated to 2018.

For instance Make works based on timestamps and therefore works very poorly together with git. Switch to another branch and you can get weird effects based on what files were updated and not and often trigger needless rebuilds. And everyone uses git these days.

GNU Make, just using hashes instead of timestamps, would be a huge step forward.




> I wish there was something like an updated Make, a tool that works for everything but updated to 2018.

Is ninja that tool?


> GNU Make, just using hashes instead of timestamps

Sounds like you're describing make on a system with ccashe installed. Hashing incurs a significant performance hit. The first build with ccashe is 20% slower than building without it[1]. Your modern make would likely be slower for people who just build something from source once and aren't doing incremental development.

https://ccache.samba.org/performance.html


ccache is just for c/c++..

Did you consider that it could be other things with ccache that makes it slow? E.g., the need to fully expand C headers and turn it into a text stream (NOT needed for a build tool).

Everything with git is lightning fast including operations that require a full directory tree diff / hash.


Gradle does this. There is definitely a few extra seconds of overhead compared to make, but that's hardly intolerable.


That'd require hashing every file on every run to figure out what changed. Not a good idea.

There are modern tools that work for many things. Gradle supports native compilation these days as well as any JVM language. Bazel supports compiling many kinds of languages, and there's still scons.


I've tried scons, waf, CMake, etc, always ended up hating them and return to standard Makefiles. SCons is the worst I've tried ever.

As to the cost of hashing: "git status" runs on 0.009s and requires a full diff of my working directory?..


>That'd require hashing every file on every run to figure out what changed. Not a good idea.

it is using time stamp to check whether to hash to check for changes.


CMake?


CMake generates a standard Makefile for dependency change tracking doesn't it? Just timestamp-based on hash-based?




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: