git-subtree-dir: third_party/nix
git-subtree-mainline: cf8cd640c1
git-subtree-split: be66c7a6b24e3c3c6157fd37b86c7203d14acf10
		
	
			
		
			
				
	
	
		
			127 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<section xmlns="http://docbook.org/ns/docbook"
 | 
						||
      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 (2013-09-10)</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>
 | 
						||
 | 
						||
</section>
 |