parsec is now a core library
[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>parsec</title>
835       <itemizedlist>
836         <listitem>
837           <para>
838             Version number 2.0 (was 1.0).
839           </para>
840         </listitem>
841         <listitem>
842           <para>
843             No other change.
844           </para>
845         </listitem>
846       </itemizedlist>
847     </sect3>
848
849     <sect3>
850       <title>readline</title>
851       <itemizedlist>
852         <listitem>
853           <para>
854             No change (version 1.0).
855           </para>
856         </listitem>
857       </itemizedlist>
858     </sect3>
859
860     <sect3>
861       <title>stm</title>
862       <itemizedlist>
863         <listitem>
864           <para>
865             Version number 2.0 (was 1.0).
866           </para>
867         </listitem>
868         <listitem>
869           <para>
870             A new module <literal>Control.Monad.STM</literal>
871             contains the
872             <literal>MonadPlus</literal> instance for
873             <literal>STM</literal> and the function
874             <literal>check</literal> (both used to be in
875             <literal>Control.Concurrent.STM</literal>).
876             It also re-exports
877             <literal>STM</literal>,
878             <literal>atomically</literal>,
879             <literal>retry</literal>,
880             <literal>orElse</literal> and
881             <literal>catchSTM</literal>.
882           </para>
883         </listitem>
884         <listitem>
885           <para>
886             There is a new module
887             <literal>Control.Sequential.STM</literal> for non-concurrent
888             transactions which nevertheless need to be atomic in the
889             face of exceptions.
890           </para>
891         </listitem>
892         <listitem>
893           <para>
894             A new module
895             <literal>Control.Concurrent.STM.TArray</literal> defines
896             <literal>TArray</literal>, a transactional array, and makes
897             it an instance of <literal>MArray</literal>.
898           </para>
899         </listitem>
900         <listitem>
901           <para>
902             <literal>Control.Concurrent.STM.TChan</literal> now provides
903             a function <literal>newTChanIO</literal>, which allows
904             <literal>TChan</literal>s to be created in the IO monad.
905             Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
906             provides <literal>newTMVarIO</literal> and
907             <literal>newEmptyTMVarIO</literal>, and
908             <literal>Control.Concurrent.STM.TVar</literal> exports
909             <literal>newTVarIO</literal>.
910           </para>
911         </listitem>
912         <listitem>
913           <para>
914             <literal>Control.Concurrent.STM.TVar</literal> exports
915             <literal>registerDelay</literal>.
916           </para>
917         </listitem>
918         <listitem>
919           <para>
920             The <literal>Control.Concurrent.STM</literal> module has been
921             updated to re-export all the new modules.
922           </para>
923         </listitem>
924       </itemizedlist>
925     </sect3>
926
927     <sect3>
928       <title>template-haskell</title>
929       <itemizedlist>
930         <listitem>
931           <para>
932             Version number 2.0 (was 1.0).
933           </para>
934         </listitem>
935         <listitem>
936           <para>
937             A <literal>Show</literal> instance is now derived for
938             <literal>Info</literal>, <literal>Fixity</literal> and
939             <literal>FixityDirection</literal> in
940             <literal>Language.Haskell.TH.Syntax</literal>.
941           </para>
942         </listitem>
943         <listitem>
944           <para>
945             In <literal>Language.Haskell.TH.Syntax</literal>, there is
946             a type <literal>PkgName</literal> and functions
947             <literal>mkPkgName</literal> and
948             <literal>pkgString</literal>
949             for dealing with package names.
950           </para>
951         </listitem>
952         <listitem>
953           <para>
954             The <literal>patGE</literal> function in
955             <literal>Language.Haskell.TH.Lib</literal> now takes the
956             final expression separately to the list of statements
957             rather than splitting it off itself.
958           </para>
959         </listitem>
960       </itemizedlist>
961     </sect3>
962
963     <sect3>
964       <title>unix</title>
965       <itemizedlist>
966         <listitem>
967           <para>
968             No change (version 1.0).
969           </para>
970         </listitem>
971       </itemizedlist>
972     </sect3>
973
974     <sect3>
975       <title>Win32</title>
976       <itemizedlist>
977         <listitem>
978           <para>
979             Version number 2.0 (was 1.0).
980           </para>
981         </listitem>
982         <listitem>
983           <para>
984             Now maintained by Esa Ilari Vuokko.
985           </para>
986         </listitem>
987         <listitem>
988           <para>
989             There is a new module
990             <literal>System.Win32.Console</literal>
991             providing an interface to the Windows Console API.
992           </para>
993         </listitem>
994         <listitem>
995           <para>
996             There is a new module
997             <literal>System.Win32.DebugApi</literal>
998             providing an interface to the Windows DebugApi.
999           </para>
1000         </listitem>
1001         <listitem>
1002           <para>
1003             There is a new module
1004             <literal>System.Win32.FileMapping</literal>
1005             for working with memory-mapped files.
1006           </para>
1007         </listitem>
1008         <listitem>
1009           <para>
1010             There is a new module
1011             <literal>System.Win32.SimpleMAPI</literal>
1012             for using the Windows mail API.
1013           </para>
1014         </listitem>
1015         <listitem>
1016           <para>
1017             There is a new module
1018             <literal>System.Win32.Time</literal>
1019             for using the Windows time API.
1020           </para>
1021         </listitem>
1022         <listitem>
1023           <para>
1024             <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1025             <literal>Graphics.Win32.Misc</literal> to
1026             <literal>System.Win32.Types</literal>.
1027           </para>
1028         </listitem>
1029         <listitem>
1030           <para>
1031             <literal>System.Win32.File</literal> has a new
1032             function <literal>getFileInformationByHandle</literal>
1033             and associated data types.
1034           </para>
1035         </listitem>
1036         <listitem>
1037           <para>
1038             <literal>System.Win32.Info</literal> has a new
1039             function <literal>getSystemInfo</literal> and associated
1040             data types.
1041           </para>
1042         </listitem>
1043         <listitem>
1044           <para>
1045             <literal>System.Win32.Process</literal> now has many more
1046             exports.
1047           </para>
1048         </listitem>
1049         <listitem>
1050           <para>
1051             <literal>System.Win32.Types</literal> has new types
1052             <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1053             and <literal>SIZE_T</literal>. It also has new helper
1054             functions <literal>ddwordToDwords</literal> and
1055             <literal>dwordsToDdword</literal> to split and combine
1056             ddwords into high and low components.
1057           </para>
1058         </listitem>
1059         <listitem>
1060           <para>
1061             <literal>System.Win32</literal> re-exports
1062             <literal>System.Win32.FileMapping</literal>,
1063             <literal>System.Win32.Time</literal>
1064             and <literal>System.Win32.Console</literal>.
1065           </para>
1066         </listitem>
1067         <listitem>
1068           <para>
1069             <literal>System.Win32</literal> no longer exports
1070             <literal>LCID</literal>,
1071             <literal>LANGID</literal>,
1072             <literal>SortID</literal>,
1073             <literal>SubLANGID</literal>,
1074             <literal>PrimaryLANGID</literal>,
1075             <literal>mAKELCID</literal>,
1076             <literal>lANGIDFROMLCID</literal>,
1077             <literal>sORTIDFROMLCID</literal>,
1078             <literal>mAKELANGID</literal>,
1079             <literal>pRIMARYLANGID</literal> or
1080             <literal>sUBLANGID</literal> from
1081             <literal>System.Win32.NLS</literal>.
1082           </para>
1083         </listitem>
1084       </itemizedlist>
1085     </sect3>
1086   </sect2>
1087
1088   <sect2>
1089     <title>Extra Libraries</title>
1090     <sect3>
1091       <title>ALUT</title>
1092       <itemizedlist>
1093         <listitem>
1094           <para>
1095             Version number 2.0 (was 1.0).
1096           </para>
1097         </listitem>
1098         <listitem>
1099           <para>
1100             <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1101             Its <literal>Phase</literal> and <literal>Duration</literal>
1102             exports are now exported by
1103             <literal>Sound.ALUT.Loaders</literal> and its
1104             <literal>helloWorld</literal>,
1105             <literal>sine</literal>,
1106             <literal>square</literal>,
1107             <literal>sawtooth</literal>,
1108             <literal>impulse</literal> and
1109             <literal>whiteNoise</literal>
1110             exports are now constructors of the
1111             <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1112             datatype.
1113           </para>
1114         </listitem>
1115       </itemizedlist>
1116     </sect3>
1117
1118     <sect3>
1119       <title>arrows</title>
1120       <itemizedlist>
1121         <listitem>
1122           <para>
1123             Version number remains 0.1.
1124           </para>
1125         </listitem>
1126         <listitem>
1127           <para>
1128             <literal>Control.Sequence</literal> has been removed in
1129             favour of the new <literal>Control.Applicative</literal>
1130             module in <literal>base</literal>.
1131           </para>
1132         </listitem>
1133       </itemizedlist>
1134     </sect3>
1135
1136     <sect3>
1137       <title>cgi</title>
1138       <itemizedlist>
1139         <listitem>
1140           <para>
1141             Version 2006.8.14.
1142           </para>
1143         </listitem>
1144         <listitem>
1145           <para>
1146             <literal>cgi</literal> is a new package, developing on
1147             what used to be <literal>Network.CGI</literal> in the
1148             <literal>network</literal> package.
1149           </para>
1150         </listitem>
1151       </itemizedlist>
1152     </sect3>
1153
1154     <sect3>
1155       <title>fgl</title>
1156       <itemizedlist>
1157         <listitem>
1158           <para>
1159             Version number 5.3 (was 5.2).
1160           </para>
1161         </listitem>
1162         <listitem>
1163           <para>
1164             <literal>Data.Graph.Inductive.Graph</literal> no longer
1165             exports <literal>UContext</literal>.
1166           </para>
1167         </listitem>
1168         <listitem>
1169           <para>
1170             <literal>Data.Graph.Inductive.Graph</literal> now exports
1171             <literal>delLEdge</literal>.
1172           </para>
1173         </listitem>
1174       </itemizedlist>
1175     </sect3>
1176
1177     <sect3>
1178       <title>GLUT</title>
1179       <itemizedlist>
1180         <listitem>
1181           <para>
1182             Version number remains 2.0.
1183           </para>
1184         </listitem>
1185         <listitem>
1186           <para>
1187             In <literal>Graphics.UI.GLUT.Initialization</literal>,
1188             <literal>DisplayMode</literal> has a new constructor
1189             <literal>WithAuxBuffers</literal> and
1190             <literal>DisplayCapability</literal> has a new constructor
1191             <literal>DisplayAux</literal>. These represent freeglut-only
1192             features.
1193           </para>
1194         </listitem>
1195         <listitem>
1196           <para>
1197             There are new examples in
1198             <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1199             <filename>RedBook/AAIndex.hs</filename>,
1200             <filename>RedBook/AARGB.hs</filename>,
1201             <filename>RedBook/AccAnti.hs</filename>,
1202             <filename>RedBook/AccPersp.hs</filename>,
1203             <filename>RedBook/Alpha3D.hs</filename>,
1204             <filename>RedBook/DOF.hs</filename>,
1205             <filename>RedBook/FogIndex.hs</filename>,
1206             <filename>RedBook/Multisamp.hs</filename>,
1207             <filename>RedBook/PointP.hs</filename>,
1208             <filename>RedBook/PolyOff.hs</filename>,
1209             <filename>RedBook/Stencil.hs</filename>,
1210             <filename>RedBook/Stroke.hs</filename> and
1211             <filename>RedBook/Torus.hs</filename>,
1212             and the examples in
1213             <filename>RedBook/Font.hs</filename> and
1214             <filename>RedBook/Histogram.hs</filename> have been
1215             improved.
1216           </para>
1217         </listitem>
1218       </itemizedlist>
1219     </sect3>
1220
1221     <sect3>
1222       <title>haskell-src</title>
1223       <itemizedlist>
1224         <listitem>
1225           <para>
1226             No change (version 1.0).
1227           </para>
1228         </listitem>
1229       </itemizedlist>
1230     </sect3>
1231
1232     <sect3>
1233       <title>HaXml</title>
1234       <itemizedlist>
1235         <listitem>
1236           <para>
1237             Version number 1.16 (was 1.12.1).
1238           </para>
1239         </listitem>
1240         <listitem>
1241           <para>
1242             There are now lazy versions of the parsing modules
1243             <literal>Text.XML.HaXml.ParseLazy</literal>
1244             (a lazy non-validating XML parser) and
1245             <literal>Text.XML.HaXml.Html.ParseLazy</literal>
1246             (a lazy HTML parser).
1247           </para>
1248         </listitem>
1249         <listitem>
1250           <para>
1251             There are lazy versions of two of the example tools,
1252             <literal>CanonicaliseLazy</literal> and
1253             <literal>XtractLazy</literal>.
1254           </para>
1255         </listitem>
1256         <listitem>
1257           <para>
1258             <literal>Text.XML.HaXml.Haskell2Xml</literal> and
1259             <literal>Text.XML.HaXml.Xml2Haskell</literal> have been
1260             removed, with <literal>Text.XML.HaXml.XmlContent</literal>
1261             replacing them.
1262             You must now use <literal>{-! derive : XmlContent !-}</literal>
1263             rather than <literal>{-! derive :Haskell2Xml !-}</literal>
1264             to have instances derived for your classes.
1265           </para>
1266         </listitem>
1267         <listitem>
1268           <para>
1269             Now also provides the
1270             <literal>Text.ParserCombinators.HuttonMeijer</literal>
1271             monadic parser combinator library.
1272           </para>
1273         </listitem>
1274         <listitem>
1275           <para>
1276             Provides another new set of parser combinators, as well as a lazy
1277             variant, a variant that carries around state, and a
1278             variant that does both. The modules are
1279             <literal>Text.ParserCombinators.Poly</literal>,
1280             <literal>Text.ParserCombinators.PolyLazy</literal>,
1281             <literal>Text.ParserCombinators.PolyState</literal> and
1282             <literal>Text.ParserCombinators.PolyStateLazy</literal>
1283             respectively.
1284             It also provides
1285             <literal>Text.ParserCombinators.TextParser</literal>, which
1286             is the <literal>Poly</literal> parser combinators
1287             specialised for strings.
1288           </para>
1289         </listitem>
1290         <listitem>
1291           <para>
1292             Now provides a SAX-like parser in
1293             <literal>Text.XML.HaXml.SAX</literal>.
1294           </para>
1295         </listitem>
1296         <listitem>
1297           <para>
1298             Now provides a module
1299             <literal>Text.XML.HaXml.TypeMapping</literal>, which
1300             defines an explicit representation for Haskell types.
1301             This allows generation of a DTD from a Haskell value.
1302           </para>
1303         </listitem>
1304         <listitem>
1305           <para>
1306             The <literal>Posn</literal> type has been pulled out from
1307             <literal>Text.XML.HaXml.Lex</literal> into its own module
1308             <literal>Text.XML.HaXml.Posn</literal>. Some helper
1309             functions are also exported.
1310           </para>
1311         </listitem>
1312         <listitem>
1313           <para>
1314             The APIs to the pre-existing modules have also substantially
1315             changed.
1316           </para>
1317         </listitem>
1318       </itemizedlist>
1319     </sect3>
1320
1321     <sect3>
1322       <title>HGL</title>
1323       <itemizedlist>
1324         <listitem>
1325           <para>
1326             No change (version 3.1).
1327           </para>
1328         </listitem>
1329       </itemizedlist>
1330     </sect3>
1331
1332     <sect3>
1333       <title>html</title>
1334       <itemizedlist>
1335         <listitem>
1336           <para>
1337             Version 1.0.
1338           </para>
1339         </listitem>
1340         <listitem>
1341           <para>
1342             <literal>html</literal> is a new package, developing on
1343             what used to be <literal>Text.Html</literal> and
1344             <literal>Text.Html.BlockTable</literal> in the
1345             <literal>base</literal> package.
1346           </para>
1347         </listitem>
1348         <listitem>
1349           <para>
1350             <literal>Text.Html.BlockTable</literal> exports a new
1351             function <literal>empty</literal>.
1352           </para>
1353         </listitem>
1354       </itemizedlist>
1355     </sect3>
1356
1357     <sect3>
1358       <title>HUnit</title>
1359       <itemizedlist>
1360         <listitem>
1361           <para>
1362             No change (version 1.1).
1363           </para>
1364         </listitem>
1365       </itemizedlist>
1366     </sect3>
1367
1368     <sect3>
1369       <title>Japi</title>
1370       <itemizedlist>
1371         <listitem>
1372           <para>
1373             No change.
1374           </para>
1375         </listitem>
1376       </itemizedlist>
1377     </sect3>
1378
1379     <sect3>
1380       <title>monads</title>
1381       <itemizedlist>
1382         <listitem>
1383           <para>
1384             Version number 2.0.1 (was 1.1).
1385           </para>
1386         </listitem>
1387         <listitem>
1388           <para>
1389             In <literal>Monad.Id</literal>, <literal>run</literal> has
1390             been renamed <literal>runId</literal>.
1391           </para>
1392         </listitem>
1393         <listitem>
1394           <para>
1395             The <literal>Monad.BackT</literal> module has been removed;
1396             use the new <literal>Monad.SearchT</literal> module instead.
1397           </para>
1398         </listitem>
1399         <listitem>
1400           <para>
1401             There is a new module <literal>Monad.ForEach</literal>
1402             containing a class <literal>ForEach</literal>, for
1403             applying a monadic function to each element in a container.
1404             It provides instances for <literal>[]</literal> and
1405             <literal>Maybe</literal>.
1406           </para>
1407         </listitem>
1408         <listitem>
1409           <para>
1410             The following combinators have been moved from
1411             <literal>Monad.Prelude</literal> to a new module
1412             <literal>Monad.Combinators</literal>:
1413             <literal>(@@)</literal>,
1414             <literal>(#)</literal>,
1415             <literal>(&lt;#)</literal>,
1416             <literal>(&lt;##)</literal>,
1417             <literal>concatMap</literal> and
1418             <literal>partitionM</literal>.
1419             <literal>Monad.Combinators</literal> also defines the
1420             following new combinators:
1421             <literal>ifM</literal>,
1422             <literal>whenM</literal>,
1423             <literal>andM</literal>,
1424             <literal>orM</literal>,
1425             <literal>allM</literal>,
1426             <literal>anyM</literal>,
1427             <literal>forEach2</literal>,
1428             <literal>forEach2_</literal>,
1429             <literal>forEach3</literal> and
1430             <literal>forEach3_</literal>, and re-exports
1431             <literal>Control.Monad</literal>.
1432           </para>
1433         </listitem>
1434         <listitem>
1435           <para>
1436             The modules
1437             <literal>Monad.Cont</literal>,
1438             <literal>Monad.Except</literal>,
1439             <literal>Monad.Reader</literal>,
1440             <literal>Monad.State</literal> and
1441             <literal>Monad.Writer</literal> have been removed, but their
1442             monad transformer counterparts remain. If you want the
1443             monads then just transform the identity monad instead.
1444           </para>
1445         </listitem>
1446         <listitem>
1447           <para>
1448             The <literal>Monad.ExceptT</literal> module now also exports
1449             runExceptWith and unsafeRunExcept. It also now defines an
1450             instance <literal>ContM (ExceptT x m)</literal>.
1451           </para>
1452         </listitem>
1453         <listitem>
1454           <para>
1455             In <literal>Monad.Prelude</literal>, the
1456             <literal>get</literal> method of the
1457             <literal>ReaderM</literal> module has been renamed
1458             <literal>getR</literal>. The <literal>local</literal> method
1459             has been removed with a new class
1460             <literal>ReadUpdM</literal>, with methods
1461             <literal>updateR</literal> 
1462             and <literal>setR</literal>, taking its place.
1463             The <literal>letLocal</literal> function has also been removed.
1464           </para>
1465         </listitem>
1466         <listitem>
1467           <para>
1468             In <literal>Monad.Prelude</literal>,
1469             <literal>update</literal> has been made a method of
1470             <literal>StateM</literal>.
1471             The
1472             <literal>peek</literal> and <literal>poke</literal> methods
1473             have been renamed <literal>get</literal> and
1474             <literal>set</literal> respectively, and both have a default
1475             definition in terms of <literal>update</literal>.
1476             The <literal>poke_</literal> function has also been renamed
1477             <literal>set_</literal>.
1478           </para>
1479         </listitem>
1480         <listitem>
1481           <para>
1482             In <literal>Monad.Prelude</literal>,
1483             <literal>handle</literal> has been taken out of the
1484             <literal>ExceptM</literal> class and put into a new
1485             class <literal>HandlerM</literal> along with a new method
1486             <literal>checkExcept</literal>.
1487             There are also new functions <literal>withHandler</literal>
1488             and <literal>handle_</literal>.
1489           </para>
1490         </listitem>
1491         <listitem>
1492           <para>
1493             The <literal>TakeWriterM</literal> class has been renamed
1494             <literal>CollectorM</literal>, and rather than a single
1495             method <literal>takeFrom</literal> it has methods
1496             <literal>censor</literal> and <literal>collect</literal>
1497             with default definitions in terms of each other.
1498           </para>
1499         </listitem>
1500         <listitem>
1501           <para>
1502             <literal>Monad.Prelude</literal> defines a type
1503             <literal>Cont</literal> and functions
1504             <literal>returnCC</literal> and <literal>cJump</literal>.
1505           </para>
1506         </listitem>
1507         <listitem>
1508           <para>
1509             <literal>Monad.Prelude</literal> exports functions
1510             <literal>inReader</literal>,
1511             <literal>inWriter</literal>,
1512             <literal>inState</literal> and
1513             <literal>inExcept</literal>.
1514             These make it easy to turn a pure representation of an
1515             effectful computation into an actual computation.
1516           </para>
1517         </listitem>
1518         <listitem>
1519           <para>
1520             The <literal>zipWith3M</literal> and
1521             <literal>zipWith3M_</literal> functions have been removed
1522             from <literal>Monad.Prelude</literal>.
1523           </para>
1524         </listitem>
1525         <listitem>
1526           <para>
1527             <literal>Monad.Prelude</literal> now re-exports
1528             <literal>Monad.Combinators</literal> and
1529             <literal>Monad.ForEach</literal>, but no longer re-exports
1530             <literal>Monad</literal>.
1531           </para>
1532         </listitem>
1533         <listitem>
1534           <para>
1535             There is a new module <literal>Monad.Transformers</literal>
1536             which re-exports
1537             <literal>Monad.Id</literal>,
1538             <literal>Monad.ReaderT</literal>,
1539             <literal>Monad.WriterT</literal>,
1540             <literal>Monad.StateT</literal>,
1541             <literal>Monad.ExceptT</literal>,
1542             <literal>Monad.SearchT</literal> and
1543             <literal>Monad.ContT</literal>.
1544           </para>
1545         </listitem>
1546       </itemizedlist>
1547     </sect3>
1548
1549     <sect3>
1550       <title>mtl</title>
1551       <itemizedlist>
1552         <listitem>
1553           <para>
1554             No change (version 1.0).
1555           </para>
1556         </listitem>
1557       </itemizedlist>
1558     </sect3>
1559
1560     <sect3>
1561       <title>network</title>
1562       <itemizedlist>
1563         <listitem>
1564           <para>
1565             Version number 2.0 (was 1.0).
1566           </para>
1567         </listitem>
1568         <listitem>
1569           <para>
1570             <literal>Network.CGI</literal> has been removed; use the
1571             <literal>cgi</literal> package instead.
1572           </para>
1573         </listitem>
1574         <listitem>
1575           <para>
1576             <literal>Network.BSD</literal> no longer exports
1577             <literal>symlink</literal> or <literal>readlink</literal>;
1578             use
1579             <literal>System.Posix.Files.createSymbolicLink</literal> and
1580             <literal>System.Posix.Files.readSymbolicLink</literal>
1581             instead.
1582           </para>
1583         </listitem>
1584         <listitem>
1585           <para>
1586             <literal>Network.BSD</literal> now exports
1587             <literal>defaultProtocol</literal>.
1588           </para>
1589         </listitem>
1590         <listitem>
1591           <para>
1592             <literal>Network.Socket.SocketStatus</literal> now has a
1593             constructor <literal>ConvertedToHandle</literal> for sockets
1594             that have been converted to handles.
1595           </para>
1596         </listitem>
1597         <listitem>
1598           <para>
1599             <literal>Network.Socket.Family</literal> now has the
1600             following additional constructors:
1601             <literal>AF_NETROM</literal>,
1602             <literal>AF_BRIDGE</literal>,
1603             <literal>AF_ATMPVC</literal>,
1604             <literal>AF_ROSE</literal>,
1605             <literal>AF_NETBEUI</literal>,
1606             <literal>AF_SECURITY</literal>,
1607             <literal>AF_PACKET</literal>,
1608             <literal>AF_ASH</literal>,
1609             <literal>AF_ECONET</literal>,
1610             <literal>AF_ATMSVC</literal>,
1611             <literal>AF_IRDA</literal>,
1612             <literal>AF_PPPOX</literal>,
1613             <literal>AF_WANPIPE</literal> and
1614             <literal>AF_BLUETOOTH</literal>.
1615           </para>
1616         </listitem>
1617         <listitem>
1618           <para>
1619             In <literal>Network.URI</literal>,
1620             <literal>parseabsoluteURI</literal> has been deprecated with
1621             a new function <literal>parseAbsoluteURI</literal> taking
1622             its place.
1623           </para>
1624         </listitem>
1625       </itemizedlist>
1626     </sect3>
1627
1628     <sect3>
1629       <title>ObjectIO</title>
1630       <itemizedlist>
1631         <listitem>
1632           <para>
1633             No change (version 1.0).
1634           </para>
1635         </listitem>
1636       </itemizedlist>
1637     </sect3>
1638
1639     <sect3>
1640       <title>OpenAL</title>
1641       <itemizedlist>
1642         <listitem>
1643           <para>
1644             Version number 1.3 (was 1.2).
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>OpenGL</title>
1657       <itemizedlist>
1658         <listitem>
1659           <para>
1660             Version number 2.1 (was 2.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