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