A reusable TL;DR I can send people, instead of pasting all of this in the chats.
-
Lix forks from CppNix version 2.18, which is the default version of Nix in NixOS 23.11 and 24.05. It includes backports for most bug fixes in later versions of CppNix, as well as various reliability improvements, and many improvements to user experience. Our goal with Lix 2.90 is to create a better Nix 2.18: faster, more user friendly, with fewer bugs, and fully compatible with previously-valid Nix code including flakes.
-
Error reporting has been fixed to be more accurate in several cases thanks to wiggles, and errors give more details to diagnose them.
-
The Lix evaluation cache no longer caches failures, so “cached failure” is an error of the past.
-
Evaluation is 5-20% faster than 2.18, depending on which benchmark is in use
-
Various failures that were silent in the past are no longer silent
-
A lot of internal stability work and development process work has gone into this release. For instance:
-
Lix builds exclusively with the Meson build system. The historical CppNix Make-based build system has been removed altogether
-
Lix enforces various aspects of its styleguide with pre-commit hooks.
-
A lot of onboarding and project planning information has been written down in the Wiki.
-
We use Gerrit for reviews, which allows us to focus on providing prompt and high quality patch reviews by making it easy to review changes piece by piece, with CI testing of every commit. Gerrit is one of our secret superpowers in shipping correct code, since it, by its structure, enforces good commit history, reviewable code, and incremental changes.
-
We use Forgejo for code hosting and issue tracking, which we have customised to integrate natively with Gerrit and to work natively with Nix flakes for locking tarballs
-
We have a Wiki with design documents, styleguide, and other project organisational information.
-