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