98 lines
		
	
	
		
			No EOL
		
	
	
		
			3.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			No EOL
		
	
	
		
			3.2 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="ch-relnotes-0.9">
 | 
						|
 | 
						|
<title>Release 0.9 (September 16, 2005)</title>
 | 
						|
 | 
						|
<para>NOTE: this version of Nix uses Berkeley DB 4.3 instead of 4.2.
 | 
						|
The database is upgraded automatically, but you should be careful not
 | 
						|
to use old versions of Nix that still use Berkeley DB 4.2.  In
 | 
						|
particular, if you use a Nix installed through Nix, you should run
 | 
						|
 | 
						|
<screen>
 | 
						|
$ nix-store --clear-substitutes</screen>
 | 
						|
 | 
						|
first.</para>
 | 
						|
 | 
						|
 | 
						|
<itemizedlist>
 | 
						|
 | 
						|
  <listitem><para>Unpacking of patch sequences is much faster now
 | 
						|
  since we no longer do redundant unpacking and repacking of
 | 
						|
  intermediate paths.</para></listitem>
 | 
						|
 | 
						|
  <listitem><para>Nix now uses Berkeley DB 4.3.</para></listitem>
 | 
						|
 | 
						|
  <listitem><para>The <function>derivation</function> primitive is
 | 
						|
  lazier.  Attributes of dependent derivations can mutually refer to
 | 
						|
  each other (as long as there are no data dependencies on the
 | 
						|
  <varname>outPath</varname> and <varname>drvPath</varname> attributes
 | 
						|
  computed by <function>derivation</function>).</para>
 | 
						|
 | 
						|
  <para>For example, the expression <literal>derivation
 | 
						|
  attrs</literal> now evaluates to (essentially)
 | 
						|
 | 
						|
  <programlisting>
 | 
						|
attrs // {
 | 
						|
  type = "derivation";
 | 
						|
  outPath = derivation! attrs;
 | 
						|
  drvPath = derivation! attrs;
 | 
						|
}</programlisting>
 | 
						|
 | 
						|
  where <function>derivation!</function> is a primop that does the
 | 
						|
  actual derivation instantiation (i.e., it does what
 | 
						|
  <function>derivation</function> used to do).  The advantage is that
 | 
						|
  it allows commands such as <command>nix-env -qa</command> and
 | 
						|
  <command>nix-env -i</command> to be much faster since they no longer
 | 
						|
  need to instantiate all derivations, just the
 | 
						|
  <varname>name</varname> attribute.</para>
 | 
						|
 | 
						|
  <para>Also, it allows derivations to cyclically reference each
 | 
						|
  other, for example,
 | 
						|
 | 
						|
  <programlisting>
 | 
						|
webServer = derivation {
 | 
						|
  ...
 | 
						|
  hostName = "svn.cs.uu.nl";
 | 
						|
  services = [svnService];
 | 
						|
};
 | 
						|
 
 | 
						|
svnService = derivation {
 | 
						|
  ...
 | 
						|
  hostName = webServer.hostName;
 | 
						|
};</programlisting>
 | 
						|
 | 
						|
  Previously, this would yield a black hole (infinite recursion).</para>
 | 
						|
 | 
						|
  </listitem>
 | 
						|
 | 
						|
  <listitem><para><command>nix-build</command> now defaults to using
 | 
						|
  <filename>./default.nix</filename> if no Nix expression is
 | 
						|
  specified.</para></listitem>
 | 
						|
 | 
						|
  <listitem><para><command>nix-instantiate</command>, when applied to
 | 
						|
  a Nix expression that evaluates to a function, will call the
 | 
						|
  function automatically if all its arguments have
 | 
						|
  defaults.</para></listitem>
 | 
						|
 | 
						|
  <listitem><para>Nix now uses libtool to build dynamic libraries.
 | 
						|
  This reduces the size of executables.</para></listitem>
 | 
						|
 | 
						|
  <listitem><para>A new list concatenation operator
 | 
						|
  <literal>++</literal>.  For example, <literal>[1 2 3] ++ [4 5
 | 
						|
  6]</literal> evaluates to <literal>[1 2 3 4 5
 | 
						|
  6]</literal>.</para></listitem>
 | 
						|
 | 
						|
  <listitem><para>Some currently undocumented primops to support
 | 
						|
  low-level build management using Nix (i.e., using Nix as a Make
 | 
						|
  replacement).  See the commit messages for <literal>r3578</literal>
 | 
						|
  and <literal>r3580</literal>.</para></listitem>
 | 
						|
 | 
						|
  <listitem><para>Various bug fixes and performance
 | 
						|
  improvements.</para></listitem>
 | 
						|
 | 
						|
</itemizedlist>
 | 
						|
 | 
						|
</section> |