New syntax for GADT-style record declarations, and associated refactoring
[ghc-hetmet.git] / docs / users_guide / 6.6-notes.xml
index ba41522..a04b99e 100644 (file)
-Compiler:
-- SMP support
-- GHC API
-- better GC for IORef/IOArray and lots of threads
-- loosen rules on instance decls
-- impredicative types
-- completion in GHCi
-- UTF-8 source files
-- bang patterns
-- :main
-- breakpoints
-- -split-objs now works with --make and Cabal
-- relaxed dependency analysis (with -fglasgow-exts)
-
-Libraries:
-- Data.ByteString
-- hslibs removed
-
-Internals/Source tree:
-- NCG handles loops
-- unknown calls take args in registers, if available
-- x86_64: more argument regs
-- refactored HscMain
-- darcs
-- source tree flattened
+<?xml version="1.0" encoding="iso-8859-1"?>
+<sect1 id="release-6-6">
+  <title>Release notes for version 6.6</title>
+
+  <sect2>
+    <title>User-visible compiler changes</title>
+    <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="using-smp" /> and <xref
+          linkend="lang-parallel" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC now handles impredicative polymorphism; see <xref linkend="impredicative-polymorphism" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+         There are significant changes to the way scoped type variables work,
+         and some programs that used to compile may no longer do so.
+         The new story is documented in  <xref linkend="scoped-type-variables" />.
+          (<ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
+          gives some background, but the user manual should be complete (tell
+          us if not), and
+          certainly takes precedence if there is any conflict.)
+        </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>
+          See <xref linkend="bang-patterns" /> for more details.
+        </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>
+
+        <para>
+          A way to have Latin-1 source files pre-processed by GHC is
+          described in <xref linkend="pre-processor" />.
+        </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.
+          For more details see
+          <ulink url="http://hackage.haskell.org/trac/ghc/ticket/650">trac bug #650</ulink>.
+        </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
+            an <literal>OPTIONS_GHC</literal> pragma or with
+            <literal>:set</literal> in GHCi):
+            <option>-c</option>,
+            <option>-hcsuf</option>,
+            <option>-hidir</option>,
+            <option>-hisuf</option>,
+            <option>-o</option>,
+            <option>-odir</option>,
+            <option>-ohi</option>,
+            <option>-osuf</option>,
+            <option>-keep-hc-file</option>,
+            <option>-keep-s-file</option>,
+            <option>-keep-raw-s-file</option>,
+            <option>-keep-tmp-files</option>,
+            <option>-tmpdir</option>,
+            <option>-i</option>,
+            <option>-package</option>,
+            <option>-hide-package</option>,
+            <option>-ignore-package</option>,
+            <option>-package-conf</option>,
+            <option>-no-user-package-conf</option>,
+            <option>-fcontext-stack</option>,
+            <option>-fexcess-precision</option>,
+            <option>-fignore-asserts</option>,
+            <option>-fignore-interface-pragmas</option>,
+            <option>-I</option>,
+            <option>-framework</option>,
+            <option>-framework-path</option>,
+            <option>-l</option>,
+            <option>-L</option>,
+            <option>-main-is</option>,
+            <option>-no-hs-main</option>,
+            <option>-split-objs</option>,
+            <option>-pgmL</option>,
+            <option>-pgmP</option>,
+            <option>-pgmc</option>,
+            <option>-pgma</option>,
+            <option>-pgml</option>,
+            <option>-pgmdll</option>,
+            <option>-pgmF</option>,
+            <option>-optl</option>,
+            <option>-optdll</option>,
+            <option>-optdep</option>,
+            <option>-fno-asm-mangling</option>.
+            See <xref linkend="static-dynamic-flags" /> for more on
+            the meaning of static and dynamic flags, and
+            <xref linkend="flag-reference" /> for more on the flags
+            themselves.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          There is a new flag <option>-x</option> for overriding the
+          default behaviour for source files; see
+          <xref linkend="overriding-suffixes" /> details.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The
+          <option>-no-recomp</option><indexterm><primary><option>-no-recomp</option></primary></indexterm>
+          option is now called
+          <option>-fforce-recomp</option><indexterm><primary><option>-fforce-recomp</option></primary></indexterm>.
+          (the old name is still accepted for backwards compatibility,
+          but will be removed in the future).
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The <option>-fglobalise-toplev-names</option>
+          flag has been removed.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The <option>-fallow-overlapping-instances</option> flag is
+          implied by the <option>-fallow-incoherent-instances</option>
+          flag.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The directory that the <filename>foo_stub.c</filename> and
+          <filename>foo_stub.h</filename> files are put in can now be
+          controlled with the <option>-stubdir</option> flag.
+          See <xref linkend="options-output" /> for more details.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          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
+          <literal>n+k</literal> patterns uses the
+          <literal>(-)</literal> and <literal>(>=)</literal> in scope.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          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>
+        <para>
+          The <literal>InstalledPackageInfo</literal> syntax has
+          changed. Now
+          instead of <literal>extra-libs</literal> we have
+          <literal>extra-libraries</literal>,
+          instead of <literal>extra-hugs-opts</literal> we have
+          <literal>hugs-options</literal>,
+          instead of <literal>extra-cc-opts</literal> we have
+          <literal>cc-options</literal>,
+          instead of <literal>extra-ld-opts</literal> we have
+          <literal>ld-options</literal>,
+          and instead of <literal>extra-frameworks</literal> we have
+          <literal>frameworks</literal>.
+          See <xref linkend="installed-pkg-info" /> for details.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          If you <literal>newtype</literal> the IO monad, e.g.
+          <programlisting>
+    newtype MyIO a = MyIO (IO a)</programlisting>
+          then GHC will now allow you to have FFI calls return
+          <literal>MyIO <replaceable>t</replaceable></literal>
+          rather than just
+          <literal>IO <replaceable>t</replaceable></literal>.
+         See <xref linkend="ffi-newtype-io"/>
+        </para>
+      </listitem>
+      <listitem> <para> GHC's mechansim for deriving user-defined classes
+         for newtypes has been further generalised, to multi-parameter type
+         classes and higher-kinded types.  See <xref
+         linkend="newtype-deriving"/>.
+         </para></listitem>
+      <listitem>
+        <para>
+          By default, pattern bindings in GHC are now monomorphic.
+          This means that some valid Haskell 98 programs will get
+          rejected, but we believe they will be few in number.
+          To revert to the old behaviour use the
+          <option>-fno-mono-pat-binds</option> flag.
+          More details are in <xref linkend="options-language" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHCi already does more defaulting than Haskell 98 so that, for
+          example, <literal>reverse []</literal> shows a result rather
+          than giving an ambiguous type variable error. There is now a
+          flag <option>-fextended-default-rules</option> to use these
+          defaulting rules with GHC too.
+          More details are in <xref linkend="extended-default-rules" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          You can now give both class and instance declarations in
+          <filename>.hs-boot</filename> files. More details in
+          <xref linkend="mutual-recursion" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Linear implicit parameters have been scheduled for removal for some
+          time.  In 6.6 we've removed them from the user manual, and they may
+         well disappear from the compiler itself in 6.6.1.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          If the program is idle for a certain amount of time then GHC
+          will now take the opportunity to do a major garbage collection.
+          The amount of idle time that is required before that happens
+          is controlled by the new <literal>-I</literal> RTS flag.
+          There is more detail in <xref linkend="rts-options-gc" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          It is now possible to control the frequency that the RTS clock
+          ticks at with the new <literal>-V</literal> RTS flag. This is
+          normally handled automatically by other flags, but this flag
+          is needed if you want to increase the resolution of the time
+          profiler.
+          For more details see <xref linkend="rts-options-misc" />.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The old syntax for FFI declarations (deprecated since 5.04)
+          is no longer accepted.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The <option>-split-objs</option> flag, which when used to compile
+          libraries means executables using the library will be smaller,
+          can now be used with <option>--make</option> and hence
+          can be used by cabal.
+          See <xref linkend="options-linker" /> for more information.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Template Haskell used to have limited support for type signatures in 
+         patterns, but since that design is in flux for Haskell (let alone
+         Template Haskell), we've removed type signatures in patterns from
+         Template Haskell.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC now supports postfix operators, as a simple generalisation of
+          left sections (<xref linkend="postfix-operators"/>).
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Parallel arrays, as enabled by <literal>-fparr</literal>, no
+          longer work.  They'll be coming back shortly, in full glory.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>GHCi changes</title>
+
+    <itemizedlist>
+      <listitem>
+        <para>
+          GHCi now allows tab completion of in-scope names and modules
+          on platforms that use readline (i.e. not Windows).
+        </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>
+          GHCi now has an <literal>:edit</literal> command which pops
+          up an editor on the most recently loaded file, or a
+          specified file.  See <xref linkend="ghci-commands" /> for
+          more information.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHCi now invokes <literal>print</literal> by default on the
+          result of IO actions and bindings at the prompt.  This is
+          occasionally not what you want, so it can be disabled (at
+          least for bindings) with 
+          <literal>:set -fno-print-bind-result</literal>.  See <xref
+          linkend="ghci-stmts" />.</para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>Libraries</title>
+    <para>
+      Libraries are now divided into core libraries (those that are
+      necessary to build GHC) and extra libraries. Decoupling the extra
+      libraries means that they can release independently of GHC
+      releases, and makes development builds of GHC quicker as they no
+      longer need to build unnecessary libraries.
+    </para>
+
+    <para>
+      The hslibs libraries have finally been removed.
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>Core Libraries</title>
+    <sect3>
+      <title>base</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.1 (was 1.0).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            We now have <literal>Read</literal> and
+            <literal>Show</literal> instances for up to 15-tuples (used
+            to be up to 5-tuples).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            New module <literal>Control.Applicative</literal> that
+            describes a structure intermediate between a functor and
+            a monad: it provides pure expressions and sequencing, but
+            no binding.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Control.Exception</literal> now exports
+            <literal>bracketOnError</literal>, which behaves like
+            <literal>bracket</literal> but only runs the final
+            action if the main action raised an error.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module
+            <literal>Control.Monad.Instances</literal> which
+            provides <literal>Monad</literal> and
+            <literal>Functor</literal> instances for
+            <literal>((->) r)</literal> (were in
+            <literal>mtl</literal>'s
+            <literal>Control.Monad.Reader</literal>), 
+            a <literal>Functor</literal> instance for
+            <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
+            <literal>Control.Monad.Error</literal>) and a
+            <literal>Functor</literal> instance for
+            <literal>((,) a)</literal> (new).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>MonadFix</literal> instance for
+            <literal>((->) r)</literal> is now in
+            <literal>Control.Monad.Fix</literal> (was in
+            <literal>mtl</literal>'s
+            <literal>Control.Monad.Reader</literal>).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Control.Monad.ST</literal> now exports
+            <literal>unsafeSTToIO</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>HasBounds</literal> class has been removed from
+            <literal>Data.Array.Base</literal>, and its
+            <literal>bounds</literal> method is now in the
+            <literal>IArray</literal> class. The
+            <literal>MArray</literal> class
+            has also gained a method <literal>getBounds</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Array.Base</literal> now provides an
+            <literal>MArray (STArray s) e (Lazy.ST s)</literal>
+            instance.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Array.Storable</literal> now exports a
+            function <literal>unsafeForeignPtrToStorableArray</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The new <literal>Data.ByteString</literal> hierarchy
+            provides time and space-efficient byte vectors.
+            The old <literal>Data.PackedString</literal> module is now
+            deprecated as a result, although there is not yet a
+            replacement if you need full unicode support.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>GHC.Exts</literal> now provides a function
+            <literal>inline</literal> which, provided the RHS is visible
+            to the compiler, forcibly inlines its argument.
+            Otherwise, it acts like <literal>id</literal>.
+            For more details, see <xref linkend="special-ids" />.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>GHC.Exts</literal> now provides a function
+            <literal>lazy</literal>, where <literal>lazy f</literal>
+            behaves like <literal>f</literal>, except GHC is forced
+            to believe that it is lazy in its first argument.
+            For more details, see <xref linkend="special-ids" />.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.FiniteMap</literal> has been removed
+            (deprecated since 6.4). Use <literal>Data.Map</literal>
+            instead.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Char</literal> now exports
+            <literal>isLetter</literal>,
+            <literal>isMark</literal>,
+            <literal>isNumber</literal>,
+            <literal>isPunctuation</literal>,
+            <literal>isSymbol</literal>,
+            <literal>isSeparator</literal>,
+            <literal>isAsciiUpper</literal>,
+            <literal>isAsciiLower</literal> and
+            <literal>toTitle</literal>.
+            It also exports a function
+            <literal>generalCategory</literal> that tells you the
+            category of a character in terms of a datatype
+            <literal>GeneralCategory</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Dynamic</literal> now exports a function
+            <literal>dynTypeRep</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module <literal>Data.Eq</literal> which
+            just exports the <literal>Eq</literal> class.
+            Likewise, a new module <literal>Data.Ord</literal>
+            exports the <literal>Ord</literal> class, as well as the
+            handy <literal>comparing</literal> function.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module <literal>Data.Fixed</literal>
+            providing fixed-precision arithmetic.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module <literal>Data.Foldable</literal>
+            providing a class for foldable datatypes. It gives instances
+            for <literal>Maybe</literal>, <literal>[]</literal> and
+            <literal>Array i</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module <literal>Data.Traversable</literal>
+            providing a class for data structures that can be traversed
+            from left to right. It gives instances
+            for <literal>Maybe</literal>, <literal>[]</literal> and
+            <literal>Array i</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.FunctorM</literal> has been deprecated;
+            use <literal>Data.Foldable</literal> and
+            <literal>Data.Traversable</literal> instead.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>toConstr</literal> definitions for tuples in
+            <literal>Data.Generics.Instances</literal> now actually
+            evaluate their arguments to tuples before returning
+            anything.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.IntMap</literal> now exports
+            <literal>notMember</literal>,
+            <literal>alter</literal>,
+            <literal>mapMaybe</literal>,
+            <literal>mapMaybeWithKey</literal>,
+            <literal>mapEither</literal> and
+            <literal>mapEitherWithKey</literal>.
+            It also has <literal>Monoid</literal>,
+            <literal>Foldable</literal> and <literal>Read</literal>
+            instances.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.IntSet</literal> now exports
+            <literal>notMember</literal>. It also has
+            <literal>Monoid</literal> and <literal>Read</literal>
+            instances.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Map</literal> now exports
+            <literal>notMember</literal>,
+            <literal>alter</literal>,
+            <literal>mapMaybe</literal>,
+            <literal>mapMaybeWithKey</literal>,
+            <literal>mapEither</literal>,
+            <literal>mapEitherWithKey</literal>,
+            <literal>minView</literal> and
+            <literal>maxView</literal>.
+            It also has <literal>Monoid</literal>,
+            <literal>Traversable</literal>, <literal>Foldable</literal>
+            and <literal>Read</literal> instances.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Set</literal> now exports
+            <literal>notMember</literal>,
+            <literal>minView</literal> and
+            <literal>maxView</literal>.
+            It also has <literal>Monoid</literal>,
+            <literal>Foldable</literal>
+            and <literal>Read</literal> instances.
+          </para>
+
+          <para>
+            The old, deprecated (since 6.4) interface consisting of
+            <literal>emptySet</literal>,
+            <literal>mkSet</literal>,
+            <literal>setToList</literal>,
+            <literal>unitSet</literal>,
+            <literal>elementOf</literal>,
+            <literal>isEmptySet</literal>,
+            <literal>cardinality</literal>,
+            <literal>unionManySets</literal>,
+            <literal>minusSet</literal>,
+            <literal>mapSet</literal>,
+            <literal>intersect</literal>,
+            <literal>addToSet</literal> and
+            <literal>delFromSet</literal> has been removed.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Monoid</literal> no longer contains the
+            <literal>Monoid</literal>
+            instances for <literal>Map</literal>,
+            <literal>IntMap</literal>, <literal>Set</literal> and
+            <literal>IntSet</literal>. They have been moved to their own
+            modules, as above. The <literal>(a -> a)</literal> instance
+            has been replaced with a
+            <literal>Monoid b => Monoid (a -> b)</literal> instance.
+            The module also now exports
+            <literal>Dual</literal>,
+            <literal>Endo</literal>,
+            <literal>All</literal>,
+            <literal>Any</literal>,
+            <literal>Sum</literal> and
+            <literal>Product</literal> types, and
+            <literal>Monoid</literal> instances for them.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module <literal>Data.Sequence</literal>
+            for finite sequences. The <literal>Data.Queue</literal>
+            module is now deprecated in favour of this faster, more
+            featureful replacement.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Tree</literal> now has
+            <literal>Data</literal>, <literal>Typeable</literal>,
+            <literal>Traversable</literal> and
+            <literal>Foldable</literal>
+            instances for the
+            <literal>Tree</literal> datatype.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Typeable</literal> now uses
+            <option>-fallow-overlapping-instances</option>, so the
+            generic instances can be overriden for your own datatypes.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Debug.Trace</literal> now exports
+            <literal>traceShow</literal>, which is the same as
+            <literal>trace</literal> except its first argument can be
+            any showable thing rather than being required to be a
+            string.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Foreign.C.Types</literal> now also defines
+            <literal>CIntPtr</literal>,
+            <literal>CUIntPtr</literal>,
+            <literal>CIntMax</literal> and
+            <literal>CUIntMax</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Foreign.ForeignPtr</literal> now exports
+            <literal>FinalizerEnvPtr</literal>,
+            <literal>newForeignPtrEnv</literal> and
+            <literal>addForeignPtrFinalizerEnv</literal>.
+            Together, these allow the use of finalizers which are passed
+            an additional environment parameter.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Foreign.Marshal.Utils</literal> no longer exports
+            the <literal>withObject</literal> function, deprecated since
+            5.04; use <literal>with</literal> instead.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Foreign.Ptr now also defines
+            <literal>IntPtr</literal>,
+            <literal>ptrToIntPtr</literal>,
+            <literal>intPtrToPtr</literal>,
+            <literal>WordPtr</literal>,
+            <literal>ptrToWordPtr</literal> and
+            <literal>wordPtrToPtr</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There are now <literal>Bounded</literal> instances for up to
+            15-tuples (used to be up to 4-tuples).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>Text.Html</literal> and
+            <literal>Text.Html.BlockTable</literal> modules have now
+            been removed, with the new <literal>html</literal> and
+            <literal>xhtml</literal> packages providing replacements.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Text.Read</literal> now exports a function
+            <literal>parens</literal> which parses a value in an
+            arbitrary number of parentheses.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>ForeignPtr</literal> datatype has been altered
+            to make it more efficient. There are also new functions
+            <literal>mallocPlainForeignPtr</literal> and
+            <literal>mallocPlainForeignPtrBytes</literal> which
+            do not allow you to attach a finalizer to the
+            <literal>ForeignPtr</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>Text.Regex</literal> and
+            <literal>Text.Regex.Posix</literal> modules have been removed.
+            Instead, use the new <literal>regex-compat</literal> package
+            for a drop-in <literal>Text.Regex</literal> replacement, or
+            the new library in the new <literal>regex-posix</literal>
+            package.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>Cabal</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.1.6 (was 1.1.4).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Support for JHC, symmetric to the support for the other
+            implementations, has been added throughout.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Support for object splitting and building in-place
+            has been added throughout.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Added a <filename>debianTemplate</filename> directory with
+            templates for building Debian packages from Cabal packages.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There are now modules
+            <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
+            for each of <literal>GHC</literal>, <literal>NHC</literal>,
+            <literal>Hugs</literal> and <literal>JHC</literal>.
+            The <literal>Distribution.Simple.Build</literal> and
+            <literal>Distribution.Simple.Install</literal> modules have
+            shrunk correspondingly.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Distribution.GetOpt</literal> is no longer a
+            visible module.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Distribution.Simple</literal> exports a function
+            <literal>defaultMainArgs</literal>, which is identical to
+            <literal>defaultMain</literal> except that the arguments are
+            given as a list of strings rather than being retrieved with
+            <literal>getArgs</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Distribution.Simple.Configure</literal>
+            no longer exports
+            <literal>LocalBuildInfo</literal>,
+            but does now export
+            <literal>configDependency</literal> and
+            <literal>configCompilerAux</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Distribution.Simple.LocalBuildInfo</literal> now
+            exports <literal>mkHaddockDir</literal>,
+            <literal>distPref</literal>,
+            <literal>srcPref</literal>,
+            <literal>autogenModulesDir</literal> and
+            <literal>mkIncludeDir</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Distribution.PackageDescription</literal> now
+            exports <literal>haddockName</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Distribution.Simple.Utils</literal> now exports
+            <literal>copyDirectoryRecursiveVerbose</literal>,
+            <literal>dirOf</literal>,
+            <literal>distPref</literal>,
+            <literal>haddockPref</literal> and
+            <literal>srcPref</literal>.
+            It no longer exports <literal>mkGHCiLibName</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>haskell98</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 1.0).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>parsec</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.0 (was 1.0).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            No other change.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>readline</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 1.0).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>regex-base</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version 0.71.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            New library that provides common functions for different
+            regex backends.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>regex-compat</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version 0.71.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            New package providing a replacement
+            <literal>Text.Regex</literal> module.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>regex-posix</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version 0.71.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            A new package providing POSIX regexes.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>stm</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.1 (was 1.0).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            A new module <literal>Control.Monad.STM</literal>
+            contains the
+            <literal>MonadPlus</literal> instance for
+            <literal>STM</literal> and the function
+            <literal>check</literal> (both used to be in
+            <literal>Control.Concurrent.STM</literal>).
+            It also re-exports
+            <literal>STM</literal>,
+            <literal>atomically</literal>,
+            <literal>retry</literal>,
+            <literal>orElse</literal> and
+            <literal>catchSTM</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            A new module
+            <literal>Control.Concurrent.STM.TArray</literal> defines
+            <literal>TArray</literal>, a transactional array, and makes
+            it an instance of <literal>MArray</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Control.Concurrent.STM.TChan</literal> now provides
+            a function <literal>newTChanIO</literal>, which allows
+            <literal>TChan</literal>s to be created in the IO monad.
+            Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
+            provides <literal>newTMVarIO</literal> and
+            <literal>newEmptyTMVarIO</literal>, and
+            <literal>Control.Concurrent.STM.TVar</literal> exports
+            <literal>newTVarIO</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Control.Concurrent.STM.TVar</literal> exports
+            <literal>registerDelay</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>Control.Concurrent.STM</literal> module has been
+            updated to re-export all the new modules.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>template-haskell</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.0 (was 1.0).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            A <literal>Show</literal> instance is now derived for
+            <literal>Info</literal>, <literal>Fixity</literal> and
+            <literal>FixityDirection</literal> in
+            <literal>Language.Haskell.TH.Syntax</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            In <literal>Language.Haskell.TH.Syntax</literal>, there is
+            a type <literal>PkgName</literal> and functions
+            <literal>mkPkgName</literal> and
+            <literal>pkgString</literal>
+            for dealing with package names.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>patGE</literal> function in
+            <literal>Language.Haskell.TH.Lib</literal> now takes the
+            final expression separately to the list of statements
+            rather than splitting it off itself.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>unix</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 1.0).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>Win32</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.1 (was 1.0).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Now maintained by Esa Ilari Vuokko.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module
+            <literal>System.Win32.Console</literal>
+            providing an interface to the Windows Console API.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module
+            <literal>System.Win32.DebugApi</literal>
+            providing an interface to the Windows DebugApi.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module
+            <literal>System.Win32.FileMapping</literal>
+            for working with memory-mapped files.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module
+            <literal>System.Win32.SimpleMAPI</literal>
+            for using the Windows mail API.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There is a new module
+            <literal>System.Win32.Time</literal>
+            for using the Windows time API.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>iNVALID_HANDLE_VALUE</literal> has moved from
+            <literal>Graphics.Win32.Misc</literal> to
+            <literal>System.Win32.Types</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>System.Win32.File</literal> has a new
+            function <literal>getFileInformationByHandle</literal>
+            and associated data types.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>System.Win32.Info</literal> has a new
+            function <literal>getSystemInfo</literal> and associated
+            data types.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>System.Win32.Process</literal> now has many more
+            exports.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>System.Win32.Types</literal> has new types
+            <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
+            and <literal>SIZE_T</literal>. It also has new helper
+            functions <literal>ddwordToDwords</literal> and
+            <literal>dwordsToDdword</literal> to split and combine
+            ddwords into high and low components.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>System.Win32</literal> re-exports
+            <literal>System.Win32.FileMapping</literal>,
+            <literal>System.Win32.Time</literal>
+            and <literal>System.Win32.Console</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+  </sect2>
+
+  <sect2>
+    <title>Extra Libraries</title>
+    <sect3>
+      <title>ALUT</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.0 (was 1.0).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
+            Its <literal>Phase</literal> and <literal>Duration</literal>
+            exports are now exported by
+            <literal>Sound.ALUT.Loaders</literal> and its
+            <literal>helloWorld</literal>,
+            <literal>sine</literal>,
+            <literal>square</literal>,
+            <literal>sawtooth</literal>,
+            <literal>impulse</literal> and
+            <literal>whiteNoise</literal>
+            exports are now constructors of the
+            <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
+            datatype.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>arrows</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.2 (was 0.1).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Control.Sequence</literal> has been removed in
+            favour of the new <literal>Control.Applicative</literal>
+            module in <literal>base</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>cgi</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version 2006.8.14.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>cgi</literal> is a new package, developing on
+            what used to be <literal>Network.CGI</literal> in the
+            <literal>network</literal> package.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>Network.CGI.Compat</literal> module provides
+            a similar interface to the old <literal>Network.CGI</literal>
+            module, but it uses <literal>Text.XHtml</literal> rather than
+            <literal>Text.Html</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>fgl</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 5.3 (was 5.2).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Graph.Inductive.Graph</literal> no longer
+            exports <literal>UContext</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Data.Graph.Inductive.Graph</literal> now exports
+            <literal>delLEdge</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>GLUT</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number remains 2.0.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            In <literal>Graphics.UI.GLUT.Initialization</literal>,
+            <literal>DisplayMode</literal> has a new constructor
+            <literal>WithAuxBuffers</literal> and
+            <literal>DisplayCapability</literal> has a new constructor
+            <literal>DisplayAux</literal>. These represent freeglut-only
+            features.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            There are new examples in
+            <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
+            <filename>RedBook/AAIndex.hs</filename>,
+            <filename>RedBook/AARGB.hs</filename>,
+            <filename>RedBook/AccAnti.hs</filename>,
+            <filename>RedBook/AccPersp.hs</filename>,
+            <filename>RedBook/Alpha3D.hs</filename>,
+            <filename>RedBook/DOF.hs</filename>,
+            <filename>RedBook/FogIndex.hs</filename>,
+            <filename>RedBook/Multisamp.hs</filename>,
+            <filename>RedBook/PointP.hs</filename>,
+            <filename>RedBook/PolyOff.hs</filename>,
+            <filename>RedBook/Stencil.hs</filename>,
+            <filename>RedBook/Stroke.hs</filename> and
+            <filename>RedBook/Torus.hs</filename>,
+            and the examples in
+            <filename>RedBook/Font.hs</filename> and
+            <filename>RedBook/Histogram.hs</filename> have been
+            improved.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>haskell-src</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 1.0).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>HGL</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 3.1).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>html</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version 1.0.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>html</literal> is a new package, developing on
+            what used to be <literal>Text.Html</literal> and
+            <literal>Text.Html.BlockTable</literal> in the
+            <literal>base</literal> package.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Text.Html.BlockTable</literal> exports a new
+            function <literal>empty</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>HUnit</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 1.1).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>mtl</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 1.0).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>network</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.0 (was 1.0).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Network.CGI</literal> has been removed; use the
+            <literal>cgi</literal> package instead.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Network.BSD</literal> no longer exports
+            <literal>symlink</literal> or <literal>readlink</literal>;
+            use
+            <literal>System.Posix.Files.createSymbolicLink</literal> and
+            <literal>System.Posix.Files.readSymbolicLink</literal>
+            instead.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Network.BSD</literal> now exports
+            <literal>defaultProtocol</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Network.Socket.SocketStatus</literal> now has a
+            constructor <literal>ConvertedToHandle</literal> for sockets
+            that have been converted to handles.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Network.Socket.Family</literal> now has the
+            following additional constructors:
+            <literal>AF_NETROM</literal>,
+            <literal>AF_BRIDGE</literal>,
+            <literal>AF_ATMPVC</literal>,
+            <literal>AF_ROSE</literal>,
+            <literal>AF_NETBEUI</literal>,
+            <literal>AF_SECURITY</literal>,
+            <literal>AF_PACKET</literal>,
+            <literal>AF_ASH</literal>,
+            <literal>AF_ECONET</literal>,
+            <literal>AF_ATMSVC</literal>,
+            <literal>AF_IRDA</literal>,
+            <literal>AF_PPPOX</literal>,
+            <literal>AF_WANPIPE</literal> and
+            <literal>AF_BLUETOOTH</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            In <literal>Network.URI</literal>,
+            <literal>parseabsoluteURI</literal> has been deprecated with
+            a new function <literal>parseAbsoluteURI</literal> taking
+            its place.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>ObjectIO</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 1.0).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>OpenAL</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.3 (was 1.2).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            No other change.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>OpenGL</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.1 (was 2.0).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            No other change.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>QuickCheck</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            No change (version 1.0).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>time</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version 1.0.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>time</literal> is a new package, for dealing with
+            dates, times and time intervals.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>X11</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.2 (was 1.1).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            In <literal>Graphics.X11.Xlib.Types</literal>,
+            <literal>XGCValues</literal> has been renamed
+            <literal>GCValues</literal> and
+            <literal>XSetWindowAttributes</literal> has been renamed
+            <literal>SetWindowAttributes</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            In <literal>Graphics.X11.Xlib.Misc</literal>,
+            <literal>allocaXSetWindowAttributes</literal> has been
+            renamed <literal>allocaSetWindowAttributes</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>FontStruct</literal> type has moved from
+            <literal>Graphics.X11.Xlib.Types</literal> to
+            <literal>Graphics.X11.Xlib.Font</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The
+            <literal>Point</literal>,
+            <literal>Rectangle</literal>,
+            <literal>Arc</literal>,
+            <literal>Segment</literal> and
+            <literal>Color</literal> types in
+            <literal>Graphics.X11.Xlib.Types</literal>
+            are now proper datatypes rather than synonyms for tuples.
+            They all have a <literal>Storable</literal> instance.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            The <literal>Byte</literal> and <literal>Short</literal>
+            types from <literal>Graphics.X11.Xlib.Types</literal> have
+            been removed.
+            The following type synonyms, which had already been marked
+            &quot;Backwards compatibility&quot;, have also been removed:
+            <literal>ListPoint</literal>,
+            <literal>ListRectangle</literal>,
+            <literal>ListArc</literal>,
+            <literal>ListSegment</literal> and
+            <literal>ListColor</literal>.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Eq</literal>,
+            <literal>Ord</literal>,
+            <literal>Show</literal>,
+            <literal>Typeable</literal> and
+            <literal>Data</literal> are now derived for:
+            <literal>XEvent</literal>,
+            <literal>FdSet</literal> and
+            <literal>TimeZone</literal> in
+            <literal>Graphics.X11.Xlib.Event</literal>,
+            <literal>FontStruct</literal> in
+            <literal>Graphics.X11.Xlib.Font</literal>,
+            <literal>XErrorEvent</literal>,
+            <literal>XComposeStatus</literal> and
+            <literal>XTextProperty</literal> in
+            <literal>Graphics.X11.Xlib.Misc</literal>,
+            <literal>Region</literal> in
+            <literal>Graphics.X11.Xlib.Region</literal>,
+            <literal>Display</literal>,
+            <literal>Screen</literal>,
+            <literal>Visual</literal>,
+            <literal>GC</literal>,
+            <literal>GCValues</literal>,
+            <literal>SetWindowAttributes</literal>,
+            <literal>Point</literal>,
+            <literal>Rectangle</literal>,
+            <literal>Arc</literal>,
+            <literal>Segment</literal> and
+            <literal>Color</literal> in
+            <literal>Graphics.X11.Xlib.Types</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>xhtml</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version 2006.8.14.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>xhtml</literal> is a new package, developing on
+            what used to be <literal>Text.Html</literal> and
+            <literal>Text.Html.BlockTable</literal> in the
+            <literal>base</literal> package.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+  </sect2>
+
+  <sect2>
+    <title>GHC As A Library</title>
+      <para>
+        Version number 6.6.
+      </para>
+      <para>
+        The internal modules of GHC are now available as a library, package
+        name <literal>ghc</literal>.
+        The interface has not been designed with use by other programs
+        in mind, so expect the API to vary radically in future
+        releases.
+      </para>
+      <para>
+        An introduction to using the library can be found
+        <ulink url="http://www.haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
+      </para>
+  </sect2>
+
+  <sect2>
+    <title>Internal changes</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          GHC development now has its own integrated
+          <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
+          tracker</ulink>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          GHC has now moved to darcs. See
+          <ulink
+          url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
+          wiki</ulink> for more details. The sources have moved around a
+          bit within the tree as a result, most notably the GHC sources
+          are no longer kept within a <filename>ghc/</filename>
+          subdirectory.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          The native code generator is now capable of compiling loops,
+          which gets us a big step closer to being able to compile
+          entirely without gcc on well-supported arches.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+</sect1>
+