f1d1ed5c7b81d932abaf2d2cc780e78b59d7bf4e
[ghc-hetmet.git] / docs / users_guide / 6.12.1-notes.xml
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-6-12-1">
3   <title>Release notes for version 6.12.1</title>
4
5   <para>
6     The significant changes to the various parts of the compiler are
7     listed in the following sections. There have also been numerous bug
8     fixes and performance improvements over the 6.10 branch.
9   </para>
10
11   <sect2>
12     <title>Language changes</title>
13     <itemizedlist>
14       <listitem>
15         <para>
16           The new <literal>TupleSections</literal> language extension
17           enables tuple sections, such as <literal>(, True)</literal>.
18           See <xref linkend="tuple-sections" /> for more information.
19         </para>
20       </listitem>
21
22       <listitem>
23         <para>
24           The new <literal>MonoLocalBinds</literal> language extension
25           disables type variable generalisation for bindings in
26           <literal>let</literal> and <literal>where</literal> clauses.
27         </para>
28       </listitem>
29
30       <listitem>
31         <para>
32           The new <literal>DeriveFunctor</literal>,
33           <literal>DeriveFoldable</literal> and
34           <literal>DeriveTraversable</literal> language extensions
35           enable deriving for the respective type classes.
36           See <xref linkend="deriving-typeable" /> for more information.
37         </para>
38       </listitem>
39
40       <listitem>
41         <para>
42           The new <literal>NoNPlusKPatterns</literal> language extension
43           disables <literal>n+k</literal> patterns.
44           See <xref linkend="n-k-patterns" /> for more information.
45         </para>
46       </listitem>
47
48       <listitem>
49         <para>
50           Some improvements have been made to record puns:
51         </para>
52         <itemizedlist>
53           <listitem>
54             <para>
55               <literal>C { A.a }</literal> now works, expanding to
56               <literal>C { A.a = a }</literal>.
57             </para>
58           </listitem>
59
60           <listitem>
61             <para>
62               <literal>-fwarn-unused-matches</literal> no longer
63               warns about bindings introduced by
64               <literal>f (C {..}) = x</literal>.
65             </para>
66           </listitem>
67
68           <listitem>
69             <para>
70               The <literal>RecordWildCards</literal> language
71               extension implies
72               <literal>DisambiguateRecordFields</literal>.
73             </para>
74           </listitem>
75         </itemizedlist>
76       </listitem>
77
78       <listitem>
79         <para>
80           Declarations such as
81         </para>
82 <programlisting>
83 data T a where
84     MkT :: forall a. Eq a => { x,y :: !a } -> T a
85 </programlisting>
86         <para>
87           are now only accepted if the extension
88           <literal>TypeOperators</literal> is on.
89         </para>
90       </listitem>
91
92       <listitem>
93         <para>
94           It is now possible to define GADT records with class
95           constraints. The syntax is:
96         </para>
97 <programlisting>
98 data T a where
99     MkT :: forall a. Eq a => { x,y :: !a } -> T a
100 </programlisting>
101       </listitem>
102
103       <listitem>
104         <para>
105           You can now list multiple GADT constructors with the same type,
106           e.g.:
107         </para>
108 <programlisting>
109 data T where
110     A, B :: T
111     C :: Int -> T
112 </programlisting>
113       </listitem>
114
115       <listitem>
116         <para>
117           It is now possible to use GADT syntax for data families:
118         </para>
119 <programlisting>
120 data instance T [a] where
121     T1 :: a -> T [a]
122 </programlisting>
123         <para>
124           and make data instances be GADTs:
125         </para>
126 <programlisting>
127 data instance T [a] where
128     T1 :: Int -> T [Int]
129     T2 :: a -> b -> T [(a,b)]
130 </programlisting>
131       </listitem>
132
133       <listitem>
134         <para>
135           Record updates can now be used with datatypes containing
136           existential type variables, provided the fields being altered
137           do not mention the existential types.
138         </para>
139       </listitem>
140
141       <listitem>
142         <para>
143           The <literal>ImpredicativeTypes</literal> extension now imples
144           the <literal>RankNTypes</literal> extension.
145         </para>
146       </listitem>
147
148       <listitem>
149         <para>
150           The <literal>ImpredicativeTypes</literal> extension is no
151           longer enabled by <literal>-fglasgow-exts</literal>.
152         </para>
153       </listitem>
154
155       <listitem>
156         <para>
157           You can now give multi-line <literal>DEPRECATED</literal> and
158           <literal>WARNING</literal> pragmas:
159         </para>
160 <programlisting>
161 {-# DEPRECATED defaultUserHooks
162      ["Use simpleUserHooks or autoconfUserHooks, unless you need Cabal-1.2"
163      , "compatibility in which case you must stick with defaultUserHooks"]
164   #-}
165 </programlisting>
166       </listitem>
167
168       <listitem>
169         <para>
170           The <literal>-#include</literal> flag and
171           <literal>INCLUDE</literal> pragma are now deprecated and
172           ignored.  Since version 6.10.1, GHC has generated its own C
173           prototypes for foreign calls, rather than relying on
174           prototypes from C header files.
175         </para>
176       </listitem>
177
178       <listitem>
179         <para>
180           The <literal>threadsafe</literal> foreign import safety level
181           is now deprecated; use <literal>safe</literal> instead.
182         </para>
183       </listitem>
184
185       <listitem>
186         <para>
187           There is a new FFI calling convention called
188           <literal>prim</literal>, which allows calling C-- functions
189           (see <xref linkend="ffi-prim" />).
190           Most users are not expected to need this.
191         </para>
192       </listitem>
193     </itemizedlist>
194   </sect2>
195
196   <sect2>
197     <title>Warnings</title>
198     <itemizedlist>
199       <listitem>
200         <para>
201           A warning is now emitted if an unlifted type is bound in a
202           lazy pattern (in <literal>let</literal> or
203           <literal>where</literal> clause, or in an irrefutable pattern)
204           unless it is inside a bang pattern.
205           This warning is controlled by the
206           <literal>-fwarn-lazy-unlifted-bindings</literal> flag.
207           In a future version of GHC this will be an error.
208         </para>
209       </listitem>
210
211       <listitem>
212         <para>
213           There are two new warnings if a monadic result of type other than
214           <literal>m ()</literal> is used in a <literal>do</literal>
215           block, but its result is not bound.
216           The flags <literal>-fwarn-unused-do-bind</literal>
217           and <literal>-fwarn-wrong-do-bind</literal> control
218           these warnings (see <xref linkend="options-sanity" />).
219         </para>
220       </listitem>
221
222       <listitem>
223         <para>
224           The new flag <literal>-fwarn-dodgy-exports</literal> controls
225           whether an error is given for exporting a type synonym as
226           <literal>T(..)</literal>.
227         </para>
228       </listitem>
229
230       <listitem>
231         <para>
232           Name shadowing warnings are no longer given for variable names
233           beginning with an underscore.
234         </para>
235       </listitem>
236
237       <listitem>
238         <para>
239           When <literal>-Werror</literal> is given, we now pass
240           <literal>-Werror</literal> to <literal>cpp</literal>.
241         </para>
242       </listitem>
243     </itemizedlist>
244   </sect2>
245
246   <sect2>
247     <title>Runtime system</title>
248
249     <para>The following options are all described in
250       <xref linkend="rts-options-gc" />.</para>
251
252     <itemizedlist>
253       <listitem>
254         <para>
255           The flag <literal>+RTS -N</literal> now automatically
256           determines how many threads to use, based on the number
257           of CPUs in your machine.
258         </para>
259       </listitem>
260
261       <listitem>
262         <para>
263           The parallel GC now uses the same threads as the mutator,
264           with the consequence that you can no longer select a
265           different number of threads to use for GC.
266           The <option>-g<replaceable>n</replaceable></option> RTS
267           option has been removed, except that <option>-g1</option> is
268           still accepted for backwards compatibility.
269         </para>
270
271         <para>
272           The new flag
273           <literal>+RTS -qg<replaceable>gen</replaceable></literal> sets
274           the minimum generation for which parallel garbage collection
275           is used.  Defaults to 1.  The flag <literal>-qg</literal> on
276           its own disables parallel GC.
277         </para>
278       </listitem>
279
280       <listitem>
281         <para>
282           The new flag <literal>+RTS -qb<replaceable>gen</replaceable></literal>
283           controls load balancing in the parallel GC.
284         </para>
285       </listitem>
286
287       <listitem>
288         <para>
289           The new flag <literal>+RTS -qa</literal>
290           uses the OS to set thread affinity (experimental).
291         </para>
292       </listitem>
293
294       <listitem>
295         <para>
296           If you link with the <literal>-eventlog</literal> flag, then
297           the new flag <literal>+RTS -l</literal> generates
298           <literal><replaceable>prog</replaceable>.eventlog</literal>
299           files, which tools such as ThreadScope can use to show the
300           behaviour of your program (see <xref linkend="rts-eventlog" />). The
301           <literal>+RTS -D><replaceable>x</replaceable></literal> output
302           is also sent to the eventlog file if this option is enabled.
303           The <literal>+RTS -v</literal> flag sends eventlog data to
304           stderr instead.
305         </para>
306       </listitem>
307
308       <listitem>
309         <para>
310           There is a new statistic in the <literal>+RTS -s</literal> output:
311         </para>
312 <programlisting>
313 SPARKS: 1430 (2 converted, 1427 pruned)
314 </programlisting>
315         <para>
316           This tells you how many sparks (requests for parallel
317           execution, caused by calls to <literal>par</literal>) were
318           created, how many were actually evaluated in parallel
319           (converted), and how many were found to be already evaluated
320           and were thus discarded (pruned). Any unaccounted for sparks
321           are simply discarded at the end of evaluation.
322         </para>
323       </listitem>
324     </itemizedlist>
325   </sect2>
326
327   <sect2>
328     <title>Build system</title>
329     <itemizedlist>
330       <listitem>
331         <para>
332           We now require GHC >= 6.8 to build.
333         </para>
334       </listitem>
335
336       <listitem>
337         <para>
338           We now require that gcc is >= 3.0.
339         </para>
340       </listitem>
341
342       <listitem>
343         <para>
344           In order to generate the parsers, happy >= 1.16 is now
345           required. The parsers are pre-generated in the source tarball,
346           so most users will not need Happy.
347         </para>
348       </listitem>
349
350       <listitem>
351         <para>
352           It is now possible to build GHC with a simple, BSD-licensed
353           Haskell implementation of Integer, instead of the
354           implementation on top of GMP. To do so, set
355           <literal>INTEGER_LIBRARY</literal> to
356           <literal>integer-simple</literal> in
357           <literal>mk/build.mk</literal>.
358         </para>
359       </listitem>
360
361       <listitem>
362         <para>
363           The build system has been rewritten for the 6.12 series.
364           See <ulink url="http://hackage.haskell.org/trac/ghc/wiki/Building/Using">the building guide</ulink>
365           for more information.
366         </para>
367       </listitem>
368
369       <listitem>
370         <para>
371           The build system now uses variables like
372           <literal>bindir</literal> compatibly with the GNU standard.
373         </para>
374       </listitem>
375     </itemizedlist>
376   </sect2>
377
378   <sect2>
379     <title>Compiler</title>
380     <itemizedlist>
381       <listitem>
382         <para>
383           The "Interface file version" field of the
384           <literal>ghc --info</literal> output has been removed, as it
385           is no longer used by GHC.
386         </para>
387       </listitem>
388
389       <listitem>
390         <para>
391           There is a new "LibDir" field in the
392           <literal>ghc --info</literal> output.
393         </para>
394       </listitem>
395
396       <listitem>
397         <para>
398           A field <replaceable>f</replaceable> in the
399           <literal>ghc --info</literal> can now be printed with
400           <literal>ghc --print-<replaceable>f</replaceable></literal>, with letters lower-cased
401           and spaces replaced by dashes.
402         </para>
403       </listitem>
404
405       <listitem>
406         <para>
407           GHC now works (as a 32bit application) on OS X Snow Leopard.
408         </para>
409       </listitem>
410
411       <listitem>
412         <para>
413           The native code generator now works on Sparc Solaris.
414         </para>
415       </listitem>
416
417       <listitem>
418         <para>
419           Haddock interface files are now portable between different
420           architectures.
421         </para>
422       </listitem>
423
424       <listitem>
425         <para>
426           The new linker flag <literal>-eventlog</literal> enables the
427           <literal>+RTS -l</literal> event logging features. The
428           <literal>-debug</literal> flag also enables them.
429         </para>
430       </listitem>
431
432       <listitem>
433         <para>
434           There is a new flag <literal>-feager-blackholing</literal>
435           which typically gives better performing code when running
436           with multiple threads.
437           See <xref linkend="parallel-compile-options" /> for more
438           information.
439         </para>
440       </listitem>
441
442       <listitem>
443         <para>
444           There is a new flag <literal>-fbuilding-cabal-package</literal>
445           which signals to GHC that it is being run by a build system,
446           rather than invoked directly. This currently means that GHC
447           gives different error messages in certain situations.
448         </para>
449       </listitem>
450
451       <listitem>
452         <para>
453           The following flags were static, but are now dynamic:
454           <literal>-fext-core</literal>,
455           <literal>-fauto-sccs-on-all-toplevs</literal>,
456           <literal>-auto-all</literal>,
457           <literal>-no-auto-all</literal>,
458           <literal>-fauto-sccs-on-exported-toplevs</literal>,
459           <literal>-auto</literal>,
460           <literal>-no-auto</literal>,
461           <literal>-fauto-sccs-on-individual-cafs</literal>,
462           <literal>-caf-all</literal> and
463           <literal>-no-caf-all</literal>.
464         </para>
465       </listitem>
466     </itemizedlist>
467   </sect2>
468
469   <sect2>
470     <title>GHCi</title>
471     <itemizedlist>
472       <listitem>
473         <para>
474           If the argument to <literal>:set prompt</literal> starts with
475           a double quote then it is read with Haskell String syntax,
476           e.g.:
477         </para>
478 <programlisting>
479 Prelude> :set prompt "Loaded: %s\n> "
480 Loaded: Prelude
481
482 </programlisting>
483       </listitem>
484
485       <listitem>
486         <para>
487           The arguments to <literal>:set set</literal>
488           and <literal>:set show</literal> can now be tab completed.
489         </para>
490       </listitem>
491
492       <listitem>
493         <para>
494           We inherit some benefits from an upgraded version of haskeline:
495         </para>
496           <itemizedlist>
497             <listitem>
498               <para>
499                 A multitude of new emacs and vi commands.
500               </para>
501             </listitem>
502
503             <listitem>
504               <para>
505                 New preference 'historyDuplicates' to prevent storage
506                 of duplicate lines.
507               </para>
508             </listitem>
509
510             <listitem>
511               <para>
512                 Support PageUp and PageDown keys.
513               </para>
514             </listitem>
515           </itemizedlist>
516       </listitem>
517     </itemizedlist>
518   </sect2>
519
520   <sect2>
521     <title>Template Haskell</title>
522     <itemizedlist>
523       <listitem>
524         <para>
525           You can now omit the splice notation for top-level declaration
526           splices, e.g.:
527         </para>
528 <programlisting>
529 data T = T1 | T2
530 deriveMyStuff ''T
531 </programlisting>
532       </listitem>
533
534       <listitem>
535         <para>
536           Splices are now nestable, e.g. you can say
537           <literal>f x = $(g $(h 'x))</literal>.
538         </para>
539       </listitem>
540
541       <listitem>
542         <para>
543           It is now possible to splice in types.
544         </para>
545       </listitem>
546     </itemizedlist>
547   </sect2>
548
549   <sect2>
550     <title>Package Handling</title>
551     <itemizedlist>
552       <listitem>
553         <para>
554           Shared libraries are now supported on x86 and x86_64 Linux.
555           To use shared libraries, use the <literal>-dynamic</literal>
556           flag.
557           See <xref linkend="using-shared-libs" />  for more information.
558         </para>
559       </listitem>
560
561       <listitem>
562         <para>
563           The new <literal>-fno-shared-implib</literal> flag can be used
564           to stop GHC generating the <literal>.lib</literal> import
565           library when making a dynamic library. This reduces the disk
566           space used when you do not need it.
567         </para>
568       </listitem>
569
570       <listitem>
571         <para>
572           Packages can now be identified by a "package ID", which is
573           based on a hash of the ABIs. The new flag
574           <literal>-package-id</literal> allows packages to be
575           selected by this identifier (see <xref linkend="package-ids"
576           />).  Package IDs enable GHC to detect potential
577           incompatibilities between packages and broken dependencies
578           much more accurately than before.
579         </para>
580       </listitem>
581
582       <listitem>
583         <para>
584           The new flag <literal>--abi-hash</literal>, used thus:
585         </para>
586 <programlisting>
587 ghc --abi-hash M1 M2 ...
588 </programlisting>
589         <para>
590           prints the combined hash of all the modules listed. It is
591           used to make package IDs.
592         </para>
593       </listitem>
594
595       <listitem>
596         <para>
597           You can now give <literal>ghc-pkg</literal> a
598           <literal>-v0</literal> flag to make it be silent,
599           <literal>-v1</literal> for normal verbosity (the default),
600           or <literal>-v2</literal> or <literal>-v</literal> for
601           verbose output.
602         </para>
603       </listitem>
604
605       <listitem>
606         <para>
607           Rather than being a single <literal>package.conf</literal> file,
608           package databases now consist of a directory containing one
609           file per package, and a binary cache of the information.
610           GHC should be much faster to start up when the package
611           database grows large.
612         </para>
613       </listitem>
614
615       <listitem>
616         <para>
617           There is a new command <literal>ghc-pkg init</literal> to
618           create a package database.
619         </para>
620       </listitem>
621
622       <listitem>
623         <para>
624           There is a new command <literal>ghc-pkg dot</literal> to
625           generate a GraphViz graph of the dependencies between
626           installed packages.
627         </para>
628       </listitem>
629
630       <listitem>
631         <para>
632           There is a new command <literal>ghc-pkg recache</literal> to
633           update the package database cache should it become out of
634           date, or for registering packages manually.
635         </para>
636       </listitem>
637     </itemizedlist>
638   </sect2>
639
640   <sect2> 
641     <title>Libraries</title>
642
643     <para>
644       GHC no longer comes with any extralibs; instead, the
645       <ulink url="http://hackage.haskell.org/platformi/">Haskell Platform</ulink>
646       will provide a consistent set of additional libraries.
647     </para>
648
649     <sect3>
650       <title>array</title>
651       <itemizedlist>
652         <listitem>
653           <para>
654             Version number 0.3.0.0 (was 0.2.0.0)
655           </para>
656         </listitem>
657
658         <listitem>
659           <para>
660             The <literal>Data.Array.Diff</literal> module has been moved
661             to its own package.
662           </para>
663         </listitem>
664       </itemizedlist>
665     </sect3>
666
667     <sect3>
668       <title>base</title>
669       <itemizedlist>
670         <listitem>
671           <para>
672             Version number 4.2.0.0 (was 4.1.0.0)
673           </para>
674         </listitem>
675
676         <listitem>
677           <para>
678             We also ship a base version 3.0.3.2 (was 3.0.3.1), so legacy
679             code should continue to work. This package is now deprecated,
680             and will be removed in a future version of GHC.
681           </para>
682         </listitem>
683
684         <listitem>
685           <para>
686             Handle IO now supports automatic character set encoding
687             and newline translation. For more information, see the
688             "Unicode encoding/decoding" and "Newline conversion" sections
689             in the <literal>System.IO</literal> haddock docs.
690           </para>
691         </listitem>
692
693         <listitem>
694           <para>
695             It is now possible to create your own handles.
696             For more information, see the
697             <literal>GHC.IO.Handle</literal> haddock docs.
698           </para>
699         </listitem>
700
701         <listitem>
702           <para>
703             <literal>System.IO</literal> now exports two new functions,
704             <literal>openTempFileWithDefaultPermissions</literal> and
705             <literal>openBinaryTempFileWithDefaultPermissions</literal>.
706           </para>
707         </listitem>
708
709         <listitem>
710           <para>
711             <literal>Data.Fixed</literal> now provides
712             <literal>Data</literal> and <literal>Typeable</literal>
713             instances for <literal>Fixed</literal>, and exports
714             a number of new types:
715             <literal>E0</literal>, <literal>Uni</literal>,
716             <literal>E1</literal>, <literal>Deci</literal>,
717             <literal>E2</literal>, <literal>Centi</literal>,
718             <literal>E3</literal>, <literal>Milli</literal>,
719             <literal>E9</literal> and <literal>Nano</literal>.
720           </para>
721         </listitem>
722
723         <listitem>
724           <para>
725             In <literal>Control.Exception</literal>,
726             <literal>BlockedOnDeadMVar</literal>
727             has been renamed to
728             <literal>BlockedIndefinitelyOnMVar</literal>
729             and <literal>BlockedIndefinitely</literal>
730             has been renamed to
731             <literal>BlockedIndefinitelyOnSTM</literal>.
732           </para>
733         </listitem>
734
735         <listitem>
736           <para>
737             The <literal>Control.OldException</literal> module has been
738             deprecated.
739           </para>
740         </listitem>
741
742         <listitem>
743           <para>
744             <literal>System.Posix.Internals.setNonBlockingFD</literal>
745             now takes an additional <literal>Bool</literal> argument, so
746             you can turn blocking back on again.
747           </para>
748         </listitem>
749
750         <listitem>
751           <para>
752             A new function <literal>eof</literal> has been added to
753             <literal>Text.ParserCombinators.ReadP</literal>.
754           </para>
755         </listitem>
756
757         <listitem>
758           <para>
759             The <literal>Foreign.C.Types.CLDouble</literal> type has
760             been removed. It was never correct, but just a duplicate of
761             <literal>Foreign.C.Types.CDouble</literal>.
762           </para>
763         </listitem>
764
765         <listitem>
766           <para>
767             In <literal>Data.Data</literal>, the
768             <literal>StringRep</literal> and
769             <literal>StringConstr</literal> constructors have been
770             removed. The <literal>CharRep</literal> and
771             <literal>CharConstr</literal> constructors should be used
772             instead.
773           </para>
774         </listitem>
775
776         <listitem>
777           <para>
778             In <literal>Data.Data</literal>,
779             <literal>mkIntConstr</literal> has been deprecated in favour
780             of the new <literal>mkIntegralConstr</literal>.
781           </para>
782         </listitem>
783
784         <listitem>
785           <para>
786             In <literal>Data.Data</literal>,
787             <literal>mkFloatConstr</literal> has been deprecated in
788             favour of the new <literal>mkRealConstr</literal>.
789           </para>
790         </listitem>
791
792         <listitem>
793           <para>
794             In <literal>Data.Data</literal>,
795             <literal>mkNorepType</literal> has been deprecated in
796             favour of the new <literal>mkNoRepType</literal>.
797           </para>
798         </listitem>
799       </itemizedlist>
800     </sect3>
801
802     <sect3>
803       <title>bytestring</title>
804       <itemizedlist>
805         <listitem>
806           <para>
807             Version number 0.9.1.5 (was 0.9.1.4)
808           </para>
809         </listitem>
810       </itemizedlist>
811     </sect3>
812
813     <sect3>
814       <title>Cabal</title>
815       <itemizedlist>
816         <listitem>
817           <para>
818             Version number 1.8.0.0 (was 1.6.0.3)
819           </para>
820         </listitem>
821
822         <listitem>
823           <para>
824             Many API changes. See the Cabal docs for more information.
825           </para>
826         </listitem>
827       </itemizedlist>
828     </sect3>
829
830     <sect3>
831       <title>containers</title>
832       <itemizedlist>
833         <listitem>
834           <para>
835             Version number 0.3.0.0 (was 0.2.0.1)
836           </para>
837         </listitem>
838
839         <listitem>
840           <para>
841             <literal>mapAccumRWithKey</literal> has been added to
842             <literal>Data.IntMap</literal>.
843           </para>
844         </listitem>
845
846         <listitem>
847           <para>
848             A <literal>Traversable</literal> instance has been added to
849             <literal>Data.IntMap.IntMap</literal>.
850           </para>
851         </listitem>
852
853         <listitem>
854           <para>
855             The types of <literal>Data.IntMap.intersectionWith</literal>
856             and <literal>Data.IntMap.intersectionWithKey</literal> have
857             been changed from
858         </para>
859 <programlisting>
860 intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
861 intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
862 </programlisting>
863         <para>
864             to
865         </para>
866 <programlisting>
867 intersectionWith :: (a -> b -> c) -> IntMap a -> IntMap b -> IntMap c
868 intersectionWithKey :: (Key -> a -> b -> c) -> IntMap a -> IntMap b -> IntMap c
869 </programlisting>
870         </listitem>
871
872         <listitem>
873           <para>
874             The types of <literal>Data.IntMap.findMin</literal>
875             and <literal>Data.IntMap.findMax</literal> have
876             been changed from
877         </para>
878 <programlisting>
879 findMin :: IntMap a -> a
880 findMax :: IntMap a -> a
881 </programlisting>
882         <para>
883             to
884         </para>
885 <programlisting>
886 findMin :: IntMap a -> (Int,a)
887 findMax :: IntMap a -> (Int,a)
888 </programlisting>
889         </listitem>
890
891         <listitem>
892           <para>
893             <literal>Data.Map</literal> now exports
894             <literal>mapAccumRWithKey</literal>,
895             <literal>foldrWithKey</literal>,
896             <literal>foldlWithKey</literal> and
897             <literal>toDescList</literal>.
898           </para>
899         </listitem>
900
901         <listitem>
902           <para>
903             <literal>Data.Sequence</literal> now exports
904             <literal>replicate</literal>,
905             <literal>replicateA</literal>,
906             <literal>replicateM</literal>,
907             <literal>iterateN</literal>,
908             <literal>unfoldr</literal>,
909             <literal>unfoldl</literal>,
910             <literal>scanl</literal>,
911             <literal>scanl1</literal>,
912             <literal>scanr</literal>,
913             <literal>scanr1</literal>,
914             <literal>tails</literal>,
915             <literal>inits</literal>,
916             <literal>takeWhileL</literal>,
917             <literal>takeWhileR</literal>,
918             <literal>dropWhileL</literal>,
919             <literal>dropWhileR</literal>,
920             <literal>spanl</literal>,
921             <literal>spanr</literal>,
922             <literal>breakl</literal>,
923             <literal>breakr</literal>,
924             <literal>partition</literal>,
925             <literal>filter</literal>,
926             <literal>sort</literal>,
927             <literal>sortBy</literal>,
928             <literal>unstableSort</literal>,
929             <literal>unstableSortBy</literal>,
930             <literal>elemIndexL</literal>,
931             <literal>elemIndicesL</literal>,
932             <literal>elemIndexR</literal>,
933             <literal>elemIndicesR</literal>,
934             <literal>findIndexL</literal>,
935             <literal>findIndicesL</literal>,
936             <literal>findIndexR</literal>,
937             <literal>findIndicesR</literal>,
938             <literal>foldlWithIndex</literal>,
939             <literal>foldrWithIndex</literal>,
940             <literal>mapWithIndex</literal>,
941             <literal>zip</literal>,
942             <literal>zipWith</literal>,
943             <literal>zip3</literal>,
944             <literal>zipWith3</literal>,
945             <literal>zip4</literal> and
946             <literal>zipWith4</literal>.
947           </para>
948         </listitem>
949       </itemizedlist>
950     </sect3>
951
952     <sect3>
953       <title>directory</title>
954       <itemizedlist>
955         <listitem>
956           <para>
957             Version number 1.0.1.0 (was 1.0.0.3)
958           </para>
959         </listitem>
960
961         <listitem>
962           <para>
963             A new function <literal>copyPermissions</literal> has been
964             added to <literal>System.Directory</literal>.
965           </para>
966         </listitem>
967       </itemizedlist>
968     </sect3>
969
970     <sect3>
971       <title>
972         dph
973         (dph-base, dph-par, dph-prim-interface, dph-prim-par,
974         dph-prim-seq, dph-seq)
975       </title>
976       <itemizedlist>
977         <listitem>
978           <para>
979             All the dph packages are version 0.4.0.
980           </para>
981         </listitem>
982       </itemizedlist>
983     </sect3>
984
985     <sect3>
986       <title>extensible-exceptions</title>
987       <itemizedlist>
988         <listitem>
989           <para>
990             Version number 0.1.1.1 (was 0.1.1.0)
991           </para>
992         </listitem>
993       </itemizedlist>
994     </sect3>
995
996     <sect3>
997       <title>filepath</title>
998       <itemizedlist>
999         <listitem>
1000           <para>
1001             Version number 1.1.0.3 (was 1.1.0.2)
1002           </para>
1003         </listitem>
1004
1005         <listitem>
1006           <para>
1007             The list of characters that are invalid in filenames on
1008             Windows now includes <literal>\</literal> (backslash).
1009           </para>
1010         </listitem>
1011       </itemizedlist>
1012     </sect3>
1013
1014     <sect3>
1015       <title>ghc-binary</title>
1016       <itemizedlist>
1017         <listitem>
1018           <para>
1019             This is an internal package, and should not be used.
1020           </para>
1021         </listitem>
1022       </itemizedlist>
1023     </sect3>
1024
1025     <sect3>
1026       <title>ghc-prim</title>
1027       <itemizedlist>
1028         <listitem>
1029           <para>
1030             Version number 0.2.0.0 (was 0.1.0.0)
1031           </para>
1032         </listitem>
1033       </itemizedlist>
1034     </sect3>
1035
1036     <sect3>
1037       <title>haskell98</title>
1038       <itemizedlist>
1039         <listitem>
1040           <para>
1041             Version number 1.0.1.1 (was 1.0.1.0)
1042           </para>
1043         </listitem>
1044       </itemizedlist>
1045     </sect3>
1046
1047     <sect3>
1048       <title>hpc</title>
1049       <itemizedlist>
1050         <listitem>
1051           <para>
1052             Version number 0.5.0.4 (was 0.5.0.3)
1053           </para>
1054         </listitem>
1055       </itemizedlist>
1056     </sect3>
1057
1058     <sect3>
1059       <title>integer-gmp</title>
1060       <itemizedlist>
1061         <listitem>
1062           <para>
1063             Version number 0.2.0.0 (was called integer, version 0.1.0.1)
1064           </para>
1065         </listitem>
1066       </itemizedlist>
1067     </sect3>
1068
1069     <sect3>
1070       <title>integer-simple</title>
1071       <itemizedlist>
1072         <listitem>
1073           <para>
1074             This is a new boot package, version 0.1.0.0.
1075           </para>
1076         </listitem>
1077       </itemizedlist>
1078     </sect3>
1079
1080     <sect3>
1081       <title>old-locale</title>
1082       <itemizedlist>
1083         <listitem>
1084           <para>
1085             Version number 1.0.0.2 (was 1.0.0.1)
1086           </para>
1087         </listitem>
1088
1089         <listitem>
1090           <para>
1091             Date and time in ISO8601 format are now separated by
1092             <literal>T</literal> rather than a space.
1093           </para>
1094         </listitem>
1095       </itemizedlist>
1096     </sect3>
1097
1098     <sect3>
1099       <title>old-time</title>
1100       <itemizedlist>
1101         <listitem>
1102           <para>
1103             Version number 1.0.0.3 (was 1.0.0.2)
1104           </para>
1105         </listitem>
1106       </itemizedlist>
1107     </sect3>
1108
1109     <sect3>
1110       <title>packedstring</title>
1111       <itemizedlist>
1112         <listitem>
1113           <para>
1114             This is no longer a boot package.
1115           </para>
1116         </listitem>
1117       </itemizedlist>
1118     </sect3>
1119
1120     <sect3>
1121       <title>pretty</title>
1122       <itemizedlist>
1123         <listitem>
1124           <para>
1125             Version number 1.0.1.1 (was 1.0.1.0)
1126           </para>
1127         </listitem>
1128       </itemizedlist>
1129     </sect3>
1130
1131     <sect3>
1132       <title>process</title>
1133       <itemizedlist>
1134         <listitem>
1135           <para>
1136             Version number 1.0.1.2 (was 1.0.1.1)
1137           </para>
1138         </listitem>
1139       </itemizedlist>
1140     </sect3>
1141
1142     <sect3>
1143       <title>random</title>
1144       <itemizedlist>
1145         <listitem>
1146           <para>
1147             Version number 1.0.0.2 (was 1.0.0.1)
1148           </para>
1149         </listitem>
1150       </itemizedlist>
1151     </sect3>
1152
1153     <sect3>
1154       <title>syb</title>
1155       <itemizedlist>
1156         <listitem>
1157           <para>
1158             Version number 0.1.0.2 (was 0.1.0.1)
1159           </para>
1160         </listitem>
1161       </itemizedlist>
1162     </sect3>
1163
1164     <sect3>
1165       <title>template-haskell</title>
1166       <itemizedlist>
1167         <listitem>
1168           <para>
1169             Version number 2.4.0.0 (was 2.3.0.1)
1170           </para>
1171         </listitem>
1172
1173         <listitem>
1174           <para>
1175             Support for <literal>inline</literal> and
1176             <literal>specialise</literal> pragmas has been added.
1177           </para>
1178         </listitem>
1179
1180         <listitem>
1181           <para>
1182             Support for bang patterns has been added
1183           </para>
1184         </listitem>
1185
1186         <listitem>
1187           <para>
1188             Support for kind annotations has been added
1189           </para>
1190         </listitem>
1191
1192         <listitem>
1193           <para>
1194             Support for equality constraints has been added
1195           </para>
1196         </listitem>
1197
1198         <listitem>
1199           <para>
1200             Support for type family declarations has been added
1201           </para>
1202         </listitem>
1203       </itemizedlist>
1204     </sect3>
1205
1206     <sect3>
1207       <title>time</title>
1208       <itemizedlist>
1209         <listitem>
1210           <para>
1211             This is a new boot package, version 1.1.4.
1212           </para>
1213         </listitem>
1214       </itemizedlist>
1215     </sect3>
1216
1217     <sect3>
1218       <title>unix</title>
1219       <itemizedlist>
1220         <listitem>
1221           <para>
1222             Version number 2.4.0.0 (was 2.3.2.0)
1223           </para>
1224         </listitem>
1225
1226         <listitem>
1227           <para>
1228             <literal>System.Posix.IO</literal> now exports
1229             <literal>fdReadBuf</literal> and
1230             <literal>fdWriteBuf</literal>.
1231           </para>
1232         </listitem>
1233
1234         <listitem>
1235           <para>
1236             <literal>System.Posix.Process.executeFile</literal> now
1237             returns <literal>IO a</literal> instead of
1238             <literal>IO ()</literal>.
1239           </para>
1240         </listitem>
1241       </itemizedlist>
1242     </sect3>
1243
1244     <sect3>
1245       <title>Win32</title>
1246       <itemizedlist>
1247         <listitem>
1248           <para>
1249             Version number 2.2.0.1 (was 2.2.0.0)
1250           </para>
1251         </listitem>
1252
1253         <listitem>
1254           <para>
1255             <literal>System.Win32.File</literal> now exports
1256             <literal>WIN32_FIND_DATA</literal>,
1257             <literal>FindData</literal>,
1258             <literal>getFindDataFileName</literal>,
1259             <literal>findFirstFile</literal>,
1260             <literal>findNextFile</literal> and
1261             <literal>findClose</literal>.
1262           </para>
1263         </listitem>
1264
1265         <listitem>
1266           <para>
1267             <literal>System.Win32.Info</literal> now exports
1268             <literal>getCurrentDirectory</literal>,
1269             <literal>getTemporaryDirectory</literal>,
1270             <literal>getFullPathName</literal> and
1271             <literal>searchPath</literal>.
1272           </para>
1273         </listitem>
1274
1275         <listitem>
1276           <para>
1277             <literal>System.Win32.Types</literal> now exports
1278             <literal>HRESULT</literal>.
1279           </para>
1280         </listitem>
1281
1282         <listitem>
1283           <para>
1284             There is a new module <literal>System.Win32.Shell</literal>.
1285           </para>
1286         </listitem>
1287       </itemizedlist>
1288     </sect3>
1289   </sect2>
1290 </sect1>
1291