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