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