+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<sect1 id="release-5-00">
- <title>Release notes for version 5.00 (April 2001)</title>
-
- <sect2>
- <title>User-visible compiler changes</title>
- <itemizedlist>
- <listitem>
- <para>GHCi, the new interactive environment on top of GHC, has
- been added (<xref linkend="ghci">).</para>
- </listitem>
- <listitem>
- <para>New <option>––make</option> flag added (<xref
- linkend="make-mode">).</para>
- </listitem>
- <listitem>
- <para>The native code generator now supports Sparc in addition
- to x86.</para>
- </listitem>
- <listitem>
- <para>We now make it clear which options can be placed in an
- OPTIONS pragma. See <xref
- linkend="static-dynamic-flags">.</para>
- </listitem>
- <listitem>
- <para><option>-fglasgow-exts</option> no longer implies
- <option>-package lang</option>.</para>
- </listitem>
- <listitem>
- <para><option>-noC</option> is no more.</para>
- </listitem>
- <listitem>
- <para><option>-hi</option> and <option>-nohi</option> are no more.</para>
- </listitem>
- <listitem>
- <para>The concept of “packages” has been
- generalised and extended. Packages may be installed or
- removed from an existing GHC installation using the new
- <command>ghc-pkg</command> tool. See <xref
- linkend="packages">.</para>
- </listitem>
- <listitem>
- <para>Initial unicode support: the <literal>Char</literal>
- type is now 31 bits. We don't yet have support for unicode
- I/O.</para>
- </listitem>
- <listitem>
- <para><option>-v</option> now takes an optional numeric
- argument indicating the level of verbosity (<xref
- linkend="options-help">). <option>-dshow-passes</option> has
- been removed.</para>
- </listitem>
- <listitem>
- <para>Parallel list comprehensions added. See <xref
- linkend="parallel-list-comprehensions">.</para>
- </listitem>
- <listitem>
- <para>Functional dependencies are now fully implemented.
- </para>
- </listitem>
- <listitem>
- <para>Profiling: please use
- <literal>{-# SCC ".." #-}</literal>
- rather than <literal>_scc_ "..."</literal>. The latter
- will be phased out in due course.</para>
- </listitem>
- <listitem>
- <para>A new experimental optimisation, SpecConstr, is turned
- on with <literal>-O2</literal>.</para>
- </listitem>
- <listitem>
- <para>Please report bugs using the <ulink
- url="http://sourceforge.net/projects/ghc/">SourceForge bug
- tracker</ulink> instead of
- <email>glasgow-haskell-bugs@haskell.org</email> if
- possible.</para>
- </listitem>
- <listitem>
- <para>Documentation changes: there's now a useful Flag
- Reference section, see <xref linkend="flag-reference">.</para>
- </listitem>
- <listitem>
- <para>Many, many, bugfixes.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>New experimental features</title>
-
- <itemizedlist>
- <listitem>
- <para>A “front panel” for GHC-compiled programs
- displays real-time graphs of memory behaviour in a GTK+
- window. You need to recompile the RTS with front panel
- support to use this.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>FFI changes</title>
- <itemizedlist>
- <listitem>
- <para><command>hsc2hs</command> added (<xref linkend="hsc2hs">).</para>
- </listitem>
- <listitem>
- <para>FFI libraries have been updated to the latest proposal
- from the FFI task force. Too many changes to list here, see
- the docs: <xref linkend="Foreign">.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>User-visible library changes</title>
- <itemizedlist>
- <listitem>
- <para><function>putMVar</function> now blocks if the
- <literal>MVar</literal> is already full. The
- <literal>PutFullMVar</literal> exception no longer exists.
- A non-blocking version of <function>putMVar</function>,
- <function>tryPutMVar</function>, has been added (<xref
- linkend="MVars">).</para>
- </listitem>
- <listitem>
- <para>The <literal>Int</literal> and
- <literal>Integer</literal> types now have instances of
- <literal>Bits</literal> (<xref linkend="Bits">).</para>
- </listitem>
- <listitem>
- <para>Package <literal>hssource</literal> has been added. It
- contains a Haskell 98 abstract syntax, parser, lexer and pretty
- printer. No documentation yet.</para>
- </listitem>
- <listitem>
- <para>The methods <literal>fromInt</literal> and
- <literal>toInt</literal>, which used to be in class
- <literal>Num</literal> but exported from module
- <literal>Int</literal>, are no longer in class
- <literal>Num</literal>. They're still available from module
- <literal>Int</literal>, however.</para>
-
- <para>In most cases, there should be no benefit from using
- <literal>fromInt</literal> instead of
- <literal>fromIntegral</literal>, which is specialised for all
- integral types.</para>
- </listitem>
- <listitem>
- <para>New modules: DiffArray (<xref linkend="DiffArray">),
- StorableArray (<xref linkend="StorableArray">),
- MonadList, MonadCont (no documentation yet).</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Build system changes</title>
-
- <itemizedlist>
- <listitem>
- <para>The <literal>WithGhcHc</literal> setting in
- <literal>build.mk</literal> has been replaced by the
- <literal>––with-ghc=<replaceable>ghc</replaceable></literal>
- option to <literal>configure</literal>. The new option
- <emphasis>must</emphasis> be used if you intend to use
- anything except “<literal>ghc</literal>” to
- bootstrap GHC, in order that the build system can figure out
- what version of GHC you're using.</para>
- </listitem>
- <listitem>
- <para>Source distributions are now made by doing <literal>make
- distclean</literal> in a build tree, instead of requiring a
- linked build tree.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Internal changes</title>
- <itemizedlist>
- <listitem>
- <para>Many internal compiler changes: too many to list
- here.</para>
- </listitem>
- <listitem>
- <para>The old perl driver has been removed and replaced by a
- driver in the compiler proper.</para>
- </listitem>
- <listitem>
- <para>We now use GMP 3 instead of GMP 2 for
- arbitrary-precision integer support.</para>
- </listitem>
- <listitem>
- <para>Several libraries rewritten to use the FFI.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
-</sect1>
-
-<!-- Emacs stuff:
- ;;; Local Variables: ***
- ;;; mode: xml ***
- ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") ***
- ;;; End: ***
- -->
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<sect1 id="release-5-04">
- <title>Release notes for version 5.04</title>
-
- <sect2>
- <title>User-visible compiler changes</title>
- <itemizedlist>
- <listitem>
- <para></para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>User-visible interpreter (GHCi) changes</title>
- <itemizedlist>
- <listitem>
- <para></para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>User-visible library changes</title>
- <itemizedlist>
- <listitem>
- <para></para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>New experimental features</title>
- <itemizedlist>
- <listitem>
- <para></para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Internal changes</title>
- <itemizedlist>
- <listitem>
- <para></para>
- </listitem>
- </itemizedlist>
- </sect2>
-
-</sect1>
-
-<!-- Emacs stuff:
- ;;; Local Variables: ***
- ;;; mode: xml ***
- ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") ***
- ;;; End: ***
- -->
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<sect1 id="release-5-04">
- <title>Release notes for version 5.04</title>
-
- <sect2>
- <title>User-visible compiler changes</title>
- <itemizedlist>
- <listitem>
- <para>Full support for MacOS X, including fully optimized compilation, has been added. Only a native
- code generator and support for <option>-split-objs</option> is still missing.
- Everything else needs more testing, but should work.</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="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 “frameworks” 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
- bindings</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 “new libraries” 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. Input
- files with the <literal>.hcr</literal> file extension are
- assumed to contain Core syntax.</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: xml ***
- ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") ***
- ;;; End: ***
- -->
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<sect1 id="release-6-0">
- <title>Release notes for version 6.0</title>
-
- <sect2>
- <title>User-visible compiler changes</title>
- <itemizedlist>
- <listitem>
- <para>Template Haskell, a new feature for compile-time
- metaprogramming has been introduced. See <xref
- linkend="template-haskell"/>.</para>
- </listitem>
- <listitem>
- <para>INLINE pragmas on methods in class or instance
- declarations now work properly.</para>
- </listitem>
- <listitem>
- <para>Recursive do-notation (aka <literal>mdo</literal>) is
- now supported. See <xref linkend="mdo-notation"/>.</para>
- </listitem>
- <listitem>
- <para>There is now a native code generator for PowerPC
- platforms.</para>
- </listitem>
- <listitem>
- <para>Profiling: the <option>-xt</option> RTS option enables
- inclusion of thread stacks in a heap profile. See <xref
- linkend="rts-options-heap-prof"/>.</para>
- </listitem>
- <listitem>
- <para>Non-blocking I/O is now supported on Windows.</para>
- </listitem>
- <listitem>
- <para>The <ulink url="../libraries/base/Data.Dynamic.html#Typeable"><literal>Typeable</literal></ulink> class can now be
- derived, and the implementation of <literal>Typeable</literal>
- is now more efficient.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>User-visible interpreter (GHCi) changes</title>
- <itemizedlist>
- <listitem>
- <para>Loading a <literal>Main</literal> module that does not
- define <literal>main</literal> is no longer an error, although
- GHCi will still emit a warning in this case.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>User-visible library changes</title>
- <itemizedlist>
- <listitem>
- <para>Hierarchical libraries are now available without needing
- to specify an explicit <option>-package</option> flag. There
- are some exceptions to this rule (see <xref
- linkend="using-packages"/>), but if you stick to GHCi and
- <option>--make</option> mode then there will normally be no
- need to specify <option>-package</option> options at
- all.</para>
-
- <para>Non-hierarchical libraries
- (i.e. <literal>hslibs</literal> libraries) still need to be
- explicitly requested with <option>-package</option>
- options.</para>
- </listitem>
-
- <listitem>
- <para>The <literal>Posix</literal> library has been rewritten.
- It is now a hierarchical library rooted at
- <literal>System.Posix</literal>, and has some additions aimed
- at supporting the latest revision of the POSIX standard (IEEE
- Std 1003.1-2001). See the <ulink
- url="../libraries/unix/index.html"><literal>unix</literal>
- package</ulink> for details.</para>
-
- <para>The old <literal>posix</literal> package is still
- available for backwards compatibility, but is deprecated and
- will be removed in a future release.</para>
- </listitem>
-
- <listitem>
- <para><ulink url="../libraries/base/Data.IORef.html"><literal>Data.IORef</literal></ulink>: Added <literal>atomicModifyIORef</literal>.</para>
- </listitem>
-
- <listitem>
- <para><ulink url="../libraries/base/System.Cmd.html"><literal>System.Cmd</literal></ulink>: Added <literal>rawSystem</literal>.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/System.Environment.html"><literal>System.Environment</literal></ulink>:
- Added <literal>withArgs</literal> and <literal>withProgName</literal>.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/network/Network.Socket.html"><literal>Network.Socket</literal></ulink>:
- Added <literal>sendFd</literal> and <literal>recvFd</literal>.</para>
- </listitem>
-
- <listitem>
- <para>The <literal>Readline</literal> library has moved to
- <ulink
- url="../libraries/readline/System.Console.Readline.html"><literal>System.Console.Readline</literal></ulink>,
- and is in a package of its own
- (<literal>readline</literal>).</para>
- </listitem>
-
- <listitem>
- <para>The non-hierarchical versions of the FFI libraries are
- now all available without needing to specify <literal>-package
- lang</literal> (they are actually now in the
- <literal>haskell98</literal> package, which is available by
- default).</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/network/Network.BSD.html"><literal>Network.BSD</literal></ulink>:
- <literal>symlink</literal> and <literal>readline</literal> are
- now deprecated; use
- <literal>System.Posix.createSymbolicLink</literal> and
- <literal>System.Posix.readSymbolicLink</literal>
- respectively.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/Control.Exception.html"><literal>Control.Exception</literal></ulink>:
- Added <literal>mapException</literal>.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/Data.Dynamic.html"><literal>Data.Dynamic</literal></ulink>:
- various changes to make the implementation of
- <literal>Typeable</literal> more efficient. This entails some
- changes to the interface, and affects how instances of
- <literal>Typeable</literal> are defined.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/Data.Tree.html"><literal>Data.Tree</literal></ulink>
- is a new library for trees.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/Data.Graph.html"><literal>Data.Graph</literal></ulink>
- is a new library for graphs.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/System.IO.html"><literal>System.IO</literal></ulink>:
- Removed <literal>bracket</literal> and
- <literal>bracket_</literal> (use the versions from
- <literal>Control.Exception</literal> instead).</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/System.IO.html"><literal>System.IO</literal></ulink>:
- The <literal>IOError</literal> type is now a synonym for
- <literal>IOException</literal>, whereas previously it was a
- synonym for <literal>Exception</literal>. This has various
- consequences, one of which is that the types of
- <literal>System.IO.catch</literal> and
- <literal>Control.Exception.catch</literal> are now different
- (useful, because they do different things).</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/System.IO.Error.html"><literal>System.IO.Error</literal></ulink>:
- added <literal>annotateIOError</literal>,
- <literal>modifyIOError</literal>, and <literal>ioeSet{ErrorType,ErrorString,Handle,FileName}</literal>.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/Text.ParserCombinators.ReadP.html"><literal>Text.ParserCombinators.ReadP</literal></ulink>:
- lots of updates.</para>
- </listitem>
-
- <listitem>
- <para><literal>Control.Monad.Monoid</literal> is now <ulink url="../libraries/base/Data.Monoid.html"><literal>Data.Monoid</literal></ulink>.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/Data.PackedString.html"><literal>Data.PackedString</literal></ulink>:
- added <literal>joinPS</literal>, <literal>unwordsPS</literal>
- and <literal>unlinesPS</literal>.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/Data.HashTable.html"><literal>Data.HashTable</literal></ulink>
- is a new dynamic hash-table implementation.</para>
- </listitem>
-
- <listitem>
- <para>Added <ulink
- url="../libraries/unix/System.Sendfile.html"><literal>System.Sendfile</literal></ulink>.</para>
- </listitem>
-
- <listitem>
- <para>Added <ulink
- url="../libraries/base/Foreign.Marshal.Pool.html"><literal>Foreign.Marshal.Pool</literal></ulink>.</para>
- </listitem>
-
- <listitem>
- <para><ulink
- url="../libraries/base/Data.Bits.html"><literal>Data.Bits</literal></ulink>:
- <literal>shiftL</literal>, <literal>shiftR</literal>,
- <literal>rotateL</literal>, and <literal>rotateR</literal> are
- now methods of the <literal>Bite</literal> class.</para>
- </listitem>
-
- <listitem>
- <para>The FFI libraries now conform to the latest version of
- the FFI spec:</para>
- <itemizedlist>
- <listitem>
- <para>Added <ulink
- url="../libraries/base/Foreign.ForeignPtr.html#mallocForeignPtr"><literal>Foreign.ForeignPtr.mallocForeignPtr</literal></ulink>
- and friends.</para>
- </listitem>
- <listitem>
- <para>Finalizers added to a <literal>ForeignPtr</literal>
- with <literal>addForeignPtrFinalizer</literal> are now run
- in strict order; namely the reverse of the order they were
- added.</para>
- </listitem>
- <listitem>
- <para><literal>Foreign.C.TypesISO</literal> has been
- merged into <ulink
- url="../libraries/base/Foreign.C.Types.html"><literal>Foreign.C.Types</literal></ulink>.</para>
- </listitem>
- </itemizedlist>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Experimental features</title>
- <itemizedlist>
- <listitem>
- <para>The <literal>Data</literal> class provides for generic
- data traversals and folds; see <ulink
- url="../libraries/base/Data.Generics.html"><literal>Data.Generics</literal></ulink>.
- <literal>Data</literal> can be derived for arbitrary
- datatypes. The <literal>Data</literal> class is still
- experimental, so its contents may change in the future.</para>
- </listitem>
- <listitem>
- <para>Several bugs have been fixed in the threaded RTS, and it
- should now be rather more robust (it should still be
- considered experimental, however).</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Internal changes</title>
- <itemizedlist>
- <listitem>
- <para>Sweeping changes to the compiler and runtime system to
- change the evaluation model from <quote>push/enter</quote> to
- <quote>eval/apply</quote>. The bottom line is that the
- compiler is now more portable and some of the complexity is
- now more centralised, while performance and binary sizes
- remain about the same.</para>
-
- <para>A paper describing these changes can be found <ulink
- url="http://research.microsoft.com/~simonpj/papers/eval-apply">here</ulink>.</para>
- </listitem>
- <listitem>
- <para>The test suite is now driven by a Python script and is
- rather more flexible and robust. It now supports building
- tests several different "ways", and as a result we now run
- each test with optimisation, profiling, native code
- generation, and GHCi in addition to the vanilla way.</para>
- </listitem>
- <listitem>
- <para>The build system now supports bootstrapping the compiler
- in a single build tree. By default, typing
- <literal>make</literal> at the top level will bootstrap the
- compiler once to create a stage-2 compiler. See the Building
- Guide for more details.</para>
- </listitem>
- <listitem>
- <para>The RTS debugging flags are no longer represented by a
- bitfield and now have single-character names. For example, to
- turn on scheduler debugging output, use <literal>-Ds</literal>
- rather than <literal>-D1</literal>.</para>
- </listitem>
- <listitem>
- <para>The compiler no longer requires any packages from
- <literal>hslibs</literal> to bootstrap. It is enough to
- compile <literal>fptools/libraries</literal> before building
- the stage 2 compiler.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
-</sect1>
-
-<!-- Emacs stuff:
- ;;; Local Variables: ***
- ;;; mode: xml ***
- ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") ***
- ;;; End: ***
- -->