1f4e48584af1492a03b4d21b4b6e2b5a197e1d0e
[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         <listitem>
710           <para>
711             The <literal>Text.Regex</literal> and
712             <literal>Text.Regex.Posix</literal> modules have been removed.
713             Instead, use the new <literal>regex-compat</literal> package
714             for a drop-in <literal>Text.Regex</literal> replacement, or
715             the new library in the new <literal>regex-posix</literal>
716             package.
717           </para>
718         </listitem>
719       </itemizedlist>
720     </sect3>
721
722     <sect3>
723       <title>Cabal</title>
724       <itemizedlist>
725         <listitem>
726           <para>
727             Version number 1.1.5 (was 1.1.4).
728           </para>
729         </listitem>
730         <listitem>
731           <para>
732             Support for JHC, symmetric to the support for the other
733             implementations, has been added throughout.
734           </para>
735         </listitem>
736         <listitem>
737           <para>
738             Support for object splitting and building in-place
739             has been added throughout.
740           </para>
741         </listitem>
742         <listitem>
743           <para>
744             Added a <filename>debianTemplate</filename> directory with
745             templates for building Debian packages from Cabal packages.
746           </para>
747         </listitem>
748         <listitem>
749           <para>
750             Added <filename>cabal-setup</filename>, a user interface to
751             building and installing Cabal packages.
752           </para>
753         </listitem>
754         <listitem>
755           <para>
756             Added <filename>cabal-install</filename>, an automated
757             installer for cabal packages.
758           </para>
759         </listitem>
760         <listitem>
761           <para>
762             There is now a <literal>Network.Hackage</literal> hierarchy
763             for code needed by hackage, the package server.
764           </para>
765         </listitem>
766         <listitem>
767           <para>
768             There are now modules
769             <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
770             for each of <literal>GHC</literal>, <literal>NHC</literal>,
771             <literal>Hugs</literal> and <literal>JHC</literal>.
772             The <literal>Distribution.Simple.Build</literal> and
773             <literal>Distribution.Simple.Install</literal> modules have
774             shrunk correspondingly.
775           </para>
776         </listitem>
777         <listitem>
778           <para>
779             <literal>Distribution.GetOpt</literal> is no longer a
780             visible module.
781           </para>
782         </listitem>
783         <listitem>
784           <para>
785             <literal>Distribution.Simple</literal> exports a function
786             <literal>defaultMainArgs</literal>, which is identical to
787             <literal>defaultMain</literal> except that the arguments are
788             given as a list of strings rather than being retrieved with
789             <literal>getArgs</literal>.
790           </para>
791         </listitem>
792         <listitem>
793           <para>
794             <literal>Distribution.Simple.Configure</literal>
795             no longer exports
796             <literal>LocalBuildInfo</literal>,
797             but does now export
798             <literal>configDependency</literal> and
799             <literal>configCompilerAux</literal>.
800           </para>
801         </listitem>
802         <listitem>
803           <para>
804             <literal>Distribution.Simple.LocalBuildInfo</literal> now
805             exports <literal>mkHaddockDir</literal>,
806             <literal>distPref</literal>,
807             <literal>srcPref</literal>,
808             <literal>autogenModulesDir</literal> and
809             <literal>mkIncludeDir</literal>.
810           </para>
811         </listitem>
812         <listitem>
813           <para>
814             <literal>Distribution.PackageDescription</literal> now
815             exports <literal>haddockName</literal>.
816           </para>
817         </listitem>
818         <listitem>
819           <para>
820             <literal>Distribution.Simple.Utils</literal> now exports
821             <literal>copyDirectoryRecursiveVerbose</literal>,
822             <literal>dirOf</literal>,
823             <literal>distPref</literal>,
824             <literal>haddockPref</literal> and
825             <literal>srcPref</literal>.
826             It no longer exports <literal>mkGHCiLibName</literal>.
827           </para>
828         </listitem>
829       </itemizedlist>
830     </sect3>
831
832     <sect3>
833       <title>haskell98</title>
834       <itemizedlist>
835         <listitem>
836           <para>
837             No change (version 1.0).
838           </para>
839         </listitem>
840       </itemizedlist>
841     </sect3>
842
843     <sect3>
844       <title>parsec</title>
845       <itemizedlist>
846         <listitem>
847           <para>
848             Version number 2.0 (was 1.0).
849           </para>
850         </listitem>
851         <listitem>
852           <para>
853             No other change.
854           </para>
855         </listitem>
856       </itemizedlist>
857     </sect3>
858
859     <sect3>
860       <title>readline</title>
861       <itemizedlist>
862         <listitem>
863           <para>
864             No change (version 1.0).
865           </para>
866         </listitem>
867       </itemizedlist>
868     </sect3>
869
870     <sect3>
871       <title>regex-base</title>
872       <itemizedlist>
873         <listitem>
874           <para>
875             Version 0.71.
876           </para>
877         </listitem>
878         <listitem>
879           <para>
880             New library that provides common functions for different
881             regex backends.
882           </para>
883         </listitem>
884       </itemizedlist>
885     </sect3>
886
887     <sect3>
888       <title>regex-compat</title>
889       <itemizedlist>
890         <listitem>
891           <para>
892             Version 0.71.
893           </para>
894         </listitem>
895         <listitem>
896           <para>
897             New package providing a replacement
898             <literal>Text.Regex</literal> module.
899           </para>
900         </listitem>
901       </itemizedlist>
902     </sect3>
903
904     <sect3>
905       <title>regex-posix</title>
906       <itemizedlist>
907         <listitem>
908           <para>
909             Version 0.71.
910           </para>
911         </listitem>
912         <listitem>
913           <para>
914             A new package providing POSIX regexes.
915           </para>
916         </listitem>
917       </itemizedlist>
918     </sect3>
919
920     <sect3>
921       <title>stm</title>
922       <itemizedlist>
923         <listitem>
924           <para>
925             Version number 2.0 (was 1.0).
926           </para>
927         </listitem>
928         <listitem>
929           <para>
930             A new module <literal>Control.Monad.STM</literal>
931             contains the
932             <literal>MonadPlus</literal> instance for
933             <literal>STM</literal> and the function
934             <literal>check</literal> (both used to be in
935             <literal>Control.Concurrent.STM</literal>).
936             It also re-exports
937             <literal>STM</literal>,
938             <literal>atomically</literal>,
939             <literal>retry</literal>,
940             <literal>orElse</literal> and
941             <literal>catchSTM</literal>.
942           </para>
943         </listitem>
944         <listitem>
945           <para>
946             There is a new module
947             <literal>Control.Sequential.STM</literal> for non-concurrent
948             transactions which nevertheless need to be atomic in the
949             face of exceptions.
950           </para>
951         </listitem>
952         <listitem>
953           <para>
954             A new module
955             <literal>Control.Concurrent.STM.TArray</literal> defines
956             <literal>TArray</literal>, a transactional array, and makes
957             it an instance of <literal>MArray</literal>.
958           </para>
959         </listitem>
960         <listitem>
961           <para>
962             <literal>Control.Concurrent.STM.TChan</literal> now provides
963             a function <literal>newTChanIO</literal>, which allows
964             <literal>TChan</literal>s to be created in the IO monad.
965             Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
966             provides <literal>newTMVarIO</literal> and
967             <literal>newEmptyTMVarIO</literal>, and
968             <literal>Control.Concurrent.STM.TVar</literal> exports
969             <literal>newTVarIO</literal>.
970           </para>
971         </listitem>
972         <listitem>
973           <para>
974             <literal>Control.Concurrent.STM.TVar</literal> exports
975             <literal>registerDelay</literal>.
976           </para>
977         </listitem>
978         <listitem>
979           <para>
980             The <literal>Control.Concurrent.STM</literal> module has been
981             updated to re-export all the new modules.
982           </para>
983         </listitem>
984       </itemizedlist>
985     </sect3>
986
987     <sect3>
988       <title>template-haskell</title>
989       <itemizedlist>
990         <listitem>
991           <para>
992             Version number 2.0 (was 1.0).
993           </para>
994         </listitem>
995         <listitem>
996           <para>
997             A <literal>Show</literal> instance is now derived for
998             <literal>Info</literal>, <literal>Fixity</literal> and
999             <literal>FixityDirection</literal> in
1000             <literal>Language.Haskell.TH.Syntax</literal>.
1001           </para>
1002         </listitem>
1003         <listitem>
1004           <para>
1005             In <literal>Language.Haskell.TH.Syntax</literal>, there is
1006             a type <literal>PkgName</literal> and functions
1007             <literal>mkPkgName</literal> and
1008             <literal>pkgString</literal>
1009             for dealing with package names.
1010           </para>
1011         </listitem>
1012         <listitem>
1013           <para>
1014             The <literal>patGE</literal> function in
1015             <literal>Language.Haskell.TH.Lib</literal> now takes the
1016             final expression separately to the list of statements
1017             rather than splitting it off itself.
1018           </para>
1019         </listitem>
1020       </itemizedlist>
1021     </sect3>
1022
1023     <sect3>
1024       <title>unix</title>
1025       <itemizedlist>
1026         <listitem>
1027           <para>
1028             No change (version 1.0).
1029           </para>
1030         </listitem>
1031       </itemizedlist>
1032     </sect3>
1033
1034     <sect3>
1035       <title>Win32</title>
1036       <itemizedlist>
1037         <listitem>
1038           <para>
1039             Version number 2.0 (was 1.0).
1040           </para>
1041         </listitem>
1042         <listitem>
1043           <para>
1044             Now maintained by Esa Ilari Vuokko.
1045           </para>
1046         </listitem>
1047         <listitem>
1048           <para>
1049             There is a new module
1050             <literal>System.Win32.Console</literal>
1051             providing an interface to the Windows Console API.
1052           </para>
1053         </listitem>
1054         <listitem>
1055           <para>
1056             There is a new module
1057             <literal>System.Win32.DebugApi</literal>
1058             providing an interface to the Windows DebugApi.
1059           </para>
1060         </listitem>
1061         <listitem>
1062           <para>
1063             There is a new module
1064             <literal>System.Win32.FileMapping</literal>
1065             for working with memory-mapped files.
1066           </para>
1067         </listitem>
1068         <listitem>
1069           <para>
1070             There is a new module
1071             <literal>System.Win32.SimpleMAPI</literal>
1072             for using the Windows mail API.
1073           </para>
1074         </listitem>
1075         <listitem>
1076           <para>
1077             There is a new module
1078             <literal>System.Win32.Time</literal>
1079             for using the Windows time API.
1080           </para>
1081         </listitem>
1082         <listitem>
1083           <para>
1084             <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1085             <literal>Graphics.Win32.Misc</literal> to
1086             <literal>System.Win32.Types</literal>.
1087           </para>
1088         </listitem>
1089         <listitem>
1090           <para>
1091             <literal>System.Win32.File</literal> has a new
1092             function <literal>getFileInformationByHandle</literal>
1093             and associated data types.
1094           </para>
1095         </listitem>
1096         <listitem>
1097           <para>
1098             <literal>System.Win32.Info</literal> has a new
1099             function <literal>getSystemInfo</literal> and associated
1100             data types.
1101           </para>
1102         </listitem>
1103         <listitem>
1104           <para>
1105             <literal>System.Win32.Process</literal> now has many more
1106             exports.
1107           </para>
1108         </listitem>
1109         <listitem>
1110           <para>
1111             <literal>System.Win32.Types</literal> has new types
1112             <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1113             and <literal>SIZE_T</literal>. It also has new helper
1114             functions <literal>ddwordToDwords</literal> and
1115             <literal>dwordsToDdword</literal> to split and combine
1116             ddwords into high and low components.
1117           </para>
1118         </listitem>
1119         <listitem>
1120           <para>
1121             <literal>System.Win32</literal> re-exports
1122             <literal>System.Win32.FileMapping</literal>,
1123             <literal>System.Win32.Time</literal>
1124             and <literal>System.Win32.Console</literal>.
1125           </para>
1126         </listitem>
1127         <listitem>
1128           <para>
1129             <literal>System.Win32</literal> no longer exports
1130             <literal>LCID</literal>,
1131             <literal>LANGID</literal>,
1132             <literal>SortID</literal>,
1133             <literal>SubLANGID</literal>,
1134             <literal>PrimaryLANGID</literal>,
1135             <literal>mAKELCID</literal>,
1136             <literal>lANGIDFROMLCID</literal>,
1137             <literal>sORTIDFROMLCID</literal>,
1138             <literal>mAKELANGID</literal>,
1139             <literal>pRIMARYLANGID</literal> or
1140             <literal>sUBLANGID</literal> from
1141             <literal>System.Win32.NLS</literal>.
1142           </para>
1143         </listitem>
1144       </itemizedlist>
1145     </sect3>
1146   </sect2>
1147
1148   <sect2>
1149     <title>Extra Libraries</title>
1150     <sect3>
1151       <title>ALUT</title>
1152       <itemizedlist>
1153         <listitem>
1154           <para>
1155             Version number 2.0 (was 1.0).
1156           </para>
1157         </listitem>
1158         <listitem>
1159           <para>
1160             <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1161             Its <literal>Phase</literal> and <literal>Duration</literal>
1162             exports are now exported by
1163             <literal>Sound.ALUT.Loaders</literal> and its
1164             <literal>helloWorld</literal>,
1165             <literal>sine</literal>,
1166             <literal>square</literal>,
1167             <literal>sawtooth</literal>,
1168             <literal>impulse</literal> and
1169             <literal>whiteNoise</literal>
1170             exports are now constructors of the
1171             <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1172             datatype.
1173           </para>
1174         </listitem>
1175       </itemizedlist>
1176     </sect3>
1177
1178     <sect3>
1179       <title>arrows</title>
1180       <itemizedlist>
1181         <listitem>
1182           <para>
1183             Version number remains 0.1.
1184           </para>
1185         </listitem>
1186         <listitem>
1187           <para>
1188             <literal>Control.Sequence</literal> has been removed in
1189             favour of the new <literal>Control.Applicative</literal>
1190             module in <literal>base</literal>.
1191           </para>
1192         </listitem>
1193       </itemizedlist>
1194     </sect3>
1195
1196     <sect3>
1197       <title>cgi</title>
1198       <itemizedlist>
1199         <listitem>
1200           <para>
1201             Version 2006.8.14.
1202           </para>
1203         </listitem>
1204         <listitem>
1205           <para>
1206             <literal>cgi</literal> is a new package, developing on
1207             what used to be <literal>Network.CGI</literal> in the
1208             <literal>network</literal> package.
1209           </para>
1210         </listitem>
1211       </itemizedlist>
1212     </sect3>
1213
1214     <sect3>
1215       <title>fgl</title>
1216       <itemizedlist>
1217         <listitem>
1218           <para>
1219             Version number 5.3 (was 5.2).
1220           </para>
1221         </listitem>
1222         <listitem>
1223           <para>
1224             <literal>Data.Graph.Inductive.Graph</literal> no longer
1225             exports <literal>UContext</literal>.
1226           </para>
1227         </listitem>
1228         <listitem>
1229           <para>
1230             <literal>Data.Graph.Inductive.Graph</literal> now exports
1231             <literal>delLEdge</literal>.
1232           </para>
1233         </listitem>
1234       </itemizedlist>
1235     </sect3>
1236
1237     <sect3>
1238       <title>GLUT</title>
1239       <itemizedlist>
1240         <listitem>
1241           <para>
1242             Version number remains 2.0.
1243           </para>
1244         </listitem>
1245         <listitem>
1246           <para>
1247             In <literal>Graphics.UI.GLUT.Initialization</literal>,
1248             <literal>DisplayMode</literal> has a new constructor
1249             <literal>WithAuxBuffers</literal> and
1250             <literal>DisplayCapability</literal> has a new constructor
1251             <literal>DisplayAux</literal>. These represent freeglut-only
1252             features.
1253           </para>
1254         </listitem>
1255         <listitem>
1256           <para>
1257             There are new examples in
1258             <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1259             <filename>RedBook/AAIndex.hs</filename>,
1260             <filename>RedBook/AARGB.hs</filename>,
1261             <filename>RedBook/AccAnti.hs</filename>,
1262             <filename>RedBook/AccPersp.hs</filename>,
1263             <filename>RedBook/Alpha3D.hs</filename>,
1264             <filename>RedBook/DOF.hs</filename>,
1265             <filename>RedBook/FogIndex.hs</filename>,
1266             <filename>RedBook/Multisamp.hs</filename>,
1267             <filename>RedBook/PointP.hs</filename>,
1268             <filename>RedBook/PolyOff.hs</filename>,
1269             <filename>RedBook/Stencil.hs</filename>,
1270             <filename>RedBook/Stroke.hs</filename> and
1271             <filename>RedBook/Torus.hs</filename>,
1272             and the examples in
1273             <filename>RedBook/Font.hs</filename> and
1274             <filename>RedBook/Histogram.hs</filename> have been
1275             improved.
1276           </para>
1277         </listitem>
1278       </itemizedlist>
1279     </sect3>
1280
1281     <sect3>
1282       <title>haskell-src</title>
1283       <itemizedlist>
1284         <listitem>
1285           <para>
1286             No change (version 1.0).
1287           </para>
1288         </listitem>
1289       </itemizedlist>
1290     </sect3>
1291
1292     <sect3>
1293       <title>HaXml</title>
1294       <itemizedlist>
1295         <listitem>
1296           <para>
1297             Version number 1.16 (was 1.12.1).
1298           </para>
1299         </listitem>
1300         <listitem>
1301           <para>
1302             There are now lazy versions of the parsing modules
1303             <literal>Text.XML.HaXml.ParseLazy</literal>
1304             (a lazy non-validating XML parser) and
1305             <literal>Text.XML.HaXml.Html.ParseLazy</literal>
1306             (a lazy HTML parser).
1307           </para>
1308         </listitem>
1309         <listitem>
1310           <para>
1311             There are lazy versions of two of the example tools,
1312             <literal>CanonicaliseLazy</literal> and
1313             <literal>XtractLazy</literal>.
1314           </para>
1315         </listitem>
1316         <listitem>
1317           <para>
1318             <literal>Text.XML.HaXml.Haskell2Xml</literal> and
1319             <literal>Text.XML.HaXml.Xml2Haskell</literal> have been
1320             removed, with <literal>Text.XML.HaXml.XmlContent</literal>
1321             replacing them.
1322             You must now use <literal>{-! derive : XmlContent !-}</literal>
1323             rather than <literal>{-! derive :Haskell2Xml !-}</literal>
1324             to have instances derived for your classes.
1325           </para>
1326         </listitem>
1327         <listitem>
1328           <para>
1329             Now also provides the
1330             <literal>Text.ParserCombinators.HuttonMeijer</literal>
1331             monadic parser combinator library.
1332           </para>
1333         </listitem>
1334         <listitem>
1335           <para>
1336             Provides another new set of parser combinators, as well as a lazy
1337             variant, a variant that carries around state, and a
1338             variant that does both. The modules are
1339             <literal>Text.ParserCombinators.Poly</literal>,
1340             <literal>Text.ParserCombinators.PolyLazy</literal>,
1341             <literal>Text.ParserCombinators.PolyState</literal> and
1342             <literal>Text.ParserCombinators.PolyStateLazy</literal>
1343             respectively.
1344             It also provides
1345             <literal>Text.ParserCombinators.TextParser</literal>, which
1346             is the <literal>Poly</literal> parser combinators
1347             specialised for strings.
1348           </para>
1349         </listitem>
1350         <listitem>
1351           <para>
1352             Now provides a SAX-like parser in
1353             <literal>Text.XML.HaXml.SAX</literal>.
1354           </para>
1355         </listitem>
1356         <listitem>
1357           <para>
1358             Now provides a module
1359             <literal>Text.XML.HaXml.TypeMapping</literal>, which
1360             defines an explicit representation for Haskell types.
1361             This allows generation of a DTD from a Haskell value.
1362           </para>
1363         </listitem>
1364         <listitem>
1365           <para>
1366             The <literal>Posn</literal> type has been pulled out from
1367             <literal>Text.XML.HaXml.Lex</literal> into its own module
1368             <literal>Text.XML.HaXml.Posn</literal>. Some helper
1369             functions are also exported.
1370           </para>
1371         </listitem>
1372         <listitem>
1373           <para>
1374             The APIs to the pre-existing modules have also substantially
1375             changed.
1376           </para>
1377         </listitem>
1378       </itemizedlist>
1379     </sect3>
1380
1381     <sect3>
1382       <title>HGL</title>
1383       <itemizedlist>
1384         <listitem>
1385           <para>
1386             No change (version 3.1).
1387           </para>
1388         </listitem>
1389       </itemizedlist>
1390     </sect3>
1391
1392     <sect3>
1393       <title>html</title>
1394       <itemizedlist>
1395         <listitem>
1396           <para>
1397             Version 1.0.
1398           </para>
1399         </listitem>
1400         <listitem>
1401           <para>
1402             <literal>html</literal> is a new package, developing on
1403             what used to be <literal>Text.Html</literal> and
1404             <literal>Text.Html.BlockTable</literal> in the
1405             <literal>base</literal> package.
1406           </para>
1407         </listitem>
1408         <listitem>
1409           <para>
1410             <literal>Text.Html.BlockTable</literal> exports a new
1411             function <literal>empty</literal>.
1412           </para>
1413         </listitem>
1414       </itemizedlist>
1415     </sect3>
1416
1417     <sect3>
1418       <title>HUnit</title>
1419       <itemizedlist>
1420         <listitem>
1421           <para>
1422             No change (version 1.1).
1423           </para>
1424         </listitem>
1425       </itemizedlist>
1426     </sect3>
1427
1428     <sect3>
1429       <title>Japi</title>
1430       <itemizedlist>
1431         <listitem>
1432           <para>
1433             No change.
1434           </para>
1435         </listitem>
1436       </itemizedlist>
1437     </sect3>
1438
1439     <sect3>
1440       <title>monads</title>
1441       <itemizedlist>
1442         <listitem>
1443           <para>
1444             Version number 2.0.1 (was 1.1).
1445           </para>
1446         </listitem>
1447         <listitem>
1448           <para>
1449             In <literal>Monad.Id</literal>, <literal>run</literal> has
1450             been renamed <literal>runId</literal>.
1451           </para>
1452         </listitem>
1453         <listitem>
1454           <para>
1455             The <literal>Monad.BackT</literal> module has been removed;
1456             use the new <literal>Monad.SearchT</literal> module instead.
1457           </para>
1458         </listitem>
1459         <listitem>
1460           <para>
1461             There is a new module <literal>Monad.ForEach</literal>
1462             containing a class <literal>ForEach</literal>, for
1463             applying a monadic function to each element in a container.
1464             It provides instances for <literal>[]</literal> and
1465             <literal>Maybe</literal>.
1466           </para>
1467         </listitem>
1468         <listitem>
1469           <para>
1470             The following combinators have been moved from
1471             <literal>Monad.Prelude</literal> to a new module
1472             <literal>Monad.Combinators</literal>:
1473             <literal>(@@)</literal>,
1474             <literal>(#)</literal>,
1475             <literal>(&lt;#)</literal>,
1476             <literal>(&lt;##)</literal>,
1477             <literal>concatMap</literal> and
1478             <literal>partitionM</literal>.
1479             <literal>Monad.Combinators</literal> also defines the
1480             following new combinators:
1481             <literal>ifM</literal>,
1482             <literal>whenM</literal>,
1483             <literal>andM</literal>,
1484             <literal>orM</literal>,
1485             <literal>allM</literal>,
1486             <literal>anyM</literal>,
1487             <literal>forEach2</literal>,
1488             <literal>forEach2_</literal>,
1489             <literal>forEach3</literal> and
1490             <literal>forEach3_</literal>, and re-exports
1491             <literal>Control.Monad</literal>.
1492           </para>
1493         </listitem>
1494         <listitem>
1495           <para>
1496             The modules
1497             <literal>Monad.Cont</literal>,
1498             <literal>Monad.Except</literal>,
1499             <literal>Monad.Reader</literal>,
1500             <literal>Monad.State</literal> and
1501             <literal>Monad.Writer</literal> have been removed, but their
1502             monad transformer counterparts remain. If you want the
1503             monads then just transform the identity monad instead.
1504           </para>
1505         </listitem>
1506         <listitem>
1507           <para>
1508             The <literal>Monad.ExceptT</literal> module now also exports
1509             runExceptWith and unsafeRunExcept. It also now defines an
1510             instance <literal>ContM (ExceptT x m)</literal>.
1511           </para>
1512         </listitem>
1513         <listitem>
1514           <para>
1515             In <literal>Monad.Prelude</literal>, the
1516             <literal>get</literal> method of the
1517             <literal>ReaderM</literal> module has been renamed
1518             <literal>getR</literal>. The <literal>local</literal> method
1519             has been removed with a new class
1520             <literal>ReadUpdM</literal>, with methods
1521             <literal>updateR</literal> 
1522             and <literal>setR</literal>, taking its place.
1523             The <literal>letLocal</literal> function has also been removed.
1524           </para>
1525         </listitem>
1526         <listitem>
1527           <para>
1528             In <literal>Monad.Prelude</literal>,
1529             <literal>update</literal> has been made a method of
1530             <literal>StateM</literal>.
1531             The
1532             <literal>peek</literal> and <literal>poke</literal> methods
1533             have been renamed <literal>get</literal> and
1534             <literal>set</literal> respectively, and both have a default
1535             definition in terms of <literal>update</literal>.
1536             The <literal>poke_</literal> function has also been renamed
1537             <literal>set_</literal>.
1538           </para>
1539         </listitem>
1540         <listitem>
1541           <para>
1542             In <literal>Monad.Prelude</literal>,
1543             <literal>handle</literal> has been taken out of the
1544             <literal>ExceptM</literal> class and put into a new
1545             class <literal>HandlerM</literal> along with a new method
1546             <literal>checkExcept</literal>.
1547             There are also new functions <literal>withHandler</literal>
1548             and <literal>handle_</literal>.
1549           </para>
1550         </listitem>
1551         <listitem>
1552           <para>
1553             The <literal>TakeWriterM</literal> class has been renamed
1554             <literal>CollectorM</literal>, and rather than a single
1555             method <literal>takeFrom</literal> it has methods
1556             <literal>censor</literal> and <literal>collect</literal>
1557             with default definitions in terms of each other.
1558           </para>
1559         </listitem>
1560         <listitem>
1561           <para>
1562             <literal>Monad.Prelude</literal> defines a type
1563             <literal>Cont</literal> and functions
1564             <literal>returnCC</literal> and <literal>cJump</literal>.
1565           </para>
1566         </listitem>
1567         <listitem>
1568           <para>
1569             <literal>Monad.Prelude</literal> exports functions
1570             <literal>inReader</literal>,
1571             <literal>inWriter</literal>,
1572             <literal>inState</literal> and
1573             <literal>inExcept</literal>.
1574             These make it easy to turn a pure representation of an
1575             effectful computation into an actual computation.
1576           </para>
1577         </listitem>
1578         <listitem>
1579           <para>
1580             The <literal>zipWith3M</literal> and
1581             <literal>zipWith3M_</literal> functions have been removed
1582             from <literal>Monad.Prelude</literal>.
1583           </para>
1584         </listitem>
1585         <listitem>
1586           <para>
1587             <literal>Monad.Prelude</literal> now re-exports
1588             <literal>Monad.Combinators</literal> and
1589             <literal>Monad.ForEach</literal>, but no longer re-exports
1590             <literal>Monad</literal>.
1591           </para>
1592         </listitem>
1593         <listitem>
1594           <para>
1595             There is a new module <literal>Monad.Transformers</literal>
1596             which re-exports
1597             <literal>Monad.Id</literal>,
1598             <literal>Monad.ReaderT</literal>,
1599             <literal>Monad.WriterT</literal>,
1600             <literal>Monad.StateT</literal>,
1601             <literal>Monad.ExceptT</literal>,
1602             <literal>Monad.SearchT</literal> and
1603             <literal>Monad.ContT</literal>.
1604           </para>
1605         </listitem>
1606       </itemizedlist>
1607     </sect3>
1608
1609     <sect3>
1610       <title>mtl</title>
1611       <itemizedlist>
1612         <listitem>
1613           <para>
1614             No change (version 1.0).
1615           </para>
1616         </listitem>
1617       </itemizedlist>
1618     </sect3>
1619
1620     <sect3>
1621       <title>network</title>
1622       <itemizedlist>
1623         <listitem>
1624           <para>
1625             Version number 2.0 (was 1.0).
1626           </para>
1627         </listitem>
1628         <listitem>
1629           <para>
1630             <literal>Network.CGI</literal> has been removed; use the
1631             <literal>cgi</literal> package instead.
1632           </para>
1633         </listitem>
1634         <listitem>
1635           <para>
1636             <literal>Network.BSD</literal> no longer exports
1637             <literal>symlink</literal> or <literal>readlink</literal>;
1638             use
1639             <literal>System.Posix.Files.createSymbolicLink</literal> and
1640             <literal>System.Posix.Files.readSymbolicLink</literal>
1641             instead.
1642           </para>
1643         </listitem>
1644         <listitem>
1645           <para>
1646             <literal>Network.BSD</literal> now exports
1647             <literal>defaultProtocol</literal>.
1648           </para>
1649         </listitem>
1650         <listitem>
1651           <para>
1652             <literal>Network.Socket.SocketStatus</literal> now has a
1653             constructor <literal>ConvertedToHandle</literal> for sockets
1654             that have been converted to handles.
1655           </para>
1656         </listitem>
1657         <listitem>
1658           <para>
1659             <literal>Network.Socket.Family</literal> now has the
1660             following additional constructors:
1661             <literal>AF_NETROM</literal>,
1662             <literal>AF_BRIDGE</literal>,
1663             <literal>AF_ATMPVC</literal>,
1664             <literal>AF_ROSE</literal>,
1665             <literal>AF_NETBEUI</literal>,
1666             <literal>AF_SECURITY</literal>,
1667             <literal>AF_PACKET</literal>,
1668             <literal>AF_ASH</literal>,
1669             <literal>AF_ECONET</literal>,
1670             <literal>AF_ATMSVC</literal>,
1671             <literal>AF_IRDA</literal>,
1672             <literal>AF_PPPOX</literal>,
1673             <literal>AF_WANPIPE</literal> and
1674             <literal>AF_BLUETOOTH</literal>.
1675           </para>
1676         </listitem>
1677         <listitem>
1678           <para>
1679             In <literal>Network.URI</literal>,
1680             <literal>parseabsoluteURI</literal> has been deprecated with
1681             a new function <literal>parseAbsoluteURI</literal> taking
1682             its place.
1683           </para>
1684         </listitem>
1685       </itemizedlist>
1686     </sect3>
1687
1688     <sect3>
1689       <title>ObjectIO</title>
1690       <itemizedlist>
1691         <listitem>
1692           <para>
1693             No change (version 1.0).
1694           </para>
1695         </listitem>
1696       </itemizedlist>
1697     </sect3>
1698
1699     <sect3>
1700       <title>OpenAL</title>
1701       <itemizedlist>
1702         <listitem>
1703           <para>
1704             Version number 1.3 (was 1.2).
1705           </para>
1706         </listitem>
1707         <listitem>
1708           <para>
1709             No other change.
1710           </para>
1711         </listitem>
1712       </itemizedlist>
1713     </sect3>
1714
1715     <sect3>
1716       <title>OpenGL</title>
1717       <itemizedlist>
1718         <listitem>
1719           <para>
1720             Version number 2.1 (was 2.0).
1721           </para>
1722         </listitem>
1723         <listitem>
1724           <para>
1725             No other change.
1726           </para>
1727         </listitem>
1728       </itemizedlist>
1729     </sect3>
1730
1731     <sect3>
1732       <title>QuickCheck</title>
1733       <itemizedlist>
1734         <listitem>
1735           <para>
1736             No change (version 1.0).
1737           </para>
1738         </listitem>
1739       </itemizedlist>
1740     </sect3>
1741
1742     <sect3>
1743       <title>time</title>
1744       <itemizedlist>
1745         <listitem>
1746           <para>
1747             Version 1.0.
1748           </para>
1749         </listitem>
1750         <listitem>
1751           <para>
1752             <literal>time</literal> is a new package, for dealing with
1753             dates, times and time intervals.
1754           </para>
1755         </listitem>
1756       </itemizedlist>
1757     </sect3>
1758
1759     <sect3>
1760       <title>X11</title>
1761       <itemizedlist>
1762         <listitem>
1763           <para>
1764             Version number remains 1.1.
1765           </para>
1766         </listitem>
1767         <listitem>
1768           <para>
1769             In <literal>Graphics.X11.Xlib.Types</literal>,
1770             <literal>XGCValues</literal> has been renamed
1771             <literal>GCValues</literal> and
1772             <literal>XSetWindowAttributes</literal> has been renamed
1773             <literal>SetWindowAttributes</literal>.
1774           </para>
1775         </listitem>
1776         <listitem>
1777           <para>
1778             In <literal>Graphics.X11.Xlib.Misc</literal>,
1779             <literal>allocaXSetWindowAttributes</literal> has been
1780             renamed <literal>allocaSetWindowAttributes</literal>.
1781           </para>
1782         </listitem>
1783         <listitem>
1784           <para>
1785             The <literal>FontStruct</literal> type has moved from
1786             <literal>Graphics.X11.Xlib.Types</literal> to
1787             <literal>Graphics.X11.Xlib.Font</literal>.
1788           </para>
1789         </listitem>
1790         <listitem>
1791           <para>
1792             The
1793             <literal>Point</literal>,
1794             <literal>Rectangle</literal>,
1795             <literal>Arc</literal>,
1796             <literal>Segment</literal> and
1797             <literal>Color</literal> types in
1798             <literal>Graphics.X11.Xlib.Types</literal>
1799             are now proper datatypes rather than synonyms for tuples.
1800             They all have a <literal>Storable</literal> instance.
1801           </para>
1802         </listitem>
1803         <listitem>
1804           <para>
1805             The <literal>Byte</literal> and <literal>Short</literal>
1806             types from <literal>Graphics.X11.Xlib.Types</literal> have
1807             been removed.
1808             The following type synonyms, which had already been marked
1809             &quot;Backwards compatibility&quot;, have also been removed:
1810             <literal>ListPoint</literal>,
1811             <literal>ListRectangle</literal>,
1812             <literal>ListArc</literal>,
1813             <literal>ListSegment</literal> and
1814             <literal>ListColor</literal>.
1815           </para>
1816         </listitem>
1817         <listitem>
1818           <para>
1819             <literal>Eq</literal>,
1820             <literal>Ord</literal>,
1821             <literal>Show</literal>,
1822             <literal>Typeable</literal> and
1823             <literal>Data</literal> are now derived for:
1824             <literal>XEvent</literal>,
1825             <literal>FdSet</literal> and
1826             <literal>TimeZone</literal> in
1827             <literal>Graphics.X11.Xlib.Event</literal>,
1828             <literal>FontStruct</literal> in
1829             <literal>Graphics.X11.Xlib.Font</literal>,
1830             <literal>XErrorEvent</literal>,
1831             <literal>XComposeStatus</literal> and
1832             <literal>XTextProperty</literal> in
1833             <literal>Graphics.X11.Xlib.Misc</literal>,
1834             <literal>Region</literal> in
1835             <literal>Graphics.X11.Xlib.Region</literal>,
1836             <literal>Display</literal>,
1837             <literal>Screen</literal>,
1838             <literal>Visual</literal>,
1839             <literal>GC</literal>,
1840             <literal>GCValues</literal>,
1841             <literal>SetWindowAttributes</literal>,
1842             <literal>Point</literal>,
1843             <literal>Rectangle</literal>,
1844             <literal>Arc</literal>,
1845             <literal>Segment</literal> and
1846             <literal>Color</literal> in
1847             <literal>Graphics.X11.Xlib.Types</literal>.
1848           </para>
1849         </listitem>
1850       </itemizedlist>
1851     </sect3>
1852
1853     <sect3>
1854       <title>xhtml</title>
1855       <itemizedlist>
1856         <listitem>
1857           <para>
1858             Version 2006.8.14.
1859           </para>
1860         </listitem>
1861         <listitem>
1862           <para>
1863             <literal>xhtml</literal> is a new package, developing on
1864             what used to be <literal>Text.Html</literal> and
1865             <literal>Text.Html.BlockTable</literal> in the
1866             <literal>base</literal> package.
1867           </para>
1868         </listitem>
1869       </itemizedlist>
1870     </sect3>
1871   </sect2>
1872
1873   <sect2>
1874     <title>Internal changes</title>
1875     <itemizedlist>
1876       <listitem>
1877         <para>
1878           GHC development now has its own integrated
1879           <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1880           tracker</ulink>.
1881         </para>
1882       </listitem>
1883       <listitem>
1884         <para>
1885           GHC has now moved to darcs. See
1886           <ulink
1887           url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1888           wiki</ulink> for more details. The sources have moved around a
1889           bit within the tree as a result, most notably the GHC sources
1890           are no longer kept within a <filename>ghc/</filename>
1891           subdirectory.
1892         </para>
1893       </listitem>
1894       <listitem>
1895         <para>
1896           The native code generator is now capable of compiling loops,
1897           which gets us a big step closer to being able to compile
1898           entirely without gcc on well-supported arches.
1899         </para>
1900       </listitem>
1901     </itemizedlist>
1902   </sect2>
1903 </sect1>
1904