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

<title>Release 1.8 (2014-12-14)</title>

<itemizedlist>

  <listitem><para>Breaking change: to address a race condition, the
  remote build hook mechanism now uses <command>nix-store
  --serve</command> on the remote machine. This requires build slaves
  to be updated to Nix 1.8.</para></listitem>

  <listitem><para>Nix now uses HTTPS instead of HTTP to access the
  default binary cache,
  <literal>cache.nixos.org</literal>.</para></listitem>

  <listitem><para><command>nix-env</command> selectors are now regular
  expressions. For instance, you can do

<screen>
$ nix-env -qa '.*zip.*'
</screen>

  to query all packages with a name containing
  <literal>zip</literal>.</para></listitem>

  <listitem><para><command>nix-store --read-log</command> can now
  fetch remote build logs. If a build log is not available locally,
  then ‘nix-store -l’ will now try to download it from the servers
  listed in the ‘log-servers’ option in nix.conf. For instance, if you
  have the configuration option

<programlisting>
log-servers = http://hydra.nixos.org/log
</programlisting>

then it will try to get logs from
<literal>http://hydra.nixos.org/log/<replaceable>base name of the
store path</replaceable></literal>. This allows you to do things like:

<screen>
$ nix-store -l $(which xterm)
</screen>

  and get a log even if <command>xterm</command> wasn't built
  locally.</para></listitem>

  <listitem><para>New builtin functions:
  <function>attrValues</function>, <function>deepSeq</function>,
  <function>fromJSON</function>, <function>readDir</function>,
  <function>seq</function>.</para></listitem>

  <listitem><para><command>nix-instantiate --eval</command> now has a
  <option>--json</option> flag to print the resulting value in JSON
  format.</para></listitem>

  <listitem><para><command>nix-copy-closure</command> now uses
  <command>nix-store --serve</command> on the remote side to send or
  receive closures. This fixes a race condition between
  <command>nix-copy-closure</command> and the garbage
  collector.</para></listitem>

  <listitem><para>Derivations can specify the new special attribute
  <varname>allowedRequisites</varname>, which has a similar meaning to
  <varname>allowedReferences</varname>. But instead of only enforcing
  to explicitly specify the immediate references, it requires the
  derivation to specify all the dependencies recursively (hence the
  name, requisites) that are used by the resulting
  output.</para></listitem>

  <listitem><para>On Mac OS X, Nix now handles case collisions when
  importing closures from case-sensitive file systems. This is mostly
  useful for running NixOps on Mac OS X.</para></listitem>

  <listitem><para>The Nix daemon has new configuration options
  <option>allowed-users</option> (specifying the users and groups that
  are allowed to connect to the daemon) and
  <option>trusted-users</option> (specifying the users and groups that
  can perform privileged operations like specifying untrusted binary
  caches).</para></listitem>

  <listitem><para>The configuration option
  <option>build-cores</option> now defaults to the number of available
  CPU cores.</para></listitem>

  <listitem><para>Build users are now used by default when Nix is
  invoked as root. This prevents builds from accidentally running as
  root.</para></listitem>

  <listitem><para>Nix now includes systemd units and Upstart
  jobs.</para></listitem>

  <listitem><para>Speed improvements to <command>nix-store
  --optimise</command>.</para></listitem>

  <listitem><para>Language change: the <literal>==</literal> operator
  now ignores string contexts (the “dependencies” of a
  string).</para></listitem>

  <listitem><para>Nix now filters out Nix-specific ANSI escape
  sequences on standard error. They are supposed to be invisible, but
  some terminals show them anyway.</para></listitem>

  <listitem><para>Various commands now automatically pipe their output
  into the pager as specified by the <envar>PAGER</envar> environment
  variable.</para></listitem>

  <listitem><para>Several improvements to reduce memory consumption in
  the evaluator.</para></listitem>

</itemizedlist>

<para>This release has contributions from Adam Szkoda, Aristid
Breitkreuz, Bob van der Linden, Charles Strahan, darealshinji, Eelco
Dolstra, Gergely Risko, Joel Taylor, Ludovic Courtès, Marko Durkovic,
Mikey Ariel, Paul Colomiets, Ricardo M.  Correia, Ricky Elrod, Robert
Helgesson, Rob Vermaas, Russell O'Connor, Shea Levy, Shell Turner,
Sönke Hahn, Steve Purcell, Vladimír Čunát and Wout Mertens.</para>

</section>
