Hacker News with Generative AI: Build Systems

Improved evaluation times with pre-resolved Nix store paths (determinate.systems)
Building things with Nix is pretty amazing. You point Nix at a flake reference for a derivation and say “build!” It then spins up a sandbox and reproducibly creates real bytes on disk. Those bytes on disk could be a single hello.txt file or a hefty Docker image or a fully functional NixOS system—or much else besides.
Is NixOS truly reproducible? (luj.fr)
Build reproducibility is often considered as a de facto feature provided by functional package managers like Nix. Although the functional package manager model has important assets in the quest for build reproducibility (like reproducibility of build environments for example1), it is clear among practitioners that Nix does not guarantee that all its builds achieve bitwise reproducibility. In fact, it is not complicated to write a Nix package that builds an artifact non-deterministically:
GNU Make Standard Library (gmsl.jgc.org)
The GNU Make Standard Library (GMSL) is a collection of functions implemented using native GNU Make functionality that provide list and string manipulation, integer arithmetic, associative arrays, stacks, and debugging facilities.
Apple is open sourcing Swift Build (swift.org)
As a foundational step in this new chapter of Swift build technologies, today Apple is open sourcing Swift Build, a powerful and extensible build engine that provides a set of build rules for building Swift projects.
Introduce support for the Meson build system – git.git 904339e (kernel.org)
Introduce support for the Meson build system, a "modern" meta build system that supports many different platforms, including Linux, macOS, Windows and BSDs. Meson supports different backends, including Ninja, Xcode and Microsoft Visual Studio. Several common IDEs provide an integration with it.
The success and failure of Ninja (2020) (neugierig.org)
Around nine years ago I published Ninja, a build system that is mostly comparable to Make. At the time I was a bit embarrassed to share my side project but since then it has become widely popular.
Speeding up the Rust edit-build-run cycle (davidlattimore.github.io)
There are two main aspects to compile times that matter to developers. Cold build times, when building from scratch and warm build times when you’ve already built and you’re rebuilding following an edit. This article focuses on warm build times, which for rapid iteration during development is what generally matters most.
RPM 4.20 Released (rpm.org)
The new BuildSystem directive is now available for declaring which build system is used by the packaged software. With this directive, the sources will be automatically prepared, compiled and installed according to the given build system’s best practices, instead of requiring the packagers to provide the %prep, %build or %install scriptlets themselves. This reduces boilerplate while still allowing packagers to tweak these steps if necessary, such as to conform to the distribution’s guidelines or preferences.
Using Bazel to build a new Rust project (fahhem.com)
Looking around, it seems that everyone uses Cargo for new Rust projects, then teams will switch over to Bazel if they need to. For me, I have an existing Bazel project that I'm adding Rust to, so I don't want to start with Cargo, so in this post I'll document how to use Bazel to build a new Rust project. Since this is an existing project, and I haven't upgraded to using bzlmod yet, I'll be using the WORKSPACE file.
CMake: The Dark Arts (feabhas.com)
CMake can be described as a marmite application: you either love it or hate it.
Zb: An Early-Stage Build System (zombiezen.com)
I have decided to develop zb, my experiment in user-friendly reproducible builds, into a full-fledged build tool.
Fman Build System (fman.io)
Exposition of Front End Build Systems (sunsetglow.net)
Stop the autoconf insanity. Why we need a new build system (2003) (archive.org)
Feature flags in Bazel builds (pigweed.dev)
What autoconf got right (leahneukirchen.org)
Cmkr – a modern build system based on CMake and TOML (github.com/build-cpp)
Ask HN: Learning about build systems generally (ycombinator.com)