119 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
	
		
			4.3 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.0">
 | ||
| 
 | ||
| <title>Release 1.0 (2012-05-11)</title>
 | ||
| 
 | ||
| <para>There have been numerous improvements and bug fixes since the
 | ||
| previous release.  Here are the most significant:</para>
 | ||
| 
 | ||
| <itemizedlist>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Nix can now optionally use the Boehm garbage collector.
 | ||
|     This significantly reduces the Nix evaluator’s memory footprint,
 | ||
|     especially when evaluating large NixOS system configurations.  It
 | ||
|     can be enabled using the <option>--enable-gc</option> configure
 | ||
|     option.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Nix now uses SQLite for its database.  This is faster and
 | ||
|     more flexible than the old <emphasis>ad hoc</emphasis> format.
 | ||
|     SQLite is also used to cache the manifests in
 | ||
|     <filename>/nix/var/nix/manifests</filename>, resulting in a
 | ||
|     significant speedup.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Nix now has an search path for expressions.  The search path
 | ||
|     is set using the environment variable <envar>NIX_PATH</envar> and
 | ||
|     the <option>-I</option> command line option.  In Nix expressions,
 | ||
|     paths between angle brackets are used to specify files that must
 | ||
|     be looked up in the search path.  For instance, the expression
 | ||
|     <literal><nixpkgs/default.nix></literal> looks for a file
 | ||
|     <filename>nixpkgs/default.nix</filename> relative to every element
 | ||
|     in the search path.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The new command <command>nix-build --run-env</command>
 | ||
|     builds all dependencies of a derivation, then starts a shell in an
 | ||
|     environment containing all variables from the derivation.  This is
 | ||
|     useful for reproducing the environment of a derivation for
 | ||
|     development.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The new command <command>nix-store --verify-path</command>
 | ||
|     verifies that the contents of a store path have not
 | ||
|     changed.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The new command <command>nix-store --print-env</command>
 | ||
|     prints out the environment of a derivation in a format that can be
 | ||
|     evaluated by a shell.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Attribute names can now be arbitrary strings.  For instance,
 | ||
|     you can write <literal>{ "foo-1.2" = …; "bla bla" = …; }."bla
 | ||
|     bla"</literal>.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Attribute selection can now provide a default value using
 | ||
|     the <literal>or</literal> operator.  For instance, the expression
 | ||
|     <literal>x.y.z or e</literal> evaluates to the attribute
 | ||
|     <literal>x.y.z</literal> if it exists, and <literal>e</literal>
 | ||
|     otherwise.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The right-hand side of the <literal>?</literal> operator can
 | ||
|     now be an attribute path, e.g., <literal>attrs ?
 | ||
|     a.b.c</literal>.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>On Linux, Nix will now make files in the Nix store immutable
 | ||
|     on filesystems that support it.  This prevents accidental
 | ||
|     modification of files in the store by the root user.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Nix has preliminary support for derivations with multiple
 | ||
|     outputs.  This is useful because it allows parts of a package to
 | ||
|     be deployed and garbage-collected separately.  For instance,
 | ||
|     development parts of a package such as header files or static
 | ||
|     libraries would typically not be part of the closure of an
 | ||
|     application, resulting in reduced disk usage and installation
 | ||
|     time.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The Nix store garbage collector is faster and holds the
 | ||
|     global lock for a shorter amount of time.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>The option <option>--timeout</option> (corresponding to the
 | ||
|     configuration setting <literal>build-timeout</literal>) allows you
 | ||
|     to set an absolute timeout on builds — if a build runs for more than
 | ||
|     the given number of seconds, it is terminated.  This is useful for
 | ||
|     recovering automatically from builds that are stuck in an infinite
 | ||
|     loop but keep producing output, and for which
 | ||
|     <literal>--max-silent-time</literal> is ineffective.</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
|   <listitem>
 | ||
|     <para>Nix development has moved to GitHub (<link
 | ||
|     xlink:href="https://github.com/NixOS/nix" />).</para>
 | ||
|   </listitem>
 | ||
| 
 | ||
| </itemizedlist>
 | ||
| 
 | ||
| </section>
 |