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