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