From 1245340e440c3b2c1f79269d02d5991dfb853122 Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Mon, 24 Jun 2024 15:57:38 -0700 Subject: [PATCH 1/2] packaging: don't build internal api docs by default in dev shells These are totally available and you can just turn them on, but they have very bad dependency tracking and thus bloat incremental change times, which is not really ok. Change-Id: Iaa63ed18a789e74fcb757248cd24c3b194afcc80 --- flake.nix | 2 +- package.nix | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 372983f6d..d18646415 100644 --- a/flake.nix +++ b/flake.nix @@ -385,7 +385,7 @@ nix = pkgs.callPackage ./package.nix { inherit stdenv officialRelease versionSuffix; busybox-sandbox-shell = pkgs.busybox-sandbox-shell or pkgs.default-busybox-sandbox; - internalApiDocs = true; + internalApiDocs = false; }; pre-commit = self.hydraJobs.pre-commit.${pkgs.system} or { }; in diff --git a/package.nix b/package.nix index 988379618..0ade925ce 100644 --- a/package.nix +++ b/package.nix @@ -392,6 +392,7 @@ stdenv.mkDerivation (finalAttrs: { bashInteractive, clang-tools, clangbuildanalyzer, + doxygen, glibcLocales, just, llvmPackages, @@ -457,6 +458,10 @@ stdenv.mkDerivation (finalAttrs: { skopeo just nixfmt + # Included above when internalApiDocs is true, but we set that to + # false intentionally to save dev build time. + # To build them in a dev shell, you can set -Dinternal-api-docs=enabled when configuring. + doxygen # Load-bearing order. Must come before clang-unwrapped below, but after clang_tools above. stdenv.cc ] From e19f27917cdc43a5e32e43639fe816611aa7d23d Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Mon, 24 Jun 2024 16:12:14 -0700 Subject: [PATCH 2/2] Add some release notes for things we did Change-Id: If0ddec6b64a43c3d8f6cae39e0292863f3b49401 --- doc/manual/rl-next/nix-copy-is-fast.md | 12 ++++++++++++ doc/manual/rl-next/old-protocol-removal.md | 21 +++++++++++++++++++++ doc/manual/rl-next/sanitizers.md | 10 ++++++++++ 3 files changed, 43 insertions(+) create mode 100644 doc/manual/rl-next/nix-copy-is-fast.md create mode 100644 doc/manual/rl-next/old-protocol-removal.md create mode 100644 doc/manual/rl-next/sanitizers.md diff --git a/doc/manual/rl-next/nix-copy-is-fast.md b/doc/manual/rl-next/nix-copy-is-fast.md new file mode 100644 index 000000000..bf26eb65f --- /dev/null +++ b/doc/manual/rl-next/nix-copy-is-fast.md @@ -0,0 +1,12 @@ +--- +synopsis: "`nix copy` is now several times faster at `querying info about /nix/store/...`" +cls: [1462] +issues: [fj#366] +credits: [jade] +category: Fixes +--- + +We fixed a locking bug that serialized `querying info about /nix/store/...` +onto just one thread such that it was eating `O(paths to copy * latency)` time +while setting up to copy paths to s3 and other stores. It is now `nproc` times +faster. diff --git a/doc/manual/rl-next/old-protocol-removal.md b/doc/manual/rl-next/old-protocol-removal.md new file mode 100644 index 000000000..c8c46228c --- /dev/null +++ b/doc/manual/rl-next/old-protocol-removal.md @@ -0,0 +1,21 @@ +--- +synopsis: "Lix no longer speaks the Nix remote-build worker protocol to clients or servers older than CppNix 2.3" +cls: [1207, 1208, 1206, 1205, 1204, 1203, 1479] +issues: [fj#325] +credits: [jade] +category: Breaking Changes +--- + +CppNix 2.3 was released in 2019, and is the new oldest supported version. We +will increase our support baseline in the future up to a final version of CppNix +2.18 (which may happen soon given that it is the only still-packaged and thus +still-tested >2.3 version), but this step already removes a significant amount +of dead, untested, code paths. + +Lix speaks the same version of the protocol as CppNix 2.18 and that fact will +never change in the future; the Lix plans to replace the protocol for evolution +will entail a complete incompatible replacement that will be supported in +parallel with the old protocol. Lix will thus retain remote build compatibility +with CppNix as long as CppNix maintains protocol compatibility with 2.18, and +as long as Lix retains legacy protocol support (which will likely be a long +time given that we plan to convert it to a frozen-in-time shim). diff --git a/doc/manual/rl-next/sanitizers.md b/doc/manual/rl-next/sanitizers.md new file mode 100644 index 000000000..0abc57c7b --- /dev/null +++ b/doc/manual/rl-next/sanitizers.md @@ -0,0 +1,10 @@ +--- +synopsis: "Lix now supports building with UndefinedBehaviorSanitizer" +cls: [1483] +credits: [jade] +category: Development +--- + +You can now build Lix with the configuration option `-Db_sanitize=undefined` and it will both work and pass tests. AddressSanitizer support is also coming soon. + +For a list of undefined behaviour fixed by sanitizer usage, see [the gerrit topic "undefined-behaviour"](https://gerrit.lix.systems/q/topic:%22undefined-behaviour%22).