Merge pull request #8741 from ncfavier/clarify-rl-notes-nested-attrs-merge

doc: clarify release notes about nested attribute merges
This commit is contained in:
John Ericson 2023-07-25 11:11:17 -04:00 committed by GitHub
commit 484c820c48
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -11,8 +11,12 @@
```nix ```nix
{ {
nested = { foo = 1; }; nested = {
nested = { ${"ba" + "r"} = 2; }; foo = 1;
};
nested = {
${"ba" + "r"} = 2;
};
} }
``` ```
@ -22,8 +26,17 @@
{ nested = { bar = 2; foo = 1; }; } { nested = { bar = 2; foo = 1; }; }
``` ```
Note that the feature of merging multiple attribute set declarations is of questionable value. Note that the feature of merging multiple *full declarations* of attribute sets like `nested` in the example is of questionable value.
It allows writing expressions that are very hard to read, for instance when there are many lines of code between two declarations of the same attribute. It allows writing expressions that are very hard to read, for instance when there are many lines of code between two declarations of the same attribute.
This has been around for a long time and is therefore supported for backwards compatibility, but should not be relied upon. This has been around for a long time and is therefore supported for backwards compatibility, but should not be relied upon.
Instead, consider using the *nested attribute path* syntax:
```nix
{
nested.foo = 1;
nested.${"ba" + "r"} = 2;
}
```
* Tarball flakes can now redirect to an "immutable" URL that will be recorded in lock files. This allows the use of "mutable" tarball URLs like `https://example.org/hello/latest.tar.gz` in flakes. See the [tarball fetcher](../protocols/tarball-fetcher.md) for details. * Tarball flakes can now redirect to an "immutable" URL that will be recorded in lock files. This allows the use of "mutable" tarball URLs like `https://example.org/hello/latest.tar.gz` in flakes. See the [tarball fetcher](../protocols/tarball-fetcher.md) for details.