From e9934bb5ada1a974744c61479ca50c75c82e5836 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 12 Mar 2014 13:58:06 +0100 Subject: [PATCH] Update release notes for 1.7 --- doc/manual/release-notes.xml | 292 +++++++++++++++++++++++++++++------ 1 file changed, 247 insertions(+), 45 deletions(-) diff --git a/doc/manual/release-notes.xml b/doc/manual/release-notes.xml index 8eb59ab495..5147f1f2f8 100644 --- a/doc/manual/release-notes.xml +++ b/doc/manual/release-notes.xml @@ -9,26 +9,228 @@
Release 1.7 (TBA) -This release has the following changes: +In addition to the usual bug fixes, this release has the +following new features: + + Antiquotation is now allowed inside of quoted attribute + names (e.g. set."${foo}"). In the case where + the attribute name is just a single antiquotation, the quotes can + be dropped (e.g. the above example can be written + set.${foo}). If an attribute name inside of a + set declaration evaluates to null (e.g. + { ${null} = false; }), then that attribute is + not added to the set. + + + + Experimental support for cryptographically signed binary + caches. See the + commit for details. + + + + An experimental new substituter, + download-via-ssh, that fetches binaries from + remote machines via SSH. Specifying the flags --option + use-ssh-substituter true --option ssh-substituter-hosts + user@hostname will cause Nix + to download binaries from the specified machine, if it has + them. + + + + nix-store -r and + nix-build have a new flag, + , that builds a previously built + derivation again, and prints an error message if the output is not + exactly the same. This helps to verify whether a derivation is + truly deterministic. For example: + + +$ nix-build '<nixpkgs>' -A patchelf + +$ nix-build '<nixpkgs>' -A patchelf --check + +error: derivation `/nix/store/1ipvxs…-patchelf-0.6' may not be deterministic: + hash mismatch in output `/nix/store/4pc1dm…-patchelf-0.6.drv' + + + + + + + + The nix-instantiate flags + and + have been renamed to and + , respectively. + + + + nix-instantiate, + nix-build and nix-shell now + have a flag (or ) that + allows you to specify the expression to be evaluated as a command + line argument. For instance, nix-instantiate --eval -E + '1 + 2' will print 3. + + + + nix-shell improvements: + + + + + It has a new flag, (or + ), that sets up a build environment + containing the specified packages from Nixpkgs. For example, + the command + + +$ nix-shell -p sqlite xorg.libX11 hello + + + will start a shell in which the given packages are + present. + + + + It now uses shell.nix as the + default expression, falling back to + default.nix if the former doesn’t + exist. This makes it convenient to have a + shell.nix in your project to set up a + nice development environment. + + + + It evaluates the derivation attribute + shellHook, if set. Since + stdenv does not normally execute this hook, + it allows you to do nix-shell-specific + setup. + + + + It preserves the user’s timezone setting. + + + + + + + + In chroots, Nix now sets up a /dev + containing only a minimal set of devices (such as + /dev/null). Note that it only does this if + you don’t have /dev + listed in your setting; + otherwise, it will bind-mount the /dev from + outside the chroot. + + Similarly, if you don’t have /dev/pts listed + in , Nix will mount a private + devpts filesystem on the chroot’s + /dev/pts. + + + New built-in function: builtins.toJSON, which returns a JSON representation of a value. - nix-setuid-helper is - gone. + + nix-env -q has a new flag + to print a JSON representation of the + installed or available packages. + - Now antiquotation is allowed inside of quoted - attribute names (e.g. set."${foo}"). In the - case where the attribute name is just a single antiquotation, - the quotes can be dropped (e.g. the above example can be written - set.${foo}). If an attribute name inside of a - set declaration evaluates to null (e.g. - { ${null} = false; }), then that attribute is not - added to the set. + + nix-env now supports meta attributes with + more complex values, such as attribute sets. + + + + The flag now allows attribute names with + dots in them, e.g. + + +$ nix-instantiate --eval '<nixos>' -A 'config.systemd.units."nscd.service".text' + + + + + + + The option to + nix-store --gc now accepts a unit + specifier. For example, nix-store --gc --max-freed + 1G will free up to 1 gigabyte of disk space. + + + + Nix now heuristically detects whether a build failure was + due to a disk-full condition. In that case, the build is not + flagged as “permanently failed”. This is mostly useful for Hydra, + which needs to distinguish between permanent and transient build + failures. + + + + There is a new symbol __curPos that + expands to an attribute set containing its file name and line and + column numbers, e.g. { file = "foo.nix"; line = 10; + column = 5; }. There also is a new builtin function, + unsafeGetAttrPos, that returns the position of + an attribute. This is used by Nixpkgs to provide location + information in error messages, e.g. + + +$ nix-build '<nixpkgs>' -A libreoffice --argstr system x86_64-darwin +error: the package ‘libreoffice-4.0.5.2’ in ‘.../applications/office/libreoffice/default.nix:263’ + is not supported on ‘x86_64-darwin’ + + + + + + + The garbage collector is now more concurrent with other Nix + processes because it releases certain locks earlier. + + + + The binary tarball installer has been improved. You can now + install Nix by running: + + +$ bash <(curl https://nixos.org/nix/install) + + + + + + + The command nix-setuid-helper is + gone. + + + + Nix no longer uses Automake, but instead has a + non-recursive, GNU Make-based build system. + + + + All installed libraries now have the prefix + libnix. In particular, this gets rid of + libutil, which could clash with libraries with + the same name from other packages. + @@ -606,7 +808,7 @@ Friesdorf, Mats Erik Andersson and Shea Levy. When using the Nix daemon, the flag in nix-env -qa is now much faster. - +
@@ -636,7 +838,7 @@ previous release. Here are the most significant: /nix/var/nix/manifests, resulting in a significant speedup. - + Nix now has an search path for expressions. The search path is set using the environment variable NIX_PATH and @@ -673,7 +875,7 @@ previous release. Here are the most significant: you can write { "foo-1.2" = …; "bla bla" = …; }."bla bla". - + Attribute selection can now provide a default value using the or operator. For instance, the expression @@ -872,7 +1074,7 @@ features: This is useful, for instance, in NixOS configuration files. - + @@ -889,7 +1091,7 @@ features: which causes uname to return i686 in child processes. - + Various improvements to the chroot support. Building in a chroot works quite well @@ -906,12 +1108,12 @@ features: Support for large (> 4 GiB) files in NAR archives. - + Various (performance) improvements to the remote build mechanism. - + New primops: builtins.addErrorContext (to add a string to stack traces — useful for debugging), @@ -1050,8 +1252,8 @@ the following derivations will be built: the following paths will be downloaded/copied (30.02 MiB): /nix/store/4m8pvgy2dcjgppf5b4cj5l6wyshjhalj-samba-3.2.4 /nix/store/7h1kwcj29ip8vk26rhmx6bfjraxp0g4l-libunwind-0.98.6 - ... - + ... + Language features: @@ -1091,7 +1293,7 @@ the following paths will be downloaded/copied (30.02 MiB): division). - + @@ -1162,7 +1364,7 @@ on Nix. Here is an (incomplete) list: nix-env -p /nix/var/nix/profiles/browser --set firefox lets the profile named browser contain just Firefox. - + nix-env now maintains meta-information about installed packages in profiles. The @@ -1171,7 +1373,7 @@ on Nix. Here is an (incomplete) list: homepage. The command nix-env -q --xml --meta shows all meta-information. - + nix-env now uses the meta.priority attribute of derivations to resolve filename collisions between packages. Lower priority values denote @@ -1227,7 +1429,7 @@ on Nix. Here is an (incomplete) list: - + nix-env -q now has a flag () that causes nix-env to show only those derivations whose @@ -1238,7 +1440,7 @@ on Nix. Here is an (incomplete) list: nix-env -i and nix-env -u to filter out derivations for which no pre-built binary is available. - + The new option (in nix-env, nix-instantiate and @@ -1254,7 +1456,7 @@ on Nix. Here is an (incomplete) list: paths that shows the build log of the given paths. - + - + nix-env usability improvements: @@ -1450,9 +1652,9 @@ irreversible. most packages in Nixpkgs don’t have yet). - + - + New language features: @@ -1475,7 +1677,7 @@ irreversible. You can write arbitrary expressions within ${...}, not just identifiers. - + Multi-line string literals. String concatenations can now involve @@ -1517,7 +1719,7 @@ irreversible. Very convenient whenever you have some package on your machine and you want to copy it somewhere else. - + XML support: @@ -1540,7 +1742,7 @@ irreversible. - + You can now unambiguously specify which derivation to build or install in nix-env, @@ -1554,7 +1756,7 @@ irreversible. foo. nix-env -q --attr shows the attribute names corresponding to each derivation. - + If the top-level Nix expression used by nix-env, nix-instantiate or @@ -1565,7 +1767,7 @@ irreversible. value can be used to specify function arguments on the command line. - + nix-install-package --url URL allows a package to be installed directly from the given URL. @@ -1611,7 +1813,7 @@ irreversible. - + Garbage collector improvements: @@ -1643,12 +1845,12 @@ irreversible. from the Nix store. It won’t delete reachable (non-garbage) paths unless is specified. - + - + Berkeley DB 4.4’s process registry feature is used to recover from crashed Nix processes. @@ -1814,7 +2016,7 @@ svnService = derivation { }; Previously, this would yield a black hole (infinite recursion). - + nix-build now defaults to using @@ -1956,7 +2158,7 @@ $ nix-store -q --referrers-closure \ /nix/store/8lz9yc6zgmc0vlqmn2ipcpkjlmbi51vv-glibc-2.3.4 - + The concept of fixed-output derivations has been @@ -2220,7 +2422,7 @@ $ nix-env -f .../i686-linux.nix -i -E 'x: x.firefoxWrapper' columnised). - + @@ -2234,7 +2436,7 @@ $ nix-env -f .../i686-linux.nix -i -E 'x: x.firefoxWrapper' Nix expression language changes: - + New language construct: with E1; E2 brings all attributes