<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-0.13">

<title>Release 0.13 (2009-11-05)</title>

<para>This is primarily a bug fix release.  It has some new
features:</para>

<itemizedlist>

  <listitem>
    <para>Syntactic sugar for writing nested attribute sets.  Instead of

<programlisting>
{
  foo = {
    bar = 123;
    xyzzy = true;
  };
  a = { b = { c = "d"; }; };
}
</programlisting>

    you can write

<programlisting>
{
  foo.bar = 123;
  foo.xyzzy = true;
  a.b.c = "d";
}
</programlisting>

    This is useful, for instance, in NixOS configuration files.</para>

  </listitem>

  <listitem>
    <para>Support for Nix channels generated by Hydra, the Nix-based
    continuous build system.  (Hydra generates NAR archives on the
    fly, so the size and hash of these archives isn’t known in
    advance.)</para>
  </listitem>

  <listitem>
    <para>Support <literal>i686-linux</literal> builds directly on
    <literal>x86_64-linux</literal> Nix installations.  This is
    implemented using the <function>personality()</function> syscall,
    which causes <command>uname</command> to return
    <literal>i686</literal> in child processes.</para>
  </listitem>

  <listitem>
    <para>Various improvements to the <literal>chroot</literal>
    support.  Building in a <literal>chroot</literal> works quite well
    now.</para>
  </listitem>

  <listitem>
    <para>Nix no longer blocks if it tries to build a path and another
    process is already building the same path.  Instead it tries to
    build another buildable path first.  This improves
    parallelism.</para>
  </listitem>

  <listitem>
    <para>Support for large (> 4 GiB) files in NAR archives.</para>
  </listitem>

  <listitem>
    <para>Various (performance) improvements to the remote build
    mechanism.</para>
  </listitem>

  <listitem>
    <para>New primops: <varname>builtins.addErrorContext</varname> (to
    add a string to stack traces — useful for debugging),
    <varname>builtins.isBool</varname>,
    <varname>builtins.isString</varname>,
    <varname>builtins.isInt</varname>,
    <varname>builtins.intersectAttrs</varname>.</para>
  </listitem>

  <listitem>
    <para>OpenSolaris support (Sander van der Burg).</para>
  </listitem>

  <listitem>
    <para>Stack traces are no longer displayed unless the
    <option>--show-trace</option> option is used.</para>
  </listitem>

  <listitem>
    <para>The scoping rules for <literal>inherit
    (<replaceable>e</replaceable>) ...</literal> in recursive
    attribute sets have changed.  The expression
    <replaceable>e</replaceable> can now refer to the attributes
    defined in the containing set.</para>
  </listitem>

</itemizedlist>

</section>
