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