Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Release 3.24.1 (2026-10-25)

Security fix for brotli (Broccoli2Shell)

Determinate Nix now uses brotli 1.2.1, which fixes CVE-2026-111497 (“Broccoli2Shell”). This is an out-of-bounds write in the brotli decoder that can be triggered by malicious compressed data. It can crash the process and may allow remote code execution. Nix decompresses brotli data from untrusted sources, such as binary cache files that use brotli compression and HTTP responses with Content-Encoding: br, so we recommend that all users upgrade.

Garbage collection performance regression fix

Since Determinate Nix 3.23.0, large evaluations could spend most of their time in garbage collection: once the heap grew beyond 4 GiB, a full collection was triggered after every 16 MiB of allocation. In one of our CI jobs, this made evaluation go from about 2 minutes to about 40 minutes. The garbage collector once again allows the heap to grow several times between collections, as it did before 3.23.0.

In our flake regression tests (249 flakes, single-threaded evaluation), the total CPU time dropped from 7014 to 806 seconds. The effect is concentrated in flakes that need a large heap, at the cost of a somewhat higher peak memory usage:

FlakeElapsed timeCPU timePeak memory
Mic92/sops-nix/8b89f44283s → 52s3097s → 66s9.8 GiB → 11.0 GiB
NixOS/nix/2.21.2292s → 94s2582s → 119s9.5 GiB → 10.7 GiB
zhaofengli/attic/0.1.16537s → 33s90s → 35s4.7 GiB → 5.4 GiB

PR: DeterminateSystems/nix-src#725

Bug fixes

Miscellaneous changes

Full Changelog: v3.24.0…v3.24.1