-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
-
-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
+ a <literal>GHC_OPTIONS</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
+ "Backwards compatibility", 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://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>
+