157 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
	
		
			5.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.2">
 | ||
| 
 | ||
| <title>Release 1.2 (2012-12-06)</title>
 | ||
| 
 | ||
| <para>This release has the following improvements and changes:</para>
 | ||
| 
 | ||
| <itemizedlist>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Nix has a new binary substituter mechanism: the
 | ||
|     <emphasis>binary cache</emphasis>.  A binary cache contains
 | ||
|     pre-built binaries of Nix packages.  Whenever Nix wants to build a
 | ||
|     missing Nix store path, it will check a set of binary caches to
 | ||
|     see if any of them has a pre-built binary of that path.  The
 | ||
|     configuration setting <option>binary-caches</option> contains a
 | ||
|     list of URLs of binary caches.  For instance, doing
 | ||
| <screen>
 | ||
| $ nix-env -i thunderbird --option binary-caches http://cache.nixos.org
 | ||
| </screen>
 | ||
|     will install Thunderbird and its dependencies, using the available
 | ||
|     pre-built binaries in <uri>http://cache.nixos.org</uri>.
 | ||
|     The main advantage over the old “manifest”-based method of getting
 | ||
|     pre-built binaries is that you don’t have to worry about your
 | ||
|     manifest being in sync with the Nix expressions you’re installing
 | ||
|     from; i.e., you don’t need to run <command>nix-pull</command> to
 | ||
|     update your manifest.  It’s also more scalable because you don’t
 | ||
|     need to redownload a giant manifest file every time.
 | ||
|     </para>
 | ||
| 
 | ||
|     <para>A Nix channel can provide a binary cache URL that will be
 | ||
|     used automatically if you subscribe to that channel.  If you use
 | ||
|     the Nixpkgs or NixOS channels
 | ||
|     (<uri>http://nixos.org/channels</uri>) you automatically get the
 | ||
|     cache <uri>http://cache.nixos.org</uri>.</para>
 | ||
| 
 | ||
|     <para>Binary caches are created using <command>nix-push</command>.
 | ||
|     For details on the operation and format of binary caches, see the
 | ||
|     <command>nix-push</command> manpage.  More details are provided in
 | ||
|     <link xlink:href="https://nixos.org/nix-dev/2012-September/009826.html">this
 | ||
|     nix-dev posting</link>.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Multiple output support should now be usable.  A derivation
 | ||
|     can declare that it wants to produce multiple store paths by
 | ||
|     saying something like
 | ||
| <programlisting>
 | ||
| outputs = [ "lib" "headers" "doc" ];
 | ||
| </programlisting>
 | ||
|     This will cause Nix to pass the intended store path of each output
 | ||
|     to the builder through the environment variables
 | ||
|     <literal>lib</literal>, <literal>headers</literal> and
 | ||
|     <literal>doc</literal>.  Other packages can refer to a specific
 | ||
|     output by referring to
 | ||
|     <literal><replaceable>pkg</replaceable>.<replaceable>output</replaceable></literal>,
 | ||
|     e.g.
 | ||
| <programlisting>
 | ||
| buildInputs = [ pkg.lib pkg.headers ];
 | ||
| </programlisting>
 | ||
|     If you install a package with multiple outputs using
 | ||
|     <command>nix-env</command>, each output path will be symlinked
 | ||
|     into the user environment.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Dashes are now valid as part of identifiers and attribute
 | ||
|     names.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The new operation <command>nix-store --repair-path</command>
 | ||
|     allows corrupted or missing store paths to be repaired by
 | ||
|     redownloading them.  <command>nix-store --verify --check-contents
 | ||
|     --repair</command> will scan and repair all paths in the Nix
 | ||
|     store.  Similarly, <command>nix-env</command>,
 | ||
|     <command>nix-build</command>, <command>nix-instantiate</command>
 | ||
|     and <command>nix-store --realise</command> have a
 | ||
|     <option>--repair</option> flag to detect and fix bad paths by
 | ||
|     rebuilding or redownloading them.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Nix no longer sets the immutable bit on files in the Nix
 | ||
|     store.  Instead, the recommended way to guard the Nix store
 | ||
|     against accidental modification on Linux is to make it a read-only
 | ||
|     bind mount, like this:
 | ||
| 
 | ||
| <screen>
 | ||
| $ mount --bind /nix/store /nix/store
 | ||
| $ mount -o remount,ro,bind /nix/store
 | ||
| </screen>
 | ||
| 
 | ||
|     Nix will automatically make <filename>/nix/store</filename>
 | ||
|     writable as needed (using a private mount namespace) to allow
 | ||
|     modifications.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Store optimisation (replacing identical files in the store
 | ||
|     with hard links) can now be done automatically every time a path
 | ||
|     is added to the store.  This is enabled by setting the
 | ||
|     configuration option <literal>auto-optimise-store</literal> to
 | ||
|     <literal>true</literal> (disabled by default).</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Nix now supports <command>xz</command> compression for NARs
 | ||
|     in addition to <command>bzip2</command>.  It compresses about 30%
 | ||
|     better on typical archives and decompresses about twice as
 | ||
|     fast.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Basic Nix expression evaluation profiling: setting the
 | ||
|     environment variable <envar>NIX_COUNT_CALLS</envar> to
 | ||
|     <literal>1</literal> will cause Nix to print how many times each
 | ||
|     primop or function was executed.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>New primops: <varname>concatLists</varname>,
 | ||
|     <varname>elem</varname>, <varname>elemAt</varname> and
 | ||
|     <varname>filter</varname>.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The command <command>nix-copy-closure</command> has a new
 | ||
|     flag <option>--use-substitutes</option> (<option>-s</option>) to
 | ||
|     download missing paths on the target machine using the substitute
 | ||
|     mechanism.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The command <command>nix-worker</command> has been renamed
 | ||
|     to <command>nix-daemon</command>.  Support for running the Nix
 | ||
|     worker in “slave” mode has been removed.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The <option>--help</option> flag of every Nix command now
 | ||
|     invokes <command>man</command>.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Chroot builds are now supported on systemd machines.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
| </itemizedlist>
 | ||
| 
 | ||
| <para>This release has contributions from Eelco Dolstra, Florian
 | ||
| Friesdorf, Mats Erik Andersson and Shea Levy.</para>
 | ||
| 
 | ||
| </section>
 |