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