Re:Knit: Making a Better Make
by kensai on Saturday April 08, 2023 @07:23AM
(#35492294)
Nice project. Is it ready for prime time? Btw, are there any other alternatives to be compared with it and Make?
[ Parent
| on HN ]
I've seen a few, but the only one I can remember off the top of my head is just[0].
It should be noted that just specifically does something make was not designed for but is often conscripted into: it’s not a build tool, it’s a command runner.
So when you run a command it runs the dependencies then the commands, in full, every time.
I very much prefer that usually, because either the underlying tooling handles checking if all’s right or there is no such checking to do and it would be a problem.
But if you expect just to build your C project and handle not touching stuff which doesn’t need to be, you’ll be disappointed.
Yup! Two well-established alternatives are "rake", in the Ruby community, and "just" in the Rust community.
Rake is fully programmable in Ruby. Just is a bit less flexible, but it doesn't require learning Ruby, and it's quite pleasant to use.
Also, many people using rake already are often biased by how Rails uses it, but it's much more than that, and can easily be used as a make replacement, complete with freshness checks and rules.
There was an article specifically avout that on the interwebs but I can't find it anymore. These ones cover some bits as well, although they're a tad heavier on using Ruby code.
I use just and it is amazing.
The dependency resolution is core to https://gittup.org/tup/ which had been adopted a bit at the time it came out but since faded back into obscurity.
Re:Knit: Making a Better Make
by NeutralForest on Saturday April 08, 2023 @08:31AM
(#35492600)
This looks cool, how have I never seen it mentioned before
Re:Knit: Making a Better Make
by usual_science on Saturday April 08, 2023 @12:18PM
(#35494777)
There is build2
Re:Knit: Making a Better Make
by raja_mukherji on Saturday April 08, 2023 @01:51PM
(#35495831)
I've also written my own alternative to make called Rabs (https://github.com/wrapl/rabs) which uses an imperative language to specify the dependency graph as well as the build instructions. It's designed for really fast incremental builds.