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