various minor tweaks, and rearrange to put "important" changes near the top
authorSimon Marlow <simonmar@microsoft.com>
Fri, 25 Aug 2006 15:49:55 +0000 (15:49 +0000)
committerSimon Marlow <simonmar@microsoft.com>
Fri, 25 Aug 2006 15:49:55 +0000 (15:49 +0000)
docs/users_guide/6.6-notes.xml

index 1f4e485..2260690 100644 (file)
@@ -7,6 +7,120 @@
     <itemizedlist>
       <listitem>
         <para>
+          GHC now supports SMP:
+          when you compile with <option>-threaded</option>, you now get
+          an RTS flag <option>-N</option> that allows you to specify the
+          number of OS threads that GHC should use. Defaults to 1.
+          See <xref linkend="sec-using-smp" /> and <xref
+          linkend="lang-parallel" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC's modules are now also bundled into a
+          <literal>ghc</literal> package, allowing programs to make use
+          of GHC as a library. The interface has not yet been properly
+          designed, so is subject to change.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC now handles impredicative polymorphism and there are
+          changes to the way scoped type variables work; see
+          <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
+          for more details.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC now supports bang patterns to require a function is strict
+          in a given argument, e.g.
+          <programlisting>
+    f (!x, y) = [x,y]</programlisting>
+          is equivalent to
+          <programlisting>
+    f (x, y) | x `seq` False = undefined
+             | otherwise = [x,y]</programlisting>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The restriction that you cannot use two packages together if
+          they contain a module with the same name has been removed.
+          In implementation terms, the package name is now included in
+          every exported symbol name in the object file, so that
+          modules with the same name in different packages do not
+          clash.  See <xref linkend="package-overlaps" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC now treats source files as UTF-8 (ASCII is a strict
+          subset of UTF-8, so ASCII source files will continue to
+          work as before). However, invalid UTF-8 sequences are
+          ignored in comments, so ASCII code with comments in, for
+          example, Latin-1 will also work.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GADTs can now use record syntax. Also, if the datatype could
+          have been declared with Haskell 98 syntax then deriving
+          clauses are permitted. For more info see <xref linkend="gadt" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          There is a new pragma <literal>LANGUAGE</literal> which allows
+          extensions to be specified portably, i.e. without having to
+          resort to the <literal>OPTIONS_GHC</literal> pragma and giving
+          GHC-specific options. The arguments to the pragma are the same
+          extensions that Cabal knows about. More info in
+          <xref linkend="language-pragma" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          When you use <command>ghc --make</command>, GHC will now take
+          the executable filename from the name of the file containing
+          the <literal>Main</literal> module rather than using
+          <filename>a.out</filename>. The <filename>.exe</filename>
+          extension is appended on Windows, and it can of course be
+          overridden with <option>-o</option>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC's garbage collector now deals more intelligently with
+          mutable data, so you mostly no longer need to worry about GC
+          performance when a lot of memory is taken up by
+          <literal>STArray</literal>s, <literal>IOArray</literal>s,
+          <literal>STRef</literal>s or <literal>IORef</literal>s.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC now allows more generalisation when typing mutually
+          recursive bindings, resulting in more programs being accepted.
+          See <xref linkend="typing-binds" /> for more details.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The rules for instance declarations have been further relaxed.
+          You are now permitted to have instances whose heads contain
+          only type variables, e.g.
+          <programlisting>
+    instance C a</programlisting>
+          and instances whose constraints are not only type variables,
+          e.g.
+          <programlisting>
+    instance C2 Int a => C3 [a] b</programlisting>
+          For more details, see <xref linkend="instance-rules" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
             The following flags (and, where appropriate, their inverses)
             used to be static (can only be given on
             the command line) but are now dynamic (can also be given in
       </listitem>
       <listitem>
         <para>
-          The equality test performed when pattern matching against
-          an overloaded numeric literal now uses the
+          When the <option>-fno-implicit-prelude</option> is given,
+          the equality test performed when pattern matching against an
+          overloaded numeric literal now uses the
           <literal>(==)</literal> in scope, rather than the one from
           <literal>Prelude</literal>. Likewise, the subtraction and
           inequality test performed when pattern matching against
       </listitem>
       <listitem>
         <para>
-          With the exception of the arrow syntax, the types of functions
-          used by sugar (such as do notation, numeric literal patterns)
-          need not match the types of the <literal>Prelude</literal>
-          functions normally used.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          GADTs can now use record syntax. Also, if the datatype could
-          have been declared with Haskell 98 syntax then deriving
-          clauses are permitted. For more info see <xref linkend="gadt" />.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          There is a new pragma <literal>LANGUAGE</literal> which allows
-          extensions to be specified portably, i.e. without having to
-          resort to the <literal>OPTIONS_GHC</literal> pragma and giving
-          GHC-specific options. The arguments to the pragma are the same
-          extensions that Cabal knows about. More info in
-          <xref linkend="language-pragma" />.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          GHC now allows more generalisation when typing mutually
-          recursive bindings, resulting in more programs being accepted.
-          See <xref linkend="typing-binds" /> for more details.
+          Another change to <option>-fno-implicit-prelude</option>:
+          with the exception of the arrow syntax, the types of
+          functions used by sugar (such as do notation, numeric
+          literal patterns) need not match the types of the
+          <literal>Prelude</literal> functions normally used.
         </para>
       </listitem>
       <listitem>
       </listitem>
       <listitem>
         <para>
-          GHC now treats source files as UTF-8 (ASCII is a strict
-          subset of UTF-8, so ASCII source files will continue to
-          work as before). However, invalid UTF-8 sequences are
-          ignored in comments, so ASCII code with comments in, for
-          example, Latin-1 will also work.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          When you use <command>ghc --make</command>, GHC will now take
-          the executable filename from the name of the file containing
-          the <literal>Main</literal> module rather than using
-          <filename>a.out</filename>. The <filename>.exe</filename>
-          extension is appended on Windows, and it can of course be
-          overridden with <option>-o</option>.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
           If you <literal>newtype</literal> the IO monad, e.g.
           <programlisting>
     newtype MyIO a = MyIO (IO a)</programlisting>
       </listitem>
       <listitem>
         <para>
-          GHC now includes the package name in symbol names; the upshot
-          of this is that it is possible to link a program that uses
-          multiple packages each containing a module of the same name.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          GHCi now has a <literal>:main</literal> command that allows
-          you to call the <literal>main</literal> function with
-          command-line arguments.
-          See <xref linkend="ghci-commands" /> for more information.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          GHCi now has <literal>:ctags</literal> and
-          <literal>:etags</literal> commands to generate tags files for
-          vi-style and emacs-style editors respectively.
-          See <xref linkend="ghci-commands" /> for more information.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          The rules for instance declarations have been further relaxed.
-          You are now permitted to have instances whose heads contain
-          only type variables, e.g.
-          <programlisting>
-    instance C a</programlisting>
-          and instances whose constraints are not only type variables,
-          e.g.
-          <programlisting>
-    instance C2 Int a => C3 [a] b</programlisting>
-          For more details, see <xref linkend="instance-rules" />.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          GHCi now allows tab completion of in-scope names.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
           The old syntax for FFI declarations (deprecated since 5.04)
           is no longer accepted.
         </para>
           <option>--make</option>, and hence can be used by cabal.
         </para>
       </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>GHCi changes</title>
+
+    <itemizedlist>
       <listitem>
         <para>
-          GHC now supports bang patterns to require a function is strict
-          in a given argument, e.g.
-          <programlisting>
-    f (!x, y) = [x,y]</programlisting>
-          is equivalent to
-          <programlisting>
-    f (x, y) | x `seq` False = undefined
-             | otherwise = [x,y]</programlisting>
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          GHC now handles impredicative polymorphism; see
-          <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
-          for more details.
-        </para>
-      </listitem>
-      <listitem>
-        <para>
-          GHC's modules are now also bundled into a
-          <literal>ghc</literal> package, allowing programs to make use
-          of GHC as a library. The interface has not yet been properly
-          designed, so is subject to change.
+          GHCi now allows tab completion of in-scope names and modules
+          on platforms that use readline (i.e. not Windows).
         </para>
       </listitem>
       <listitem>
         <para>
-          GHC's garbage collector now deals more intelligently with
-          mutable data, so you no longer need to worry about GC
-          performance when a lot of memory is taken up by
-          <literal>STArray</literal>s, <literal>IOArray</literal>s,
-          <literal>STRef</literal>s or <literal>IORef</literal>s.
+          GHCi now has a <literal>:main</literal> command that allows
+          you to call the <literal>main</literal> function with
+          command-line arguments.
+          See <xref linkend="ghci-commands" /> for more information.
         </para>
       </listitem>
       <listitem>
         <para>
-          GHC now supports SMP:
-          when you compile with <option>-threaded</option>, you now get
-          an RTS flag <option>-N</option> that allows you to specify the
-          number of OS threads that GHC should use. Defaults to 1.
+          GHCi now has <literal>:ctags</literal> and
+          <literal>:etags</literal> commands to generate tags files for
+          vi-style and emacs-style editors respectively.
+          See <xref linkend="ghci-commands" /> for more information.
         </para>
       </listitem>
     </itemizedlist>