[project @ 2002-06-26 13:33:05 by simonpj]
authorsimonpj <unknown>
Wed, 26 Jun 2002 13:33:05 +0000 (13:33 +0000)
committersimonpj <unknown>
Wed, 26 Jun 2002 13:33:05 +0000 (13:33 +0000)
Add 5.04 release notes draft

ghc/docs/users_guide/5-04-notes.sgml [new file with mode: 0644]

diff --git a/ghc/docs/users_guide/5-04-notes.sgml b/ghc/docs/users_guide/5-04-notes.sgml
new file mode 100644 (file)
index 0000000..e259f09
--- /dev/null
@@ -0,0 +1,284 @@
+<sect1 id="release-5-04">
+  <title>Release notes for version 5.04</title>
+
+  <sect2>
+    <title>User-visible compiler changes</title>
+    <itemizedlist>
+      <listitem>
+       <para>MacOS X support (Wolfgang, please fill in).</para>
+      </listitem>
+      <listitem>
+       <para><literal>ghc-pkg</literal>: new options
+       <option>--auto-ghci-libs</option>,
+       <option>-u</option>/<option>--update-package</option>,
+       <option>--force</option>, and
+       <option>-i</option>/<option>--input-file</option>, and
+       suppport for expanding environment variables in package
+       descriptions.  See <xref linkend="packages">).</para>
+      </listitem>
+      <listitem>
+       <para>The latest version of the FFI spec is fully supported.
+       The syntax of FFI declarations has changed accordingly.  The
+       old syntax is still accepted for the time being, but will
+       elicit a warning from the compiler.</para>
+      </listitem>
+      <listitem>
+       <para>New option: <option>-F</option> specifies a user-defined
+       preprocessing phase (see <xref linkend="pre-processor">).</para>
+      </listitem>
+      <listitem>
+       <para>Major overhaul of the heap profiling subsystem, with new
+       facilities for retainer profiling and biographical profiling
+       (ala nhc98, albeit with a couple of omissions).  The syntax of
+       the runtime heap-profiling options has changed.  See <xref
+       linkend="prof-heap">.</para>
+      </listitem>
+      <listitem>
+       <para>The type system now supports full rank-N types
+       (previously only limited rank-2 types were supported).  See
+       <xref linkend="universal-quantification">.</para>
+      </listitem>
+      <listitem>
+       <para>Explicit kind annotations can now be given on any
+        binding occurrence of a type variable.  See <xref
+        linkend="sec-kinding">.</para>
+      </listitem>
+      <listitem>
+       <para>The handling of type synonyms has been rationalised.
+       See <xref linkend="type-synonyms">.</para>
+      </listitem>
+      <listitem>
+       <para>Fixes for several space leaks in the compiler itself
+       (these fixes were also merged into 5.02.3).</para>
+      </listitem>
+      <listitem>
+       <para>It is now possible to derive arbitrary classes for
+       newtypes.  See <xref linkend="newtype-deriving">.</para>
+      </listitem>
+      <listitem>
+       <para>Deadlock is now an exception, rather than a return
+       status from the scheduler.  See the module
+       <literal>Control.Exception</literal> in the library
+       documentation for more details.</para>
+      </listitem>
+      <listitem>
+       <para>The syntax and behaviour of <literal>RULE</literal>
+       pragmas has changed slightly.  See <xref
+       linkend="rewrite-rules">.</para>
+      </listitem>
+      <listitem>
+       <para>Interface files are now in a binary format to reduce
+       compilation times.  To view an interface file in plain text,
+       use the <option>--show-iface</option> flag.</para>
+      </listitem>
+      <listitem>
+       <para>A restriction on the form of class declarations has been
+       lifted.  In Haskell 98, it is illegal for class method types
+       to mention constraints on the class type variable.  eg.</para>
+
+<programlisting>
+   class Seq s a where
+      elem     :: Eq a => a -> s a -> Bool
+</programlisting>
+       
+       <para>This restriction has now been lifted in GHC.</para>
+      </listitem>
+      <listitem>
+       <para>Main threads can now receive the
+       <literal>BlockedOnDeadMVar</literal> exception in the same way
+       as other threads.</para>
+      </listitem>
+      <listitem>
+       <para>The <option>-fall-strict</option> flag never really
+       worked, and has been removed.</para>
+      </listitem>
+      <listitem>
+       <para>The syntax of <literal>.hi-boot</literal> files is now
+       much clearer and Haskell-like.  See <xref
+       linkend="mutual-recursion">.</para>
+      </listitem>
+      <listitem>
+       <para>There is a new flag <option>-fffi</option> which enables
+       FFI support without turning on the rest of the GHC
+       extensions.</para>
+      </listitem>
+      <listitem>
+       <para>The syntax for implicit parameter bindings has changed.
+       Previously the keyword <literal>with</literal> was used to
+       introduce implicit bindings, but now implicit bindings may be
+       introduced using <literal>let</literal> (see <xref
+       linkend="implicit-parameters">).  As a result of this,
+       <literal>with</literal> is no longer a keyword when
+       <option>-fglasgow-exts</option> is turned on.</para>
+       
+       <para>The option <literal>-fwith</literal> may be used to
+       restore the old behaviour.</para>
+      </listitem>
+      <listitem>
+       <para>Infix type constructors are now allowed, and must begin
+       with a colon (as with data constructors).  See <xref
+       linkend="infix-tycons">.</para>
+      </listitem>
+      <listitem>
+       <para>The <literal>do</literal>-notation syntax is now
+       rebindable in the same way as other built-in syntax.  See
+       <xref linkend="rebindable-syntax">.</para>
+      </listitem>
+      <listitem>
+       <para>Support for using &ldquo;frameworks&rdquo; on
+       Darwin/MacOS X has been added.  See the
+       <option>-framework</option> option in <xref
+       linkend="options-linker">, and the
+       <literal>framework_dirs</literal> field of a package spec in
+       <xref linkend="package-management">.</para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+  
+  <sect2>
+    <title>User-visible interpreter (GHCi) changes</title>
+    <itemizedlist>
+      <listitem>
+       <para>New commands: <literal>:browse</literal>, <literal>:set
+       args</literal>, <literal>:set prog</literal>, <literal>:show
+       binadings</literal>, and <literal>:show modules</literal> (see
+       <xref linkend="ghci-commands">).</para>
+      </listitem>
+      <listitem>
+       <para>There is a much more flexible mechanism for manipulating
+       the scope for expressions typed at the prompt.  For example,
+       one can now have both the <literal>Prelude</literal> and the
+       exports of several compiled modules in scope at the same
+       time.  See <xref linkend="ghci-scope">.</para>
+      </listitem>
+      <listitem>
+       <para>GHCi now supports <literal>foreign import
+       "wrapper"</literal> FFI declarations.</para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+  
+  <sect2>
+    <title>User-visible library changes</title>
+    <itemizedlist>
+      <listitem>
+       <para>GHC is in the process of moving to a new hierarchical
+       set of libraries.  At the moment, we have two sets of
+       libraries, both described in accompanying documents:</para>
+       <itemizedlist>
+         <listitem>
+           <para>The &ldquo;new libraries&rdquo; which are
+           hierarchical and consist of the following packages:
+           <literal>base</literal>, <literal>haskell98</literal>,
+           <literal>haskell-src</literal>, and
+           <literal>network</literal>.  Broadly speaking,
+           <literal>base</literal> contains the
+           <literal>Prelude</literal>, standard libraries and most of
+           the contents of the old <literal>lang</literal>
+           package.  By default, the <literal>base</literal> and
+           <literal>haskell98</literal> packages are enabled.</para>
+         </listitem>
+
+         <listitem>
+           <para>The <literal>hslibs</literal>, most of which are now
+           deprecated.  Where possible, new code should be written to
+           use the new libraries instead. </para>
+
+           <para>The following libraries in <literal>hslibs</literal>
+           have not moved yet:</para>
+           <itemizedlist>
+             <listitem>
+               <para>The packages <literal>win32</literal>,
+                <literal>xlib</literal>, <literal>graphics</literal>,
+                and <literal>posix</literal>.</para>
+             </listitem>
+             <listitem>
+               <para>The Edison libraries in the
+               <literal>data</literal> package.</para>
+             </listitem>
+             <listitem>
+               <para>In the <literal>lang</literal> package, the
+               modules <literal>TimeExts</literal>,
+               <literal>DirectoryExts</literal>,
+               <literal>SystemExts</literal>, and
+               <literal>NumExts</literal>.</para>
+             </listitem>
+             <listitem>
+               <para>The HaXml libraries in the
+               <literal>text</literal> package.</para>
+             </listitem>
+             <listitem>
+               <para>In the <literal>util</literal> package, the
+                modules <literal>MD5</literal>,
+                <literal>Select</literal>, <literal>Memo</literal>,
+                <literal>Observe</literal>, and
+                <literal>Readline</literal>.</para>
+             </listitem>
+           </itemizedlist>
+
+           <para>All other libraries from <literal>hslibs</literal>
+           either have equivalents in the new libraries (see the
+           <literal>hslibs</literal> docs for details), or were
+           already deprecated and hence were not moved into the new
+           hierarchy.</para>
+         </listitem>
+       </itemizedlist>
+      </listitem>
+      
+      <listitem>
+       <para>The <literal>Read</literal> class is now based on a
+       parsing combinator library which is vastly more efficient than
+       the previous one.  See the modules
+       <literal>Text.Read</literal>.
+       <literal>Text.ParserCombinators.ReadP</literal>, and
+       <literal>Text.ParserCombinators.ReadPrec</literal> in the
+       library documentation.</para>
+
+       <para>The code generated by the compiler for derived
+       <literal>Read</literal> instances should be much shorter than
+       before.</para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>New experimental features</title>
+    <itemizedlist>
+      <listitem>
+       <para>Linear implicit parameters.  See <xref
+       linkend="linear-implicit-parameters">.</para>
+      </listitem>
+      <listitem>
+       <para>The RTS has support for running in a multi-threaded
+       environment and making non-blocking (from Haskell's point of
+       view) calls to foreign C functions which would normally block.
+       To enable this behaviour, configure with the
+       <option>--enable-threaded-rts</option> option.</para>
+      </listitem>
+      <listitem>
+       <para>The compiler can now read in files containing Core
+       syntax (such as those produced by the
+       <option>-fext-core</option> option) and compile them.  This is
+       enabled with the <option>-fcore</option> flag.</para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>Internal changes</title>
+    <itemizedlist>
+      <listitem>
+       <para>Happy 1.13 is now required to build GHC, because of the
+       change in names of certain libraries.</para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+</sect1>
+
+<!-- Emacs stuff:
+     ;;; Local Variables: ***
+     ;;; mode: sgml ***
+     ;;; sgml-parent-document: ("users_guide.sgml" "book" "chapter" "sect1") ***
+     ;;; End: ***
+ -->