4 ms·
The manual lists the reasons why using it over make: https://just.systems/man/en/ https://just.systems/man/en/ The question is if those reasons are convincing
by qznc 2y ago
The manual lists the reasons why using it over make: https://just.systems/man/en/ https://just.systems/man/en/
The question is if those reasons are convincing to someone. The big advantage of Make is that it is probably already installed.
- erichdongubler 2y ago> The big advantage of Make is that it is probably already installed. ...unless you're on Windows, like me!
- deaddodo 2y agoMake is installed on Windows, if you install Microsoft's C/C++ dev stack (typically via installing Visual Studio). They just use nmake instead of GNU make. They also include Cmake these days, as it's the common cross platform option.
- BeetleB 2y ago> if you install Microsoft's C/C++ dev stack (typically via installing Visual Studio). So I have to install this huge dependency just to use make, when my project is in Python? Way easier to install just :-)
- deaddodo 2y agoYou wouldn't use GNU Make (the thing that comes for "default" on Linux) with Python either. What a weird way to converse.
- BeetleB 2y ago> You wouldn't use GNU Make (the thing that comes for "default" on Linux) with Python either. But people do use Make all the time for Python projects - as a command runner. Pelican projects, for example, come with a Makefile to start the server, publish, etc. The whole point of this submission is that many, many people use Makefiles not for incremental builds, but as a convenient place to store commonly used commands. And just is a better and simpler tool than make for that. If you're on Windows, it's a pain to install make, compared to installing just.
- ttyprintk 2y agoBusybox comes with a vestigial make. I wager git might. Those are both in winget.
- fragmede 2y agoWhat does it offer over bazel?
- peterldowns 2y agoNot making you want to shoot yourself in the head. It does one thing very well, and it has well-written and useful documentation. It literally just runs commands in a convenient way.
- fragmede 2y agohow well does it cache across a build farm?
- peterldowns 2y ago[flagged]
- pdimitar 2y agoDid you miss the part that says "it just runs commands in a convenient way" and "it is not a build system"?
- 12_throw_away 2y agoIt's not a build system, it's a command runner, it is for different use cases
- hgs3 2y agoThe manual states that "just is a command runner, not a build system," and mentions "no need for .PHONY recipes!" This seems to suggest that there's no way to prevent Just from rebuilding targets, even if they are up-to-date. For me, one of the key advantages of using Make is its support for incremental builds, which is a major distinction from using a plain shell script to run some commands.
- klabb3 2y agoMaybe it’s the stacks I’m using, but I’ve always had incremental happen with language-native tooling like `go` or `cargo`. So for me at least, having lazy eval features like that would be an unnecessary increase in scope and complexity. With Just, I can just throw together different commands and it just works cross platform. I love it. I much prefer that than the other way, ie letting language tooling become command runners (looking at you npm). That’s the worst of both worlds.
- hgs3 2y ago> I’ve always had incremental happen with language-native tooling like `go` or `cargo` That makes sense, but for me, Make is incredibly useful for incremental file processing outside of programming. I've written tiny Makefiles that use glob patterns to batch-convert thousands of SVGs into PNGs and WebPs, but only for the modified SVG files. I've used Make to batch-convert modified LaTeX files to PDFs and render modified Blender projects into WebM videos for the web. Rendering videos is very time-consuming, so only rendering modified video files is a huge win.
- guipsp 2y agoIf you need incrementalism, Just is not for you.
- pdimitar 2y agoThe programming languages that I use don't need to be told to not rebuild from scratch so yours is a pretty strange argument.
- BeetleB 2y ago
- badsectoracula 2y ago> You can disable this behavior for specific targets using make’s built-in .PHONY target name, but the syntax is verbose and can be hard to remember. I think this is overstating things a bit. I first read `.PHONY` in a Makefile while i was a teenager and i figured out what it does just by looking at it in practice. Makefiles do have some weirdness (e.g. tab being part of the syntax) but `.PHONY` is not one of them.