Document that lazy I/O now throws exceptions
[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             Lazy I/O now throws an exception if an error is
696             encountered, in a divergence from the Haskell 98 spec which
697             requires that errors are discarded (see Section 21.2.2 of
698             the Haskell 98 report).  The exception thrown is the usual
699             IO exception that would be thrown if the failing IO
700             operation was performed in the IO monad, and can be caught
701             by <literal>System.IO.Error.catch</literal>
702             or <literal>Control.Exception.catch</literal>.
703           </para>
704         </listitem>
705
706         <listitem>
707           <para>
708             It is now possible to create your own handles.
709             For more information, see the
710             <literal>GHC.IO.Handle</literal> haddock docs.
711           </para>
712         </listitem>
713
714         <listitem>
715           <para>
716             <literal>System.IO</literal> now exports two new functions,
717             <literal>openTempFileWithDefaultPermissions</literal> and
718             <literal>openBinaryTempFileWithDefaultPermissions</literal>.
719           </para>
720         </listitem>
721
722         <listitem>
723           <para>
724             <literal>Data.Fixed</literal> now provides
725             <literal>Data</literal> and <literal>Typeable</literal>
726             instances for <literal>Fixed</literal>, and exports
727             a number of new types:
728             <literal>E0</literal>, <literal>Uni</literal>,
729             <literal>E1</literal>, <literal>Deci</literal>,
730             <literal>E2</literal>, <literal>Centi</literal>,
731             <literal>E3</literal>, <literal>Milli</literal>,
732             <literal>E9</literal> and <literal>Nano</literal>.
733           </para>
734         </listitem>
735
736         <listitem>
737           <para>
738             In <literal>Control.Exception</literal>,
739             <literal>BlockedOnDeadMVar</literal>
740             has been renamed to
741             <literal>BlockedIndefinitelyOnMVar</literal>
742             and <literal>BlockedIndefinitely</literal>
743             has been renamed to
744             <literal>BlockedIndefinitelyOnSTM</literal>.
745           </para>
746         </listitem>
747
748         <listitem>
749           <para>
750             The <literal>Control.OldException</literal> module has been
751             deprecated.
752           </para>
753         </listitem>
754
755         <listitem>
756           <para>
757             <literal>System.Posix.Internals.setNonBlockingFD</literal>
758             now takes an additional <literal>Bool</literal> argument, so
759             you can turn blocking back on again.
760           </para>
761         </listitem>
762
763         <listitem>
764           <para>
765             A new function <literal>eof</literal> has been added to
766             <literal>Text.ParserCombinators.ReadP</literal>.
767           </para>
768         </listitem>
769
770         <listitem>
771           <para>
772             The <literal>Foreign.C.Types.CLDouble</literal> type has
773             been removed. It was never correct, but just a duplicate of
774             <literal>Foreign.C.Types.CDouble</literal>.
775           </para>
776         </listitem>
777
778         <listitem>
779           <para>
780             In <literal>Data.Data</literal>, the
781             <literal>StringRep</literal> and
782             <literal>StringConstr</literal> constructors have been
783             removed. The <literal>CharRep</literal> and
784             <literal>CharConstr</literal> constructors should be used
785             instead.
786           </para>
787         </listitem>
788
789         <listitem>
790           <para>
791             In <literal>Data.Data</literal>,
792             <literal>mkIntConstr</literal> has been deprecated in favour
793             of the new <literal>mkIntegralConstr</literal>.
794           </para>
795         </listitem>
796
797         <listitem>
798           <para>
799             In <literal>Data.Data</literal>,
800             <literal>mkFloatConstr</literal> has been deprecated in
801             favour of the new <literal>mkRealConstr</literal>.
802           </para>
803         </listitem>
804
805         <listitem>
806           <para>
807             In <literal>Data.Data</literal>,
808             <literal>mkNorepType</literal> has been deprecated in
809             favour of the new <literal>mkNoRepType</literal>.
810           </para>
811         </listitem>
812       </itemizedlist>
813     </sect3>
814
815     <sect3>
816       <title>bytestring</title>
817       <itemizedlist>
818         <listitem>
819           <para>
820             Version number 0.9.1.5 (was 0.9.1.4)
821           </para>
822         </listitem>
823       </itemizedlist>
824     </sect3>
825
826     <sect3>
827       <title>Cabal</title>
828       <itemizedlist>
829         <listitem>
830           <para>
831             Version number 1.8.0.0 (was 1.6.0.3)
832           </para>
833         </listitem>
834
835         <listitem>
836           <para>
837             Many API changes. See the Cabal docs for more information.
838           </para>
839         </listitem>
840       </itemizedlist>
841     </sect3>
842
843     <sect3>
844       <title>containers</title>
845       <itemizedlist>
846         <listitem>
847           <para>
848             Version number 0.3.0.0 (was 0.2.0.1)
849           </para>
850         </listitem>
851
852         <listitem>
853           <para>
854             <literal>mapAccumRWithKey</literal> has been added to
855             <literal>Data.IntMap</literal>.
856           </para>
857         </listitem>
858
859         <listitem>
860           <para>
861             A <literal>Traversable</literal> instance has been added to
862             <literal>Data.IntMap.IntMap</literal>.
863           </para>
864         </listitem>
865
866         <listitem>
867           <para>
868             The types of <literal>Data.IntMap.intersectionWith</literal>
869             and <literal>Data.IntMap.intersectionWithKey</literal> have
870             been changed from
871         </para>
872 <programlisting>
873 intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
874 intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
875 </programlisting>
876         <para>
877             to
878         </para>
879 <programlisting>
880 intersectionWith :: (a -> b -> c) -> IntMap a -> IntMap b -> IntMap c
881 intersectionWithKey :: (Key -> a -> b -> c) -> IntMap a -> IntMap b -> IntMap c
882 </programlisting>
883         </listitem>
884
885         <listitem>
886           <para>
887             The types of <literal>Data.IntMap.findMin</literal>
888             and <literal>Data.IntMap.findMax</literal> have
889             been changed from
890         </para>
891 <programlisting>
892 findMin :: IntMap a -> a
893 findMax :: IntMap a -> a
894 </programlisting>
895         <para>
896             to
897         </para>
898 <programlisting>
899 findMin :: IntMap a -> (Int,a)
900 findMax :: IntMap a -> (Int,a)
901 </programlisting>
902         </listitem>
903
904         <listitem>
905           <para>
906             <literal>Data.Map</literal> now exports
907             <literal>mapAccumRWithKey</literal>,
908             <literal>foldrWithKey</literal>,
909             <literal>foldlWithKey</literal> and
910             <literal>toDescList</literal>.
911           </para>
912         </listitem>
913
914         <listitem>
915           <para>
916             <literal>Data.Sequence</literal> now exports
917             <literal>replicate</literal>,
918             <literal>replicateA</literal>,
919             <literal>replicateM</literal>,
920             <literal>iterateN</literal>,
921             <literal>unfoldr</literal>,
922             <literal>unfoldl</literal>,
923             <literal>scanl</literal>,
924             <literal>scanl1</literal>,
925             <literal>scanr</literal>,
926             <literal>scanr1</literal>,
927             <literal>tails</literal>,
928             <literal>inits</literal>,
929             <literal>takeWhileL</literal>,
930             <literal>takeWhileR</literal>,
931             <literal>dropWhileL</literal>,
932             <literal>dropWhileR</literal>,
933             <literal>spanl</literal>,
934             <literal>spanr</literal>,
935             <literal>breakl</literal>,
936             <literal>breakr</literal>,
937             <literal>partition</literal>,
938             <literal>filter</literal>,
939             <literal>sort</literal>,
940             <literal>sortBy</literal>,
941             <literal>unstableSort</literal>,
942             <literal>unstableSortBy</literal>,
943             <literal>elemIndexL</literal>,
944             <literal>elemIndicesL</literal>,
945             <literal>elemIndexR</literal>,
946             <literal>elemIndicesR</literal>,
947             <literal>findIndexL</literal>,
948             <literal>findIndicesL</literal>,
949             <literal>findIndexR</literal>,
950             <literal>findIndicesR</literal>,
951             <literal>foldlWithIndex</literal>,
952             <literal>foldrWithIndex</literal>,
953             <literal>mapWithIndex</literal>,
954             <literal>zip</literal>,
955             <literal>zipWith</literal>,
956             <literal>zip3</literal>,
957             <literal>zipWith3</literal>,
958             <literal>zip4</literal> and
959             <literal>zipWith4</literal>.
960           </para>
961         </listitem>
962       </itemizedlist>
963     </sect3>
964
965     <sect3>
966       <title>directory</title>
967       <itemizedlist>
968         <listitem>
969           <para>
970             Version number 1.0.1.0 (was 1.0.0.3)
971           </para>
972         </listitem>
973
974         <listitem>
975           <para>
976             A new function <literal>copyPermissions</literal> has been
977             added to <literal>System.Directory</literal>.
978           </para>
979         </listitem>
980       </itemizedlist>
981     </sect3>
982
983     <sect3>
984       <title>
985         dph
986         (dph-base, dph-par, dph-prim-interface, dph-prim-par,
987         dph-prim-seq, dph-seq)
988       </title>
989       <itemizedlist>
990         <listitem>
991           <para>
992             All the dph packages are version 0.4.0.
993           </para>
994         </listitem>
995       </itemizedlist>
996     </sect3>
997
998     <sect3>
999       <title>extensible-exceptions</title>
1000       <itemizedlist>
1001         <listitem>
1002           <para>
1003             Version number 0.1.1.1 (was 0.1.1.0)
1004           </para>
1005         </listitem>
1006       </itemizedlist>
1007     </sect3>
1008
1009     <sect3>
1010       <title>filepath</title>
1011       <itemizedlist>
1012         <listitem>
1013           <para>
1014             Version number 1.1.0.3 (was 1.1.0.2)
1015           </para>
1016         </listitem>
1017
1018         <listitem>
1019           <para>
1020             The list of characters that are invalid in filenames on
1021             Windows now includes <literal>\</literal> (backslash).
1022           </para>
1023         </listitem>
1024       </itemizedlist>
1025     </sect3>
1026
1027     <sect3>
1028       <title>ghc-binary</title>
1029       <itemizedlist>
1030         <listitem>
1031           <para>
1032             This is an internal package, and should not be used.
1033           </para>
1034         </listitem>
1035       </itemizedlist>
1036     </sect3>
1037
1038     <sect3>
1039       <title>ghc-prim</title>
1040       <itemizedlist>
1041         <listitem>
1042           <para>
1043             Version number 0.2.0.0 (was 0.1.0.0)
1044           </para>
1045         </listitem>
1046       </itemizedlist>
1047     </sect3>
1048
1049     <sect3>
1050       <title>haskell98</title>
1051       <itemizedlist>
1052         <listitem>
1053           <para>
1054             Version number 1.0.1.1 (was 1.0.1.0)
1055           </para>
1056         </listitem>
1057       </itemizedlist>
1058     </sect3>
1059
1060     <sect3>
1061       <title>hpc</title>
1062       <itemizedlist>
1063         <listitem>
1064           <para>
1065             Version number 0.5.0.4 (was 0.5.0.3)
1066           </para>
1067         </listitem>
1068       </itemizedlist>
1069     </sect3>
1070
1071     <sect3>
1072       <title>integer-gmp</title>
1073       <itemizedlist>
1074         <listitem>
1075           <para>
1076             Version number 0.2.0.0 (was called integer, version 0.1.0.1)
1077           </para>
1078         </listitem>
1079       </itemizedlist>
1080     </sect3>
1081
1082     <sect3>
1083       <title>integer-simple</title>
1084       <itemizedlist>
1085         <listitem>
1086           <para>
1087             This is a new boot package, version 0.1.0.0.
1088           </para>
1089         </listitem>
1090       </itemizedlist>
1091     </sect3>
1092
1093     <sect3>
1094       <title>old-locale</title>
1095       <itemizedlist>
1096         <listitem>
1097           <para>
1098             Version number 1.0.0.2 (was 1.0.0.1)
1099           </para>
1100         </listitem>
1101
1102         <listitem>
1103           <para>
1104             Date and time in ISO8601 format are now separated by
1105             <literal>T</literal> rather than a space.
1106           </para>
1107         </listitem>
1108       </itemizedlist>
1109     </sect3>
1110
1111     <sect3>
1112       <title>old-time</title>
1113       <itemizedlist>
1114         <listitem>
1115           <para>
1116             Version number 1.0.0.3 (was 1.0.0.2)
1117           </para>
1118         </listitem>
1119       </itemizedlist>
1120     </sect3>
1121
1122     <sect3>
1123       <title>packedstring</title>
1124       <itemizedlist>
1125         <listitem>
1126           <para>
1127             This is no longer a boot package.
1128           </para>
1129         </listitem>
1130       </itemizedlist>
1131     </sect3>
1132
1133     <sect3>
1134       <title>pretty</title>
1135       <itemizedlist>
1136         <listitem>
1137           <para>
1138             Version number 1.0.1.1 (was 1.0.1.0)
1139           </para>
1140         </listitem>
1141       </itemizedlist>
1142     </sect3>
1143
1144     <sect3>
1145       <title>process</title>
1146       <itemizedlist>
1147         <listitem>
1148           <para>
1149             Version number 1.0.1.2 (was 1.0.1.1)
1150           </para>
1151         </listitem>
1152       </itemizedlist>
1153     </sect3>
1154
1155     <sect3>
1156       <title>random</title>
1157       <itemizedlist>
1158         <listitem>
1159           <para>
1160             Version number 1.0.0.2 (was 1.0.0.1)
1161           </para>
1162         </listitem>
1163       </itemizedlist>
1164     </sect3>
1165
1166     <sect3>
1167       <title>syb</title>
1168       <itemizedlist>
1169         <listitem>
1170           <para>
1171             Version number 0.1.0.2 (was 0.1.0.1)
1172           </para>
1173         </listitem>
1174       </itemizedlist>
1175     </sect3>
1176
1177     <sect3>
1178       <title>template-haskell</title>
1179       <itemizedlist>
1180         <listitem>
1181           <para>
1182             Version number 2.4.0.0 (was 2.3.0.1)
1183           </para>
1184         </listitem>
1185
1186         <listitem>
1187           <para>
1188             Support for <literal>inline</literal> and
1189             <literal>specialise</literal> pragmas has been added.
1190           </para>
1191         </listitem>
1192
1193         <listitem>
1194           <para>
1195             Support for bang patterns has been added
1196           </para>
1197         </listitem>
1198
1199         <listitem>
1200           <para>
1201             Support for kind annotations has been added
1202           </para>
1203         </listitem>
1204
1205         <listitem>
1206           <para>
1207             Support for equality constraints has been added
1208           </para>
1209         </listitem>
1210
1211         <listitem>
1212           <para>
1213             Support for type family declarations has been added
1214           </para>
1215         </listitem>
1216       </itemizedlist>
1217     </sect3>
1218
1219     <sect3>
1220       <title>time</title>
1221       <itemizedlist>
1222         <listitem>
1223           <para>
1224             This is a new boot package, version 1.1.4.
1225           </para>
1226         </listitem>
1227       </itemizedlist>
1228     </sect3>
1229
1230     <sect3>
1231       <title>unix</title>
1232       <itemizedlist>
1233         <listitem>
1234           <para>
1235             Version number 2.4.0.0 (was 2.3.2.0)
1236           </para>
1237         </listitem>
1238
1239         <listitem>
1240           <para>
1241             <literal>System.Posix.IO</literal> now exports
1242             <literal>fdReadBuf</literal> and
1243             <literal>fdWriteBuf</literal>.
1244           </para>
1245         </listitem>
1246
1247         <listitem>
1248           <para>
1249             <literal>System.Posix.Process.executeFile</literal> now
1250             returns <literal>IO a</literal> instead of
1251             <literal>IO ()</literal>.
1252           </para>
1253         </listitem>
1254       </itemizedlist>
1255     </sect3>
1256
1257     <sect3>
1258       <title>Win32</title>
1259       <itemizedlist>
1260         <listitem>
1261           <para>
1262             Version number 2.2.0.1 (was 2.2.0.0)
1263           </para>
1264         </listitem>
1265
1266         <listitem>
1267           <para>
1268             <literal>System.Win32.File</literal> now exports
1269             <literal>WIN32_FIND_DATA</literal>,
1270             <literal>FindData</literal>,
1271             <literal>getFindDataFileName</literal>,
1272             <literal>findFirstFile</literal>,
1273             <literal>findNextFile</literal> and
1274             <literal>findClose</literal>.
1275           </para>
1276         </listitem>
1277
1278         <listitem>
1279           <para>
1280             <literal>System.Win32.Info</literal> now exports
1281             <literal>getCurrentDirectory</literal>,
1282             <literal>getTemporaryDirectory</literal>,
1283             <literal>getFullPathName</literal> and
1284             <literal>searchPath</literal>.
1285           </para>
1286         </listitem>
1287
1288         <listitem>
1289           <para>
1290             <literal>System.Win32.Types</literal> now exports
1291             <literal>HRESULT</literal>.
1292           </para>
1293         </listitem>
1294
1295         <listitem>
1296           <para>
1297             There is a new module <literal>System.Win32.Shell</literal>.
1298           </para>
1299         </listitem>
1300       </itemizedlist>
1301     </sect3>
1302   </sect2>
1303 </sect1>
1304