Rename -no-recomp to -fforce-recomp, and document it
[ghc-hetmet.git] / docs / users_guide / 6.6-notes.xml
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-6-6">
3   <title>Release notes for version 6.6</title>
4
5   <sect2>
6     <title>User-visible compiler changes</title>
7     <itemizedlist>
8       <listitem>
9         <para>
10           GHC now supports SMP:
11           when you compile with <option>-threaded</option>, you now get
12           an RTS flag <option>-N</option> that allows you to specify the
13           number of OS threads that GHC should use. Defaults to 1.
14           See <xref linkend="sec-using-smp" /> and <xref
15           linkend="lang-parallel" />.
16         </para>
17       </listitem>
18       <listitem>
19         <para>
20           GHC now handles impredicative polymorphism and there are
21           changes to the way scoped type variables work; see
22           <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
23           for more details of the change, or <xref linkend="impredicative-polymorphism" /> for the documentation.
24         </para>
25       </listitem>
26       <listitem>
27         <para>
28           GHC now supports bang patterns to require a function is strict
29           in a given argument, e.g.
30           <programlisting>
31     f (!x, y) = [x,y]</programlisting>
32           is equivalent to
33           <programlisting>
34     f (x, y) | x `seq` False = undefined
35              | otherwise = [x,y]</programlisting>
36           See <xref linkend="sec-bang-patterns" /> for more details.
37         </para>
38       </listitem>
39       <listitem>
40         <para>
41           The restriction that you cannot use two packages together if
42           they contain a module with the same name has been removed.
43           In implementation terms, the package name is now included in
44           every exported symbol name in the object file, so that
45           modules with the same name in different packages do not
46           clash.  See <xref linkend="package-overlaps" />.
47         </para>
48       </listitem>
49       <listitem>
50         <para>
51           GHC now treats source files as UTF-8 (ASCII is a strict
52           subset of UTF-8, so ASCII source files will continue to
53           work as before). However, invalid UTF-8 sequences are
54           ignored in comments, so ASCII code with comments in, for
55           example, Latin-1 will also work.
56         </para>
57       </listitem>
58       <listitem>
59         <para>
60           GADTs can now use record syntax. Also, if the datatype could
61           have been declared with Haskell 98 syntax then deriving
62           clauses are permitted. For more info see <xref linkend="gadt" />.
63         </para>
64       </listitem>
65       <listitem>
66         <para>
67           There is a new pragma <literal>LANGUAGE</literal> which allows
68           extensions to be specified portably, i.e. without having to
69           resort to the <literal>OPTIONS_GHC</literal> pragma and giving
70           GHC-specific options. The arguments to the pragma are the same
71           extensions that Cabal knows about. More info in
72           <xref linkend="language-pragma" />.
73         </para>
74       </listitem>
75       <listitem>
76         <para>
77           When you use <command>ghc --make</command>, GHC will now take
78           the executable filename from the name of the file containing
79           the <literal>Main</literal> module rather than using
80           <filename>a.out</filename>. The <filename>.exe</filename>
81           extension is appended on Windows, and it can of course be
82           overridden with <option>-o</option>.
83         </para>
84       </listitem>
85       <listitem>
86         <para>
87           GHC's garbage collector now deals more intelligently with
88           mutable data, so you mostly no longer need to worry about GC
89           performance when a lot of memory is taken up by
90           <literal>STArray</literal>s, <literal>IOArray</literal>s,
91           <literal>STRef</literal>s or <literal>IORef</literal>s.
92           For more details see
93           <ulink url="http://hackage.haskell.org/trac/ghc/ticket/650">trac bug #650</ulink>.
94         </para>
95       </listitem>
96       <listitem>
97         <para>
98           GHC now allows more generalisation when typing mutually
99           recursive bindings, resulting in more programs being accepted.
100           See <xref linkend="typing-binds" /> for more details.
101         </para>
102       </listitem>
103       <listitem>
104         <para>
105           The rules for instance declarations have been further relaxed.
106           You are now permitted to have instances whose heads contain
107           only type variables, e.g.
108           <programlisting>
109     instance C a</programlisting>
110           and instances whose constraints are not only type variables,
111           e.g.
112           <programlisting>
113     instance C2 Int a => C3 [a] b</programlisting>
114           For more details, see <xref linkend="instance-rules" />.
115         </para>
116       </listitem>
117       <listitem>
118         <para>
119             The following flags (and, where appropriate, their inverses)
120             used to be static (can only be given on
121             the command line) but are now dynamic (can also be given in
122             a <literal>GHC_OPTIONS</literal> pragma or with
123             <literal>:set</literal> in GHCi):
124             <option>-c</option>,
125             <option>-hcsuf</option>,
126             <option>-hidir</option>,
127             <option>-hisuf</option>,
128             <option>-o</option>,
129             <option>-odir</option>,
130             <option>-ohi</option>,
131             <option>-osuf</option>,
132             <option>-keep-hc-file</option>,
133             <option>-keep-s-file</option>,
134             <option>-keep-raw-s-file</option>,
135             <option>-keep-tmp-files</option>,
136             <option>-tmpdir</option>,
137             <option>-i</option>,
138             <option>-package</option>,
139             <option>-hide-package</option>,
140             <option>-ignore-package</option>,
141             <option>-package-conf</option>,
142             <option>-no-user-package-conf</option>,
143             <option>-fcontext-stack</option>,
144             <option>-fexcess-precision</option>,
145             <option>-fignore-asserts</option>,
146             <option>-fignore-interface-pragmas</option>,
147             <option>-I</option>,
148             <option>-framework</option>,
149             <option>-framework-path</option>,
150             <option>-l</option>,
151             <option>-L</option>,
152             <option>-main-is</option>,
153             <option>-no-hs-main</option>,
154             <option>-split-objs</option>,
155             <option>-pgmL</option>,
156             <option>-pgmP</option>,
157             <option>-pgmc</option>,
158             <option>-pgma</option>,
159             <option>-pgml</option>,
160             <option>-pgmdll</option>,
161             <option>-pgmdep</option>,
162             <option>-pgmF</option>,
163             <option>-optl</option>,
164             <option>-optdll</option>,
165             <option>-optdep</option>,
166             <option>-fno-asm-mangling</option>.
167             See <xref linkend="static-dynamic-flags" /> for more on
168             the meaning of static and dynamic flags, and
169             <xref linkend="flag-reference" /> for more on the flags
170             themselves.
171         </para>
172       </listitem>
173       <listitem>
174         <para>
175           There is a new flag <option>-x</option> for overriding the
176           default behaviour for source files; see
177           <xref linkend="overriding-suffixes" /> details.
178         </para>
179       </listitem>
180       <listitem>
181         <para>
182           The
183           <option>-no-recomp</option><indexterm><primary><option>-no-recomp</option></primary></indexterm>
184           option is now called
185           <option>-fforce-recomp</option><indexterm><primary><option>-fforce-recomp</option></primary></indexterm>.
186           (the old name is still accepted for backwards compatibility,
187           but will be removed in the future).
188         </para>
189       </listitem>
190       <listitem>
191         <para>
192           The <option>-fglobalise-toplev-names</option>
193           flag has been removed.
194         </para>
195       </listitem>
196       <listitem>
197         <para>
198           The <option>-fallow-overlapping-instances</option> flag is
199           implied by the <option>-fallow-incoherent-instances</option>
200           flag.
201         </para>
202       </listitem>
203       <listitem>
204         <para>
205           The directory that the <filename>foo_stub.c</filename> and
206           <filename>foo_stub.h</filename> files are put in can now be
207           controlled with the <option>-stubdir</option> flag.
208           See <xref linkend="options-output" /> for more details.
209         </para>
210       </listitem>
211       <listitem>
212         <para>
213           When the <option>-fno-implicit-prelude</option> is given,
214           the equality test performed when pattern matching against an
215           overloaded numeric literal now uses the
216           <literal>(==)</literal> in scope, rather than the one from
217           <literal>Prelude</literal>. Likewise, the subtraction and
218           inequality test performed when pattern matching against
219           <literal>n+k</literal> patterns uses the
220           <literal>(-)</literal> and <literal>(>=)</literal> in scope.
221         </para>
222       </listitem>
223       <listitem>
224         <para>
225           Another change to <option>-fno-implicit-prelude</option>:
226           with the exception of the arrow syntax, the types of
227           functions used by sugar (such as do notation, numeric
228           literal patterns) need not match the types of the
229           <literal>Prelude</literal> functions normally used.
230         </para>
231       </listitem>
232       <listitem>
233         <para>
234           The <literal>InstalledPackageInfo</literal> syntax has
235           changed. Now
236           instead of <literal>extra-libs</literal> we have
237           <literal>extra-libraries</literal>,
238           instead of <literal>extra-hugs-opts</literal> we have
239           <literal>hugs-options</literal>,
240           instead of <literal>extra-cc-opts</literal> we have
241           <literal>cc-options</literal>,
242           instead of <literal>extra-ld-opts</literal> we have
243           <literal>ld-options</literal>,
244           and instead of <literal>extra-frameworks</literal> we have
245           <literal>frameworks</literal>.
246           See <xref linkend="installed-pkg-info" /> for details.
247         </para>
248       </listitem>
249       <listitem>
250         <para>
251           If you <literal>newtype</literal> the IO monad, e.g.
252           <programlisting>
253     newtype MyIO a = MyIO (IO a)</programlisting>
254           then GHC will now allow you to have FFI calls return
255           <literal>MyIO <replaceable>t</replaceable></literal>
256           rather than just
257           <literal>IO <replaceable>t</replaceable></literal>.
258           See <xref linkend="ffi-newtype-io"/>
259         </para>
260       </listitem>
261       <listitem> <para> GHC's mechansim for deriving user-defined classes
262           for newtypes has been further generalised, to multi-parameter type
263           classes and higher-kinded types.  See <xref
264           linkend="newtype-deriving"/>.
265           </para></listitem>
266       <listitem>
267         <para>
268           By default, pattern bindings in GHC are now monomorphic.
269           This means that some valid Haskell 98 programs will get
270           rejected, but we believe they will be few in number.
271           To revert to the old behaviour use the
272           <option>-fno-mono-pat-binds</option> flag.
273           More details are in <xref linkend="options-language" />.
274         </para>
275       </listitem>
276       <listitem>
277         <para>
278           GHCi already does more defaulting than Haskell 98 so that, for
279           example, <literal>reverse []</literal> shows a result rather
280           than giving an ambiguous type variable error. There is now a
281           flag <option>-fextended-default-rules</option> to use these
282           defaulting rules with GHC too.
283           More details are in <xref linkend="extended-default-rules" />.
284         </para>
285       </listitem>
286       <listitem>
287         <para>
288           You can now give both class and instance declarations in
289           <filename>.hs-boot</filename> files. More details in
290           <xref linkend="mutual-recursion" />.
291         </para>
292       </listitem>
293       <listitem>
294         <para>
295           Linear implicit parameters have been scheduled for removal for some
296           time.  In 6.6 we've removed them from the user manual, and they may
297           well disappear from the compiler itself in 6.6.1.
298         </para>
299       </listitem>
300       <listitem>
301         <para>
302           If the program is idle for a certain amount of time then GHC
303           will now take the opportunity to do a major garbage collection.
304           The amount of idle time that is required before that happens
305           is controlled by the new <literal>-I</literal> RTS flag.
306           There is more detail in <xref linkend="rts-options-gc" />.
307         </para>
308       </listitem>
309       <listitem>
310         <para>
311           It is now possible to control the frequency that the RTS clock
312           ticks at with the new <literal>-V</literal> RTS flag. This is
313           normally handled automatically by other flags, but this flag
314           is needed if you want to increase the resolution of the time
315           profiler.
316           For more details see <xref linkend="rts-options-misc" />.
317         </para>
318       </listitem>
319       <listitem>
320         <para>
321           The old syntax for FFI declarations (deprecated since 5.04)
322           is no longer accepted.
323         </para>
324       </listitem>
325       <listitem>
326         <para>
327           The <option>-split-objs</option> flag, which when used to compile
328           libraries means executables using the library will be smaller,
329           can now be used with <option>--make</option> and hence
330           can be used by cabal.
331           See <xref linkend="options-linker" /> for more information.
332         </para>
333       </listitem>
334       <listitem>
335         <para>
336           Template Haskell used to have limited support for type signatures in 
337           patterns, but since that design is in flux for Haskell (let alone
338           Template Haskell), we've removed type signatures in patterns from
339           Template Haskell.
340         </para>
341       </listitem>
342       <listitem>
343         <para>
344           GHC now supports postfix operators, as a simple generalisation of
345           left sections (<xref linkend="postfix-operators"/>).
346         </para>
347       </listitem>
348       <listitem>
349         <para>
350           Parallel arrays, as enabled by <literal>-fparr</literal>, no
351           longer work.  They'll be coming back shortly, in full glory.
352         </para>
353       </listitem>
354     </itemizedlist>
355   </sect2>
356
357   <sect2>
358     <title>GHCi changes</title>
359
360     <itemizedlist>
361       <listitem>
362         <para>
363           GHCi now allows tab completion of in-scope names and modules
364           on platforms that use readline (i.e. not Windows).
365         </para>
366       </listitem>
367       <listitem>
368         <para>
369           GHCi now has a <literal>:main</literal> command that allows
370           you to call the <literal>main</literal> function with
371           command-line arguments.
372           See <xref linkend="ghci-commands" /> for more information.
373         </para>
374       </listitem>
375       <listitem>
376         <para>
377           GHCi now has <literal>:ctags</literal> and
378           <literal>:etags</literal> commands to generate tags files for
379           vi-style and emacs-style editors respectively.
380           See <xref linkend="ghci-commands" /> for more information.
381         </para>
382       </listitem>
383       <listitem>
384         <para>
385           GHCi now invokes <literal>print</literal> by default on the
386           result of IO actions and bindings at the prompt.  This is
387           occasionally not what you want, so it can be disabled (at
388           least for bindings) with 
389           <literal>:set -fno-print-bind-result</literal>.  See <xref
390           linkend="ghci-stmts" />.</para>
391       </listitem>
392     </itemizedlist>
393   </sect2>
394
395   <sect2>
396     <title>Libraries</title>
397     <para>
398       Libraries are now divided into core libraries (those that are
399       necessary to build GHC) and extra libraries. Decoupling the extra
400       libraries means that they can release independently of GHC
401       releases, and makes development builds of GHC quicker as they no
402       longer need to build unnecessary libraries.
403     </para>
404
405     <para>
406       The hslibs libraries have finally been removed.
407     </para>
408   </sect2>
409
410   <sect2>
411     <title>Core Libraries</title>
412     <sect3>
413       <title>base</title>
414       <itemizedlist>
415         <listitem>
416           <para>
417             Version number 2.0 (was 1.0).
418           </para>
419         </listitem>
420         <listitem>
421           <para>
422             We now have <literal>Read</literal> and
423             <literal>Show</literal> instances for up to 15-tuples (used
424             to be up to 5-tuples).
425           </para>
426         </listitem>
427         <listitem>
428           <para>
429             New module <literal>Control.Applicative</literal> that
430             describes a structure intermediate between a functor and
431             a monad: it provides pure expressions and sequencing, but
432             no binding.
433           </para>
434         </listitem>
435         <listitem>
436           <para>
437             <literal>Control.Exception</literal> now exports
438             <literal>bracketOnError</literal>, which behaves like
439             <literal>bracket</literal> but only runs the final
440             action if the main action raised an error.
441           </para>
442         </listitem>
443         <listitem>
444           <para>
445             There is a new module
446             <literal>Control.Monad.Instances</literal> which
447             provides <literal>Monad</literal> and
448             <literal>Functor</literal> instances for
449             <literal>((->) r)</literal> (were in
450             <literal>mtl</literal>'s
451             <literal>Control.Monad.Reader</literal>), 
452             a <literal>Functor</literal> instance for
453             <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
454             <literal>Control.Monad.Error</literal>) and a
455             <literal>Functor</literal> instance for
456             <literal>((,) a)</literal> (new).
457           </para>
458         </listitem>
459         <listitem>
460           <para>
461             The <literal>MonadFix</literal> instance for
462             <literal>((->) r)</literal> is now in
463             <literal>Control.Monad.Fix</literal> (was in
464             <literal>mtl</literal>'s
465             <literal>Control.Monad.Reader</literal>).
466           </para>
467         </listitem>
468         <listitem>
469           <para>
470             <literal>Control.Monad.ST</literal> now exports
471             <literal>unsafeSTToIO</literal>.
472           </para>
473         </listitem>
474         <listitem>
475           <para>
476             The <literal>HasBounds</literal> class has been removed from
477             <literal>Data.Array.Base</literal>, and its
478             <literal>bounds</literal> method is now in the
479             <literal>IArray</literal> class. The
480             <literal>MArray</literal> class
481             has also gained a method <literal>getBounds</literal>.
482           </para>
483         </listitem>
484         <listitem>
485           <para>
486             <literal>Data.Array.Base</literal> now provides an
487             <literal>MArray (STArray s) e (Lazy.ST s)</literal>
488             instance.
489           </para>
490         </listitem>
491         <listitem>
492           <para>
493             <literal>Data.Array.Storable</literal> now exports a
494             function <literal>unsafeForeignPtrToStorableArray</literal>.
495           </para>
496         </listitem>
497         <listitem>
498           <para>
499             The new <literal>Data.ByteString</literal> hierarchy
500             provides time and space-efficient byte vectors.
501             The old <literal>Data.PackedString</literal> module is now
502             deprecated as a result, although there is not yet a
503             replacement if you need full unicode support.
504           </para>
505         </listitem>
506         <listitem>
507           <para>
508             <literal>GHC.Exts</literal> now provides a function
509             <literal>inline</literal> which, provided the RHS is visible
510             to the compiler, forcibly inlines its argument.
511             Otherwise, it acts like <literal>id</literal>.
512             For more details, see <xref linkend="special-ids" />.
513           </para>
514         </listitem>
515         <listitem>
516           <para>
517             <literal>GHC.Exts</literal> now provides a function
518             <literal>lazy</literal> which forces GHC to think that its
519             argument is lazy in its first argument.
520             For more details, see <xref linkend="special-ids" />.
521           </para>
522         </listitem>
523         <listitem>
524           <para>
525             <literal>Data.FiniteMap</literal> has been removed
526             (deprecated since 6.4). Use <literal>Data.Map</literal>
527             instead.
528           </para>
529         </listitem>
530         <listitem>
531           <para>
532             <literal>Data.Char</literal> now exports
533             <literal>isLetter</literal>,
534             <literal>isMark</literal>,
535             <literal>isNumber</literal>,
536             <literal>isPunctuation</literal>,
537             <literal>isSymbol</literal>,
538             <literal>isSeparator</literal>,
539             <literal>isAsciiUpper</literal>,
540             <literal>isAsciiLower</literal> and
541             <literal>toTitle</literal>.
542             It also exports a function
543             <literal>generalCategory</literal> that tells you the
544             category of a character in terms of a datatype
545             <literal>GeneralCategory</literal>.
546           </para>
547         </listitem>
548         <listitem>
549           <para>
550             <literal>Data.Dynamic</literal> now exports a function
551             <literal>dynTypeRep</literal>.
552           </para>
553         </listitem>
554         <listitem>
555           <para>
556             There is a new module <literal>Data.Eq</literal> which
557             just exports the <literal>Eq</literal> class.
558             Likewise, a new module <literal>Data.Ord</literal>
559             exports the <literal>Ord</literal> class, as well as the
560             handy <literal>comparing</literal> function.
561           </para>
562         </listitem>
563         <listitem>
564           <para>
565             There is a new module <literal>Data.Fixed</literal>
566             providing fixed-precision arithmetic.
567           </para>
568         </listitem>
569         <listitem>
570           <para>
571             There is a new module <literal>Data.Foldable</literal>
572             providing a class for foldable datatypes. It gives instances
573             for <literal>Maybe</literal>, <literal>[]</literal> and
574             <literal>Array i</literal>.
575           </para>
576         </listitem>
577         <listitem>
578           <para>
579             There is a new module <literal>Data.Traversable</literal>
580             providing a class for data structures that can be traversed
581             from left to right. It gives instances
582             for <literal>Maybe</literal>, <literal>[]</literal> and
583             <literal>Array i</literal>.
584           </para>
585         </listitem>
586         <listitem>
587           <para>
588             <literal>Data.FunctorM</literal> has been deprecated;
589             use <literal>Data.Foldable</literal> and
590             <literal>Data.Traversable</literal> instead.
591           </para>
592         </listitem>
593         <listitem>
594           <para>
595             The <literal>toConstr</literal> definitions for tuples in
596             <literal>Data.Generics.Instances</literal> now actually
597             evaluate their arguments to tuples before returning
598             anything.
599           </para>
600         </listitem>
601         <listitem>
602           <para>
603             <literal>Data.IntMap</literal> now exports
604             <literal>notMember</literal>,
605             <literal>alter</literal>,
606             <literal>mapMaybe</literal>,
607             <literal>mapMaybeWithKey</literal>,
608             <literal>mapEither</literal> and
609             <literal>mapEitherWithKey</literal>.
610             It also has <literal>Monoid</literal>,
611             <literal>Foldable</literal> and <literal>Read</literal>
612             instances.
613           </para>
614         </listitem>
615         <listitem>
616           <para>
617             <literal>Data.IntSet</literal> now exports
618             <literal>notMember</literal>. It also has
619             <literal>Monoid</literal> and <literal>Read</literal>
620             instances.
621           </para>
622         </listitem>
623         <listitem>
624           <para>
625             <literal>Data.Map</literal> now exports
626             <literal>notMember</literal>,
627             <literal>alter</literal>,
628             <literal>mapMaybe</literal>,
629             <literal>mapMaybeWithKey</literal>,
630             <literal>mapEither</literal>,
631             <literal>mapEitherWithKey</literal>,
632             <literal>minView</literal> and
633             <literal>maxView</literal>.
634             It also has <literal>Monoid</literal>,
635             <literal>Traversable</literal>, <literal>Foldable</literal>
636             and <literal>Read</literal> instances.
637           </para>
638         </listitem>
639         <listitem>
640           <para>
641             <literal>Data.Set</literal> now exports
642             <literal>notMember</literal>,
643             <literal>minView</literal> and
644             <literal>maxView</literal>.
645             It also has <literal>Monoid</literal>,
646             <literal>Foldable</literal>
647             and <literal>Read</literal> instances.
648           </para>
649
650           <para>
651             The old, deprecated (since 6.4) interface consisting of
652             <literal>emptySet</literal>,
653             <literal>mkSet</literal>,
654             <literal>setToList</literal>,
655             <literal>unitSet</literal>,
656             <literal>elementOf</literal>,
657             <literal>isEmptySet</literal>,
658             <literal>cardinality</literal>,
659             <literal>unionManySets</literal>,
660             <literal>minusSet</literal>,
661             <literal>mapSet</literal>,
662             <literal>intersect</literal>,
663             <literal>addToSet</literal> and
664             <literal>delFromSet</literal> has been removed.
665           </para>
666         </listitem>
667         <listitem>
668           <para>
669             <literal>Data.Monoid</literal> no longer contains the
670             <literal>Monoid</literal>
671             instances for <literal>Map</literal>,
672             <literal>IntMap</literal>, <literal>Set</literal> and
673             <literal>IntSet</literal>. They have been moved to their own
674             modules, as above. The <literal>(a -> a)</literal> instance
675             has been replaced with a
676             <literal>Monoid b => Monoid (a -> b)</literal> instance.
677             The module also now exports
678             <literal>Dual</literal>,
679             <literal>Endo</literal>,
680             <literal>All</literal>,
681             <literal>Any</literal>,
682             <literal>Sum</literal> and
683             <literal>Product</literal> types, and
684             <literal>Monoid</literal> instances for them.
685           </para>
686         </listitem>
687         <listitem>
688           <para>
689             There is a new module <literal>Data.Sequence</literal>
690             for finite sequences. The <literal>Data.Queue</literal>
691             module is now deprecated in favour of this faster, more
692             featureful replacement.
693           </para>
694         </listitem>
695         <listitem>
696           <para>
697             <literal>Data.Tree</literal> now has
698             <literal>Data</literal>, <literal>Typeable</literal>,
699             <literal>Traversable</literal> and
700             <literal>Foldable</literal>
701             instances for the
702             <literal>Tree</literal> datatype.
703           </para>
704         </listitem>
705         <listitem>
706           <para>
707             <literal>Data.Typeable</literal> now uses
708             <option>-fallow-overlapping-instances</option>, so the
709             generic instances can be overriden for your own datatypes.
710           </para>
711         </listitem>
712         <listitem>
713           <para>
714             <literal>Debug.Trace</literal> now exports
715             <literal>traceShow</literal>, which is the same as
716             <literal>trace</literal> except its first argument can be
717             any showable thing rather than being required to be a
718             string.
719           </para>
720         </listitem>
721         <listitem>
722           <para>
723             <literal>Foreign.C.Types</literal> now also defines
724             <literal>CIntPtr</literal>,
725             <literal>CUIntPtr</literal>,
726             <literal>CIntMax</literal> and
727             <literal>CUIntMax</literal>.
728           </para>
729         </listitem>
730         <listitem>
731           <para>
732             <literal>Foreign.ForeignPtr</literal> now exports
733             <literal>FinalizerEnvPtr</literal>,
734             <literal>newForeignPtrEnv</literal> and
735             <literal>addForeignPtrFinalizerEnv</literal>.
736             Together, these allow the use of finalizers which are passed
737             an additional environment parameter.
738           </para>
739         </listitem>
740         <listitem>
741           <para>
742             <literal>Foreign.Marshal.Utils</literal> no longer exports
743             the <literal>withObject</literal> function, deprecated since
744             5.04; use <literal>with</literal> instead.
745           </para>
746         </listitem>
747         <listitem>
748           <para>
749             Foreign.Ptr now also defines
750             <literal>IntPtr</literal>,
751             <literal>ptrToIntPtr</literal>,
752             <literal>intPtrToPtr</literal>,
753             <literal>WordPtr</literal>,
754             <literal>ptrToWordPtr</literal> and
755             <literal>wordPtrToPtr</literal>.
756           </para>
757         </listitem>
758         <listitem>
759           <para>
760             There are now <literal>Bounded</literal> instances for up to
761             15-tuples (used to be up to 4-tuples).
762           </para>
763         </listitem>
764         <listitem>
765           <para>
766             The <literal>Text.Html</literal> and
767             <literal>Text.Html.BlockTable</literal> modules have now
768             been removed, with the new <literal>html</literal> and
769             <literal>xhtml</literal> packages providing replacements.
770           </para>
771         </listitem>
772         <listitem>
773           <para>
774             <literal>Text.Read</literal> now exports a function
775             <literal>parens</literal> which parses a value in an
776             arbitrary number of parentheses.
777           </para>
778         </listitem>
779         <listitem>
780           <para>
781             The <literal>ForeignPtr</literal> datatype has been altered
782             to make it more efficient. There are also new functions
783             <literal>mallocPlainForeignPtr</literal> and
784             <literal>mallocPlainForeignPtrBytes</literal> which
785             do not allow you to attach a finalizer to the
786             <literal>ForeignPtr</literal>.
787           </para>
788         </listitem>
789         <listitem>
790           <para>
791             The <literal>Text.Regex</literal> and
792             <literal>Text.Regex.Posix</literal> modules have been removed.
793             Instead, use the new <literal>regex-compat</literal> package
794             for a drop-in <literal>Text.Regex</literal> replacement, or
795             the new library in the new <literal>regex-posix</literal>
796             package.
797           </para>
798         </listitem>
799       </itemizedlist>
800     </sect3>
801
802     <sect3>
803       <title>Cabal</title>
804       <itemizedlist>
805         <listitem>
806           <para>
807             Version number 1.1.6 (was 1.1.4).
808           </para>
809         </listitem>
810         <listitem>
811           <para>
812             Support for JHC, symmetric to the support for the other
813             implementations, has been added throughout.
814           </para>
815         </listitem>
816         <listitem>
817           <para>
818             Support for object splitting and building in-place
819             has been added throughout.
820           </para>
821         </listitem>
822         <listitem>
823           <para>
824             Added a <filename>debianTemplate</filename> directory with
825             templates for building Debian packages from Cabal packages.
826           </para>
827         </listitem>
828         <listitem>
829           <para>
830             There are now modules
831             <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
832             for each of <literal>GHC</literal>, <literal>NHC</literal>,
833             <literal>Hugs</literal> and <literal>JHC</literal>.
834             The <literal>Distribution.Simple.Build</literal> and
835             <literal>Distribution.Simple.Install</literal> modules have
836             shrunk correspondingly.
837           </para>
838         </listitem>
839         <listitem>
840           <para>
841             <literal>Distribution.GetOpt</literal> is no longer a
842             visible module.
843           </para>
844         </listitem>
845         <listitem>
846           <para>
847             <literal>Distribution.Simple</literal> exports a function
848             <literal>defaultMainArgs</literal>, which is identical to
849             <literal>defaultMain</literal> except that the arguments are
850             given as a list of strings rather than being retrieved with
851             <literal>getArgs</literal>.
852           </para>
853         </listitem>
854         <listitem>
855           <para>
856             <literal>Distribution.Simple.Configure</literal>
857             no longer exports
858             <literal>LocalBuildInfo</literal>,
859             but does now export
860             <literal>configDependency</literal> and
861             <literal>configCompilerAux</literal>.
862           </para>
863         </listitem>
864         <listitem>
865           <para>
866             <literal>Distribution.Simple.LocalBuildInfo</literal> now
867             exports <literal>mkHaddockDir</literal>,
868             <literal>distPref</literal>,
869             <literal>srcPref</literal>,
870             <literal>autogenModulesDir</literal> and
871             <literal>mkIncludeDir</literal>.
872           </para>
873         </listitem>
874         <listitem>
875           <para>
876             <literal>Distribution.PackageDescription</literal> now
877             exports <literal>haddockName</literal>.
878           </para>
879         </listitem>
880         <listitem>
881           <para>
882             <literal>Distribution.Simple.Utils</literal> now exports
883             <literal>copyDirectoryRecursiveVerbose</literal>,
884             <literal>dirOf</literal>,
885             <literal>distPref</literal>,
886             <literal>haddockPref</literal> and
887             <literal>srcPref</literal>.
888             It no longer exports <literal>mkGHCiLibName</literal>.
889           </para>
890         </listitem>
891       </itemizedlist>
892     </sect3>
893
894     <sect3>
895       <title>haskell98</title>
896       <itemizedlist>
897         <listitem>
898           <para>
899             No change (version 1.0).
900           </para>
901         </listitem>
902       </itemizedlist>
903     </sect3>
904
905     <sect3>
906       <title>parsec</title>
907       <itemizedlist>
908         <listitem>
909           <para>
910             Version number 2.0 (was 1.0).
911           </para>
912         </listitem>
913         <listitem>
914           <para>
915             No other change.
916           </para>
917         </listitem>
918       </itemizedlist>
919     </sect3>
920
921     <sect3>
922       <title>readline</title>
923       <itemizedlist>
924         <listitem>
925           <para>
926             No change (version 1.0).
927           </para>
928         </listitem>
929       </itemizedlist>
930     </sect3>
931
932     <sect3>
933       <title>regex-base</title>
934       <itemizedlist>
935         <listitem>
936           <para>
937             Version 0.71.
938           </para>
939         </listitem>
940         <listitem>
941           <para>
942             New library that provides common functions for different
943             regex backends.
944           </para>
945         </listitem>
946       </itemizedlist>
947     </sect3>
948
949     <sect3>
950       <title>regex-compat</title>
951       <itemizedlist>
952         <listitem>
953           <para>
954             Version 0.71.
955           </para>
956         </listitem>
957         <listitem>
958           <para>
959             New package providing a replacement
960             <literal>Text.Regex</literal> module.
961           </para>
962         </listitem>
963       </itemizedlist>
964     </sect3>
965
966     <sect3>
967       <title>regex-posix</title>
968       <itemizedlist>
969         <listitem>
970           <para>
971             Version 0.71.
972           </para>
973         </listitem>
974         <listitem>
975           <para>
976             A new package providing POSIX regexes.
977           </para>
978         </listitem>
979       </itemizedlist>
980     </sect3>
981
982     <sect3>
983       <title>stm</title>
984       <itemizedlist>
985         <listitem>
986           <para>
987             Version number 2.0 (was 1.0).
988           </para>
989         </listitem>
990         <listitem>
991           <para>
992             A new module <literal>Control.Monad.STM</literal>
993             contains the
994             <literal>MonadPlus</literal> instance for
995             <literal>STM</literal> and the function
996             <literal>check</literal> (both used to be in
997             <literal>Control.Concurrent.STM</literal>).
998             It also re-exports
999             <literal>STM</literal>,
1000             <literal>atomically</literal>,
1001             <literal>retry</literal>,
1002             <literal>orElse</literal> and
1003             <literal>catchSTM</literal>.
1004           </para>
1005         </listitem>
1006         <listitem>
1007           <para>
1008             A new module
1009             <literal>Control.Concurrent.STM.TArray</literal> defines
1010             <literal>TArray</literal>, a transactional array, and makes
1011             it an instance of <literal>MArray</literal>.
1012           </para>
1013         </listitem>
1014         <listitem>
1015           <para>
1016             <literal>Control.Concurrent.STM.TChan</literal> now provides
1017             a function <literal>newTChanIO</literal>, which allows
1018             <literal>TChan</literal>s to be created in the IO monad.
1019             Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1020             provides <literal>newTMVarIO</literal> and
1021             <literal>newEmptyTMVarIO</literal>, and
1022             <literal>Control.Concurrent.STM.TVar</literal> exports
1023             <literal>newTVarIO</literal>.
1024           </para>
1025         </listitem>
1026         <listitem>
1027           <para>
1028             <literal>Control.Concurrent.STM.TVar</literal> exports
1029             <literal>registerDelay</literal>.
1030           </para>
1031         </listitem>
1032         <listitem>
1033           <para>
1034             The <literal>Control.Concurrent.STM</literal> module has been
1035             updated to re-export all the new modules.
1036           </para>
1037         </listitem>
1038       </itemizedlist>
1039     </sect3>
1040
1041     <sect3>
1042       <title>template-haskell</title>
1043       <itemizedlist>
1044         <listitem>
1045           <para>
1046             Version number 2.0 (was 1.0).
1047           </para>
1048         </listitem>
1049         <listitem>
1050           <para>
1051             A <literal>Show</literal> instance is now derived for
1052             <literal>Info</literal>, <literal>Fixity</literal> and
1053             <literal>FixityDirection</literal> in
1054             <literal>Language.Haskell.TH.Syntax</literal>.
1055           </para>
1056         </listitem>
1057         <listitem>
1058           <para>
1059             In <literal>Language.Haskell.TH.Syntax</literal>, there is
1060             a type <literal>PkgName</literal> and functions
1061             <literal>mkPkgName</literal> and
1062             <literal>pkgString</literal>
1063             for dealing with package names.
1064           </para>
1065         </listitem>
1066         <listitem>
1067           <para>
1068             The <literal>patGE</literal> function in
1069             <literal>Language.Haskell.TH.Lib</literal> now takes the
1070             final expression separately to the list of statements
1071             rather than splitting it off itself.
1072           </para>
1073         </listitem>
1074       </itemizedlist>
1075     </sect3>
1076
1077     <sect3>
1078       <title>unix</title>
1079       <itemizedlist>
1080         <listitem>
1081           <para>
1082             No change (version 1.0).
1083           </para>
1084         </listitem>
1085       </itemizedlist>
1086     </sect3>
1087
1088     <sect3>
1089       <title>Win32</title>
1090       <itemizedlist>
1091         <listitem>
1092           <para>
1093             Version number 2.0 (was 1.0).
1094           </para>
1095         </listitem>
1096         <listitem>
1097           <para>
1098             Now maintained by Esa Ilari Vuokko.
1099           </para>
1100         </listitem>
1101         <listitem>
1102           <para>
1103             There is a new module
1104             <literal>System.Win32.Console</literal>
1105             providing an interface to the Windows Console API.
1106           </para>
1107         </listitem>
1108         <listitem>
1109           <para>
1110             There is a new module
1111             <literal>System.Win32.DebugApi</literal>
1112             providing an interface to the Windows DebugApi.
1113           </para>
1114         </listitem>
1115         <listitem>
1116           <para>
1117             There is a new module
1118             <literal>System.Win32.FileMapping</literal>
1119             for working with memory-mapped files.
1120           </para>
1121         </listitem>
1122         <listitem>
1123           <para>
1124             There is a new module
1125             <literal>System.Win32.SimpleMAPI</literal>
1126             for using the Windows mail API.
1127           </para>
1128         </listitem>
1129         <listitem>
1130           <para>
1131             There is a new module
1132             <literal>System.Win32.Time</literal>
1133             for using the Windows time API.
1134           </para>
1135         </listitem>
1136         <listitem>
1137           <para>
1138             <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1139             <literal>Graphics.Win32.Misc</literal> to
1140             <literal>System.Win32.Types</literal>.
1141           </para>
1142         </listitem>
1143         <listitem>
1144           <para>
1145             <literal>System.Win32.File</literal> has a new
1146             function <literal>getFileInformationByHandle</literal>
1147             and associated data types.
1148           </para>
1149         </listitem>
1150         <listitem>
1151           <para>
1152             <literal>System.Win32.Info</literal> has a new
1153             function <literal>getSystemInfo</literal> and associated
1154             data types.
1155           </para>
1156         </listitem>
1157         <listitem>
1158           <para>
1159             <literal>System.Win32.Process</literal> now has many more
1160             exports.
1161           </para>
1162         </listitem>
1163         <listitem>
1164           <para>
1165             <literal>System.Win32.Types</literal> has new types
1166             <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1167             and <literal>SIZE_T</literal>. It also has new helper
1168             functions <literal>ddwordToDwords</literal> and
1169             <literal>dwordsToDdword</literal> to split and combine
1170             ddwords into high and low components.
1171           </para>
1172         </listitem>
1173         <listitem>
1174           <para>
1175             <literal>System.Win32</literal> re-exports
1176             <literal>System.Win32.FileMapping</literal>,
1177             <literal>System.Win32.Time</literal>
1178             and <literal>System.Win32.Console</literal>.
1179           </para>
1180         </listitem>
1181       </itemizedlist>
1182     </sect3>
1183   </sect2>
1184
1185   <sect2>
1186     <title>Extra Libraries</title>
1187     <sect3>
1188       <title>ALUT</title>
1189       <itemizedlist>
1190         <listitem>
1191           <para>
1192             Version number 2.0 (was 1.0).
1193           </para>
1194         </listitem>
1195         <listitem>
1196           <para>
1197             <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1198             Its <literal>Phase</literal> and <literal>Duration</literal>
1199             exports are now exported by
1200             <literal>Sound.ALUT.Loaders</literal> and its
1201             <literal>helloWorld</literal>,
1202             <literal>sine</literal>,
1203             <literal>square</literal>,
1204             <literal>sawtooth</literal>,
1205             <literal>impulse</literal> and
1206             <literal>whiteNoise</literal>
1207             exports are now constructors of the
1208             <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1209             datatype.
1210           </para>
1211         </listitem>
1212       </itemizedlist>
1213     </sect3>
1214
1215     <sect3>
1216       <title>arrows</title>
1217       <itemizedlist>
1218         <listitem>
1219           <para>
1220             Version number 0.2 (was 0.1).
1221           </para>
1222         </listitem>
1223         <listitem>
1224           <para>
1225             <literal>Control.Sequence</literal> has been removed in
1226             favour of the new <literal>Control.Applicative</literal>
1227             module in <literal>base</literal>.
1228           </para>
1229         </listitem>
1230       </itemizedlist>
1231     </sect3>
1232
1233     <sect3>
1234       <title>cgi</title>
1235       <itemizedlist>
1236         <listitem>
1237           <para>
1238             Version 2006.8.14.
1239           </para>
1240         </listitem>
1241         <listitem>
1242           <para>
1243             <literal>cgi</literal> is a new package, developing on
1244             what used to be <literal>Network.CGI</literal> in the
1245             <literal>network</literal> package.
1246           </para>
1247         </listitem>
1248       </itemizedlist>
1249     </sect3>
1250
1251     <sect3>
1252       <title>fgl</title>
1253       <itemizedlist>
1254         <listitem>
1255           <para>
1256             Version number 5.3 (was 5.2).
1257           </para>
1258         </listitem>
1259         <listitem>
1260           <para>
1261             <literal>Data.Graph.Inductive.Graph</literal> no longer
1262             exports <literal>UContext</literal>.
1263           </para>
1264         </listitem>
1265         <listitem>
1266           <para>
1267             <literal>Data.Graph.Inductive.Graph</literal> now exports
1268             <literal>delLEdge</literal>.
1269           </para>
1270         </listitem>
1271       </itemizedlist>
1272     </sect3>
1273
1274     <sect3>
1275       <title>GLUT</title>
1276       <itemizedlist>
1277         <listitem>
1278           <para>
1279             Version number remains 2.0.
1280           </para>
1281         </listitem>
1282         <listitem>
1283           <para>
1284             In <literal>Graphics.UI.GLUT.Initialization</literal>,
1285             <literal>DisplayMode</literal> has a new constructor
1286             <literal>WithAuxBuffers</literal> and
1287             <literal>DisplayCapability</literal> has a new constructor
1288             <literal>DisplayAux</literal>. These represent freeglut-only
1289             features.
1290           </para>
1291         </listitem>
1292         <listitem>
1293           <para>
1294             There are new examples in
1295             <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1296             <filename>RedBook/AAIndex.hs</filename>,
1297             <filename>RedBook/AARGB.hs</filename>,
1298             <filename>RedBook/AccAnti.hs</filename>,
1299             <filename>RedBook/AccPersp.hs</filename>,
1300             <filename>RedBook/Alpha3D.hs</filename>,
1301             <filename>RedBook/DOF.hs</filename>,
1302             <filename>RedBook/FogIndex.hs</filename>,
1303             <filename>RedBook/Multisamp.hs</filename>,
1304             <filename>RedBook/PointP.hs</filename>,
1305             <filename>RedBook/PolyOff.hs</filename>,
1306             <filename>RedBook/Stencil.hs</filename>,
1307             <filename>RedBook/Stroke.hs</filename> and
1308             <filename>RedBook/Torus.hs</filename>,
1309             and the examples in
1310             <filename>RedBook/Font.hs</filename> and
1311             <filename>RedBook/Histogram.hs</filename> have been
1312             improved.
1313           </para>
1314         </listitem>
1315       </itemizedlist>
1316     </sect3>
1317
1318     <sect3>
1319       <title>haskell-src</title>
1320       <itemizedlist>
1321         <listitem>
1322           <para>
1323             No change (version 1.0).
1324           </para>
1325         </listitem>
1326       </itemizedlist>
1327     </sect3>
1328
1329     <sect3>
1330       <title>HGL</title>
1331       <itemizedlist>
1332         <listitem>
1333           <para>
1334             No change (version 3.1).
1335           </para>
1336         </listitem>
1337       </itemizedlist>
1338     </sect3>
1339
1340     <sect3>
1341       <title>html</title>
1342       <itemizedlist>
1343         <listitem>
1344           <para>
1345             Version 1.0.
1346           </para>
1347         </listitem>
1348         <listitem>
1349           <para>
1350             <literal>html</literal> is a new package, developing on
1351             what used to be <literal>Text.Html</literal> and
1352             <literal>Text.Html.BlockTable</literal> in the
1353             <literal>base</literal> package.
1354           </para>
1355         </listitem>
1356         <listitem>
1357           <para>
1358             <literal>Text.Html.BlockTable</literal> exports a new
1359             function <literal>empty</literal>.
1360           </para>
1361         </listitem>
1362       </itemizedlist>
1363     </sect3>
1364
1365     <sect3>
1366       <title>HUnit</title>
1367       <itemizedlist>
1368         <listitem>
1369           <para>
1370             No change (version 1.1).
1371           </para>
1372         </listitem>
1373       </itemizedlist>
1374     </sect3>
1375
1376     <sect3>
1377       <title>mtl</title>
1378       <itemizedlist>
1379         <listitem>
1380           <para>
1381             No change (version 1.0).
1382           </para>
1383         </listitem>
1384       </itemizedlist>
1385     </sect3>
1386
1387     <sect3>
1388       <title>network</title>
1389       <itemizedlist>
1390         <listitem>
1391           <para>
1392             Version number 2.0 (was 1.0).
1393           </para>
1394         </listitem>
1395         <listitem>
1396           <para>
1397             <literal>Network.CGI</literal> has been removed; use the
1398             <literal>cgi</literal> package instead.
1399           </para>
1400         </listitem>
1401         <listitem>
1402           <para>
1403             <literal>Network.BSD</literal> no longer exports
1404             <literal>symlink</literal> or <literal>readlink</literal>;
1405             use
1406             <literal>System.Posix.Files.createSymbolicLink</literal> and
1407             <literal>System.Posix.Files.readSymbolicLink</literal>
1408             instead.
1409           </para>
1410         </listitem>
1411         <listitem>
1412           <para>
1413             <literal>Network.BSD</literal> now exports
1414             <literal>defaultProtocol</literal>.
1415           </para>
1416         </listitem>
1417         <listitem>
1418           <para>
1419             <literal>Network.Socket.SocketStatus</literal> now has a
1420             constructor <literal>ConvertedToHandle</literal> for sockets
1421             that have been converted to handles.
1422           </para>
1423         </listitem>
1424         <listitem>
1425           <para>
1426             <literal>Network.Socket.Family</literal> now has the
1427             following additional constructors:
1428             <literal>AF_NETROM</literal>,
1429             <literal>AF_BRIDGE</literal>,
1430             <literal>AF_ATMPVC</literal>,
1431             <literal>AF_ROSE</literal>,
1432             <literal>AF_NETBEUI</literal>,
1433             <literal>AF_SECURITY</literal>,
1434             <literal>AF_PACKET</literal>,
1435             <literal>AF_ASH</literal>,
1436             <literal>AF_ECONET</literal>,
1437             <literal>AF_ATMSVC</literal>,
1438             <literal>AF_IRDA</literal>,
1439             <literal>AF_PPPOX</literal>,
1440             <literal>AF_WANPIPE</literal> and
1441             <literal>AF_BLUETOOTH</literal>.
1442           </para>
1443         </listitem>
1444         <listitem>
1445           <para>
1446             In <literal>Network.URI</literal>,
1447             <literal>parseabsoluteURI</literal> has been deprecated with
1448             a new function <literal>parseAbsoluteURI</literal> taking
1449             its place.
1450           </para>
1451         </listitem>
1452       </itemizedlist>
1453     </sect3>
1454
1455     <sect3>
1456       <title>ObjectIO</title>
1457       <itemizedlist>
1458         <listitem>
1459           <para>
1460             No change (version 1.0).
1461           </para>
1462         </listitem>
1463       </itemizedlist>
1464     </sect3>
1465
1466     <sect3>
1467       <title>OpenAL</title>
1468       <itemizedlist>
1469         <listitem>
1470           <para>
1471             Version number 1.3 (was 1.2).
1472           </para>
1473         </listitem>
1474         <listitem>
1475           <para>
1476             No other change.
1477           </para>
1478         </listitem>
1479       </itemizedlist>
1480     </sect3>
1481
1482     <sect3>
1483       <title>OpenGL</title>
1484       <itemizedlist>
1485         <listitem>
1486           <para>
1487             Version number 2.1 (was 2.0).
1488           </para>
1489         </listitem>
1490         <listitem>
1491           <para>
1492             No other change.
1493           </para>
1494         </listitem>
1495       </itemizedlist>
1496     </sect3>
1497
1498     <sect3>
1499       <title>QuickCheck</title>
1500       <itemizedlist>
1501         <listitem>
1502           <para>
1503             No change (version 1.0).
1504           </para>
1505         </listitem>
1506       </itemizedlist>
1507     </sect3>
1508
1509     <sect3>
1510       <title>time</title>
1511       <itemizedlist>
1512         <listitem>
1513           <para>
1514             Version 1.0.
1515           </para>
1516         </listitem>
1517         <listitem>
1518           <para>
1519             <literal>time</literal> is a new package, for dealing with
1520             dates, times and time intervals.
1521           </para>
1522         </listitem>
1523       </itemizedlist>
1524     </sect3>
1525
1526     <sect3>
1527       <title>X11</title>
1528       <itemizedlist>
1529         <listitem>
1530           <para>
1531             Version number 1.2 (was 1.1).
1532           </para>
1533         </listitem>
1534         <listitem>
1535           <para>
1536             In <literal>Graphics.X11.Xlib.Types</literal>,
1537             <literal>XGCValues</literal> has been renamed
1538             <literal>GCValues</literal> and
1539             <literal>XSetWindowAttributes</literal> has been renamed
1540             <literal>SetWindowAttributes</literal>.
1541           </para>
1542         </listitem>
1543         <listitem>
1544           <para>
1545             In <literal>Graphics.X11.Xlib.Misc</literal>,
1546             <literal>allocaXSetWindowAttributes</literal> has been
1547             renamed <literal>allocaSetWindowAttributes</literal>.
1548           </para>
1549         </listitem>
1550         <listitem>
1551           <para>
1552             The <literal>FontStruct</literal> type has moved from
1553             <literal>Graphics.X11.Xlib.Types</literal> to
1554             <literal>Graphics.X11.Xlib.Font</literal>.
1555           </para>
1556         </listitem>
1557         <listitem>
1558           <para>
1559             The
1560             <literal>Point</literal>,
1561             <literal>Rectangle</literal>,
1562             <literal>Arc</literal>,
1563             <literal>Segment</literal> and
1564             <literal>Color</literal> types in
1565             <literal>Graphics.X11.Xlib.Types</literal>
1566             are now proper datatypes rather than synonyms for tuples.
1567             They all have a <literal>Storable</literal> instance.
1568           </para>
1569         </listitem>
1570         <listitem>
1571           <para>
1572             The <literal>Byte</literal> and <literal>Short</literal>
1573             types from <literal>Graphics.X11.Xlib.Types</literal> have
1574             been removed.
1575             The following type synonyms, which had already been marked
1576             &quot;Backwards compatibility&quot;, have also been removed:
1577             <literal>ListPoint</literal>,
1578             <literal>ListRectangle</literal>,
1579             <literal>ListArc</literal>,
1580             <literal>ListSegment</literal> and
1581             <literal>ListColor</literal>.
1582           </para>
1583         </listitem>
1584         <listitem>
1585           <para>
1586             <literal>Eq</literal>,
1587             <literal>Ord</literal>,
1588             <literal>Show</literal>,
1589             <literal>Typeable</literal> and
1590             <literal>Data</literal> are now derived for:
1591             <literal>XEvent</literal>,
1592             <literal>FdSet</literal> and
1593             <literal>TimeZone</literal> in
1594             <literal>Graphics.X11.Xlib.Event</literal>,
1595             <literal>FontStruct</literal> in
1596             <literal>Graphics.X11.Xlib.Font</literal>,
1597             <literal>XErrorEvent</literal>,
1598             <literal>XComposeStatus</literal> and
1599             <literal>XTextProperty</literal> in
1600             <literal>Graphics.X11.Xlib.Misc</literal>,
1601             <literal>Region</literal> in
1602             <literal>Graphics.X11.Xlib.Region</literal>,
1603             <literal>Display</literal>,
1604             <literal>Screen</literal>,
1605             <literal>Visual</literal>,
1606             <literal>GC</literal>,
1607             <literal>GCValues</literal>,
1608             <literal>SetWindowAttributes</literal>,
1609             <literal>Point</literal>,
1610             <literal>Rectangle</literal>,
1611             <literal>Arc</literal>,
1612             <literal>Segment</literal> and
1613             <literal>Color</literal> in
1614             <literal>Graphics.X11.Xlib.Types</literal>.
1615           </para>
1616         </listitem>
1617       </itemizedlist>
1618     </sect3>
1619
1620     <sect3>
1621       <title>xhtml</title>
1622       <itemizedlist>
1623         <listitem>
1624           <para>
1625             Version 2006.8.14.
1626           </para>
1627         </listitem>
1628         <listitem>
1629           <para>
1630             <literal>xhtml</literal> is a new package, developing on
1631             what used to be <literal>Text.Html</literal> and
1632             <literal>Text.Html.BlockTable</literal> in the
1633             <literal>base</literal> package.
1634           </para>
1635         </listitem>
1636       </itemizedlist>
1637     </sect3>
1638   </sect2>
1639
1640   <sect2>
1641     <title>GHC As A Library</title>
1642       <para>
1643         Version number 6.6.
1644       </para>
1645       <para>
1646         The internal modules of GHC are now available as a library, package
1647         name <literal>ghc</literal>.
1648         The interface has not been designed with use by other programs
1649         in mind, so expect the API to vary radically in future
1650         releases.
1651       </para>
1652       <para>
1653         An introduction to using the library can be found
1654         <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1655       </para>
1656   </sect2>
1657
1658   <sect2>
1659     <title>Internal changes</title>
1660     <itemizedlist>
1661       <listitem>
1662         <para>
1663           GHC development now has its own integrated
1664           <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1665           tracker</ulink>.
1666         </para>
1667       </listitem>
1668       <listitem>
1669         <para>
1670           GHC has now moved to darcs. See
1671           <ulink
1672           url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1673           wiki</ulink> for more details. The sources have moved around a
1674           bit within the tree as a result, most notably the GHC sources
1675           are no longer kept within a <filename>ghc/</filename>
1676           subdirectory.
1677         </para>
1678       </listitem>
1679       <listitem>
1680         <para>
1681           The native code generator is now capable of compiling loops,
1682           which gets us a big step closer to being able to compile
1683           entirely without gcc on well-supported arches.
1684         </para>
1685       </listitem>
1686     </itemizedlist>
1687   </sect2>
1688 </sect1>
1689