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