119 lines
No EOL
4.3 KiB
XML
119 lines
No EOL
4.3 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="ssec-relnotes-1.0">
|
||
|
||
<title>Release 1.0 (May 11, 2012)</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>
|
||
|
||
</chapter> |