forked from lix-project/lix
98 lines
3.2 KiB
XML
98 lines
3.2 KiB
XML
|
<chapter 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>
|
||
|
|
||
|
</chapter>
|