9 ms·
The worst build systems are the ones centered on a particular programming language. Since there's N>>1 programming languages that's N>>1 build systems -- this
by cryptonector 2y ago
The worst build systems are the ones centered on a particular programming language. Since there's N>>1 programming languages that's N>>1 build systems -- this does not scale, as the cognitive load is prohibitive.
The only general-purpose build system that spans all these languages is `make` or systems that target `make` (e.g., CMake). And this sucks because `make` sucks. And `make` sucks because:
- it's really difficult to use right
(think recursive vs. non-recursive make)
- so many incompatible variations:
- Unix/POSIX make
- BSD make
- GNU make
- `nmake` (Windows)
- it's rather ugly
But `make` used right is quite good. We're really lucky to have `make` for the lowest common denominator.
- instig007 2y agoNix is a general-purpose build system that spans all these languages.
- yencabulator 2y agoI've never seen anyone use Nix to actually build software; it's a glorified launcher for shell scripts in a sandbox, and typically is used to start the actual build system, such as make/cargo/go build/npm/etc, with known inputs.
- zokier 2y agoMake is very much centered around C. For example, make has built-in default rules for building C code https://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html#tag_20_76_13_09 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/m...
- kaba0 2y agoGradle and Bazel are absolutely general purpose build tools that are very widely used in industry. As a smaller contender, my personal favorite is the Mill build tool (written in Scala), that is basically what a build tool should be, it’s as close to a theoretical perfect as possible. I really advise reading the blog post by its author Li Haoyi: https://www.lihaoyi.com/post/SoWhatsSoSpecialAboutTheMillScalaBuildTool.html https://www.lihaoyi.com/post/SoWhatsSoSpecialAboutTheMillSca...