2014-09-16 12:29:00 +00:00
|
|
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
2014-08-27 16:41:09 +00:00
|
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
|
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
version="5.0"
|
|
|
|
|
xml:id="ssec-relnotes-1.6.0">
|
|
|
|
|
|
|
|
|
|
<title>Release 1.6 (September 10, 2013)</title>
|
|
|
|
|
|
|
|
|
|
<para>In addition to the usual bug fixes, this release has several new
|
|
|
|
|
features:</para>
|
|
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>The command <command>nix-build --run-env</command> has been
|
|
|
|
|
renamed to <command>nix-shell</command>.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para><command>nix-shell</command> now sources
|
|
|
|
|
<filename>$stdenv/setup</filename> <emphasis>inside</emphasis> the
|
|
|
|
|
interactive shell, rather than in a parent shell. This ensures
|
|
|
|
|
that shell functions defined by <literal>stdenv</literal> can be
|
|
|
|
|
used in the interactive shell.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para><command>nix-shell</command> has a new flag
|
|
|
|
|
<option>--pure</option> to clear the environment, so you get an
|
|
|
|
|
environment that more closely corresponds to the “real” Nix build.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para><command>nix-shell</command> now sets the shell prompt
|
|
|
|
|
(<envar>PS1</envar>) to ensure that Nix shells are distinguishable
|
|
|
|
|
from your regular shells.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para><command>nix-env</command> no longer requires a
|
|
|
|
|
<literal>*</literal> argument to match all packages, so
|
|
|
|
|
<literal>nix-env -qa</literal> is equivalent to <literal>nix-env
|
|
|
|
|
-qa '*'</literal>.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para><command>nix-env -i</command> has a new flag
|
|
|
|
|
<option>--remove-all</option> (<option>-r</option>) to remove all
|
|
|
|
|
previous packages from the profile. This makes it easier to do
|
|
|
|
|
declarative package management similar to NixOS’s
|
|
|
|
|
<option>environment.systemPackages</option>. For instance, if you
|
|
|
|
|
have a specification <filename>my-packages.nix</filename> like this:
|
|
|
|
|
|
|
|
|
|
<programlisting>
|
|
|
|
|
with import <nixpkgs> {};
|
|
|
|
|
[ thunderbird
|
|
|
|
|
geeqie
|
|
|
|
|
...
|
|
|
|
|
]
|
|
|
|
|
</programlisting>
|
|
|
|
|
|
|
|
|
|
then after any change to this file, you can run:
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
$ nix-env -f my-packages.nix -ir
|
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
|
|
to update your profile to match the specification.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>The ‘<literal>with</literal>’ language construct is now more
|
|
|
|
|
lazy. It only evaluates its argument if a variable might actually
|
|
|
|
|
refer to an attribute in the argument. For instance, this now
|
|
|
|
|
works:
|
|
|
|
|
|
|
|
|
|
<programlisting>
|
|
|
|
|
let
|
|
|
|
|
pkgs = with pkgs; { foo = "old"; bar = foo; } // overrides;
|
|
|
|
|
overrides = { foo = "new"; };
|
|
|
|
|
in pkgs.bar
|
|
|
|
|
</programlisting>
|
|
|
|
|
|
|
|
|
|
This evaluates to <literal>"new"</literal>, while previously it
|
|
|
|
|
gave an “infinite recursion” error.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Nix now has proper integer arithmetic operators. For
|
|
|
|
|
instance, you can write <literal>x + y</literal> instead of
|
|
|
|
|
<literal>builtins.add x y</literal>, or <literal>x <
|
|
|
|
|
y</literal> instead of <literal>builtins.lessThan x y</literal>.
|
|
|
|
|
The comparison operators also work on strings.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>On 64-bit systems, Nix integers are now 64 bits rather than
|
|
|
|
|
32 bits.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>When using the Nix daemon, the <command>nix-daemon</command>
|
|
|
|
|
worker process now runs on the same CPU as the client, on systems
|
|
|
|
|
that support setting CPU affinity. This gives a significant speedup
|
|
|
|
|
on some systems.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>If a stack overflow occurs in the Nix evaluator, you now get
|
|
|
|
|
a proper error message (rather than “Segmentation fault”) on some
|
|
|
|
|
systems.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>In addition to directories, you can now bind-mount regular
|
|
|
|
|
files in chroots through the (now misnamed) option
|
|
|
|
|
<option>build-chroot-dirs</option>.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
|
|
<para>This release has contributions from Domen Kožar, Eelco Dolstra,
|
|
|
|
|
Florian Friesdorf, Gergely Risko, Ivan Kozik, Ludovic Courtès and Shea
|
|
|
|
|
Levy.</para>
|
|
|
|
|
|
2014-09-16 12:29:00 +00:00
|
|
|
|
</section>
|