|
73 | 73 |
|
74 | 74 | The defaults may change in future versions. |
75 | 75 |
|
| 76 | +- Improved parser error messages [#15092](https://github.com/NixOS/nix/pull/15092) |
| 77 | + |
| 78 | + Parser error messages now use legible strings for tokens instead of internal names. For example, malformed expression `a ++ ++ b` now produces the following error: |
| 79 | + ``` |
| 80 | + error: syntax error, unexpected '++' |
| 81 | + at «string»:1:6: |
| 82 | + 1| a ++ ++ b |
| 83 | + | ^ |
| 84 | + ``` |
| 85 | + |
| 86 | + Instead of: |
| 87 | + ``` |
| 88 | + error: syntax error, unexpected CONCAT |
| 89 | + at «string»:1:6: |
| 90 | + 1| a ++ ++ b |
| 91 | + | ^ |
| 92 | + ``` |
| 93 | + |
76 | 94 | ## New features |
77 | 95 |
|
78 | 96 | - `nix repl` now supports `inherit` and multiple bindings [#15082](https://github.com/NixOS/nix/pull/15082) |
|
127 | 145 |
|
128 | 146 | When these options are configured, Nix will use this certificate/private key pair to authenticate to the server. |
129 | 147 |
|
| 148 | +## Performance improvements |
| 149 | + |
| 150 | +- Unpacking tarballs to `~/.cache/nix/tarball-cache-v2` is now multithreaded [#12087](https://github.com/NixOS/nix/pull/12087) |
| 151 | + |
| 152 | + Content-addressed cache for `builtins.fetchTarball` and tarball-based flake inputs (e.g. `github:NixOS/nixpkgs`, `https://channels.nixos.org/nixos-25.11/nixexprs.tar.xz`) now writes git blobs (files) to the `tarball-cache-v2` repository concurrently, which significantly reduces the wall time for tarball unpacking (up to ~1.8x faster unpacking for `https://channels.nixos.org/nixos-25.11/nixexprs.tar.xz` in our testing). |
| 153 | + |
| 154 | + Currently, Nix doesn't perform any maintenance on the `~/.cache/nix/tarball-cache-v2` repository, which will be addressed in future versions. Users that wish to reclaim disk space used by the tarball cache may want to run: |
| 155 | + |
| 156 | + ``` |
| 157 | + rm -rf ~/.cache/nix/tarball-cache # Historical tarball-cache, not used by Nix >= 2.33 |
| 158 | + cd ~/.cache/nix/tarball-cache-v2 && git multi-pack-index write && git multi-pack-index repack && git multi-pack-index expire |
| 159 | + ``` |
| 160 | + |
| 161 | +- `nix nar ls` and other NAR listing operations have been optimised further [#15163](https://github.com/NixOS/nix/pull/15163) |
| 162 | + |
130 | 163 | ## C API Changes |
131 | 164 |
|
132 | 165 | - New store API methods [#14766](https://github.com/NixOS/nix/pull/14766) |
|
159 | 192 |
|
160 | 193 | ## Bug fixes |
161 | 194 |
|
| 195 | +- Avoid dropping ssh connections with `ssh-ng://` stores for store path copying [#14998](https://github.com/NixOS/nix/pull/14998) [#6950](https://github.com/NixOS/nix/issues/6950) |
| 196 | + |
| 197 | + Due to a bug in how Nix handled Boost.Coroutine2 suspension and resumption, copying from `ssh-ng://` stores would drop the SSH connection for each copied path. This issue has been fixed, which improves performance by avoiding multiple SSH/Nix Worker Protocol handshakes. |
| 198 | + |
162 | 199 | - S3 binary caches now use virtual-hosted-style addressing by default [#15208](https://github.com/NixOS/nix/issues/15208) |
163 | 200 |
|
164 | 201 | S3 binary caches now use virtual-hosted-style URLs |
|
189 | 226 | idle connections from being silently dropped by intermediate network devices |
190 | 227 | (NATs, firewalls, load balancers). |
191 | 228 |
|
| 229 | +- `nix-prefetch-url --unpack` now properly checks for empty archives [#15242](https://github.com/NixOS/nix/pull/15242) |
| 230 | + |
| 231 | + Prior versions failed to check for empty archives and would crash with a `nullptr` dereference when unpacking empty archives. |
| 232 | + This is now fixed. |
| 233 | + |
| 234 | +- Prevent runaway processes when Nix is killed with `SIGKILL` when building in a local store with build users [#15193](https://github.com/NixOS/nix/pull/15193) |
| 235 | + |
| 236 | + When run as root, Nix doesn't run builds via the daemon and is a parent of the forked build processes. Prior versions of Nix failed to preserve the `PR_SET_PDEATHSIG` parent-death signal across `setuid` calls. This could lead to build processes being reparented and continue running in the background. This has been fixed. |
| 237 | + |
192 | 238 | ## Miscellaneous changes |
193 | 239 |
|
194 | 240 | - Content-Encoding decompression is now handled by libcurl [#14324](https://github.com/NixOS/nix/issues/14324) [#15336](https://github.com/NixOS/nix/pull/15336) |
|
198 | 244 |
|
199 | 245 | `br`, `zstd`, `gzip` continue to be supported. Distro packaging should ensure that the `libcurl` dependency is linked against required libraries to support these encodings. By default, the build system now requires libcurl >= 8.17.0, which is not known to have issues around [pausing and decompression](https://github.com/curl/curl/issues/16280). |
200 | 246 |
|
| 247 | +- Static builds now support S3 features (`libstore:s3-aws-auth` meson option) [#15076](https://github.com/NixOS/nix/pull/15076) |
| 248 | + |
201 | 249 | ## Contributors |
202 | 250 |
|
203 | 251 | This release was made possible by the following 43 contributors: |
|
0 commit comments