about summary refs log tree commit diff
path: root/doc/manual/release-notes/rl-161.xml
blob: f6d3a6ba6aa96330ef71667d03c95de82d14983c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<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.6.1">

<title>Release 1.6.1 (October 28, 2013)</title>

<para>This is primarily a bug fix release.  Changes of interest
are:</para>

<itemizedlist>

  <listitem>
    <para>Nix 1.6 accidentally changed the semantics of antiquoted
    paths in strings, such as <literal>"${/foo}/bar"</literal>.  This
    release reverts to the Nix 1.5.3 behaviour.</para>
  </listitem>

  <listitem>
    <para>Previously, Nix optimised expressions such as
    <literal>"${<replaceable>expr</replaceable>}"</literal> to
    <replaceable>expr</replaceable>.  Thus it neither checked whether
    <replaceable>expr</replaceable> could be coerced to a string, nor
    applied such coercions.  This meant that
    <literal>"${123}"</literal> evaluatued to <literal>123</literal>,
    and <literal>"${./foo}"</literal> evaluated to
    <literal>./foo</literal> (even though
    <literal>"${./foo} "</literal> evaluates to
    <literal>"/nix/store/<replaceable>hash</replaceable>-foo "</literal>).
    Nix now checks the type of antiquoted expressions and
    applies coercions.</para>
  </listitem>

  <listitem>
    <para>Nix now shows the exact position of undefined variables.  In
    particular, undefined variable errors in a <literal>with</literal>
    previously didn't show <emphasis>any</emphasis> position
    information, so this makes it a lot easier to fix such
    errors.</para>
  </listitem>

  <listitem>
    <para>Undefined variables are now treated consistently.
    Previously, the <function>tryEval</function> function would catch
    undefined variables inside a <literal>with</literal> but not
    outside.  Now <function>tryEval</function> never catches undefined
    variables.</para>
  </listitem>

  <listitem>
    <para>Bash completion in <command>nix-shell</command> now works
    correctly.</para>
  </listitem>

  <listitem>
    <para>Stack traces are less verbose: they no longer show calls to
    builtin functions and only show a single line for each derivation
    on the call stack.</para>
  </listitem>

  <listitem>
    <para>New built-in function: <function>builtins.typeOf</function>,
    which returns the type of its argument as a string.</para>
  </listitem>

</itemizedlist>

</chapter>