2014-09-16 15:29:00 +03:00
|
|
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
2014-08-27 19:41:09 +03:00
|
|
|
|
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">
|
|
|
|
|
|
2016-01-04 15:38:26 +02:00
|
|
|
|
<title>Release 1.0 (2012-05-11)</title>
|
2014-08-27 19:41:09 +03:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
2016-01-04 15:38:26 +02:00
|
|
|
|
</section>
|