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). diff --git a/flake.nix b/flake.nix index 5c764d73e..c3707c919 100644 --- a/flake.nix +++ b/flake.nix @@ -387,7 +387,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 0f194796f..475827bd7 100644 --- a/package.nix +++ b/package.nix @@ -390,6 +390,7 @@ stdenv.mkDerivation (finalAttrs: { bashInteractive, clang-tools, clangbuildanalyzer, + doxygen, glibcLocales, just, llvmPackages, @@ -455,6 +456,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 ]