5ab49962d0d80b55380d99c80f6c646cc95c74cb
[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
525             <listitem>
526               <para>
527                 Let ctrl-L (clear-screen) work during getInputChar.
528               </para>
529             </listitem>
530           </itemizedlist>
531       </listitem>
532     </itemizedlist>
533   </sect2>
534
535   <sect2>
536     <title>Template Haskell</title>
537     <itemizedlist>
538       <listitem>
539         <para>
540           You can now omit the splice notation for top-level declaration
541           splices, e.g.:
542         </para>
543 <programlisting>
544 data T = T1 | T2
545 deriveMyStuff ''T
546 </programlisting>
547       </listitem>
548
549       <listitem>
550         <para>
551           Splices are now nestable, e.g. you can say
552           <literal>f x = $(g $(h 'x))</literal>.
553         </para>
554       </listitem>
555
556       <listitem>
557         <para>
558           It is now possible to splice in types.
559         </para>
560       </listitem>
561     </itemizedlist>
562   </sect2>
563
564   <sect2>
565     <title>Package Handling</title>
566     <itemizedlist>
567       <listitem>
568         <para>
569           Shared libraries are now supported on x86 and x86_64 Linux.
570           To use shared libraries, use the <literal>-dynamic</literal>
571           flag.
572           See <xref linkend="using-shared-libs" />  for more information.
573         </para>
574       </listitem>
575
576       <listitem>
577         <para>
578           The new <literal>-fno-shared-implib</literal> flag can be used
579           to stop GHC generating the <literal>.lib</literal> import
580           library when making a dynamic library. This reduces the disk
581           space used when you do not need it.
582         </para>
583       </listitem>
584
585       <listitem>
586         <para>
587           Packages can now be identified by a "package ID", which is
588           based on a hash of the ABIs. The new flag
589           <literal>-package-id</literal> allows packages to be
590           selected by this identifier (see <xref linkend="package-ids"
591           />).  Package IDs enable GHC to detect potential
592           incompatibilities between packages and broken dependencies
593           much more accurately than before.
594         </para>
595       </listitem>
596
597       <listitem>
598         <para>
599           The new flag <literal>--abi-hash</literal>, used thus:
600         </para>
601 <programlisting>
602 ghc --abi-hash M1 M2 ...
603 </programlisting>
604         <para>
605           prints the combined hash of all the modules listed. It is
606           used to make package IDs.
607         </para>
608       </listitem>
609
610       <listitem>
611         <para>
612           You can now give <literal>ghc-pkg</literal> a
613           <literal>-v0</literal> flag to make it be silent,
614           <literal>-v1</literal> for normal verbosity (the default),
615           or <literal>-v2</literal> or <literal>-v</literal> for
616           verbose output.
617         </para>
618       </listitem>
619
620       <listitem>
621         <para>
622           Rather than being a single <literal>package.conf</literal> file,
623           package databases now consist of a directory containing one
624           file per package, and a binary cache of the information.
625           GHC should be much faster to start up when the package
626           database grows large.
627         </para>
628       </listitem>
629
630       <listierm>
631         <para>
632           There is a new command <literal>ghc-pkg init</literal> to
633           create a package database.
634         </para>
635       </listierm>
636
637       <listierm>
638         <para>
639           There is a new command <literal>ghc-pkg dot</literal> to
640           generate a GraphViz graph of the dependencies between
641           installed packages.
642         </para>
643       </listierm>
644
645       <listitem>
646         <para>
647           There is a new command <literal>ghc-pkg recache</literal> to
648           update the package database cache should it become out of
649           date, or for registering packages manually.
650         </para>
651       </listitem>
652     </itemizedlist>
653   </sect2>
654
655   <sect2> 
656     <title>Libraries</title>
657
658     <para>
659       GHC no longer comes with any extralibs; instead, the
660       <ulink url="http://hackage.haskell.org/platformi/">Haskell Platform</ulink>
661       will provide a consistent set of additional libraries.
662     </para>
663
664     <sect3>
665       <title>array</title>
666       <itemizedlist>
667         <listitem>
668           <para>
669             Version number 0.3.0.0 (was 0.2.0.0)
670           </para>
671         </listitem>
672
673         <listitem>
674           <para>
675             The <literal>Data.Array.Diff</literal> module has been moved
676             to its own package.
677           </para>
678         </listitem>
679       </itemizedlist>
680     </sect3>
681
682     <sect3>
683       <title>base</title>
684       <itemizedlist>
685         <listitem>
686           <para>
687             Version number 4.2.0.0 (was 4.1.0.0)
688           </para>
689         </listitem>
690
691         <listitem>
692           <para>
693             We also ship a base version 3.0.3.2 (was 3.0.3.1), so legacy
694             code should continue to work. This package is now deprecated,
695             and will be removed in a future version of GHC.
696           </para>
697         </listitem>
698
699         <listitem>
700           <para>
701             Handle IO now supports automatic character set encoding
702             and newline translation. For more information, see the
703             "Unicode encoding/decoding" and "Newline conversion" sections
704             in the <literal>System.IO</literal> haddock docs.
705           </para>
706         </listitem>
707
708         <listitem>
709           <para>
710             It is now possible to create your own handles.
711             For more information, see the
712             <literal>GHC.IO.Handle</literal> haddock docs.
713           </para>
714         </listitem>
715
716         <listitem>
717           <para>
718             <literal>System.IO</literal> now exports two new functions,
719             <literal>openTempFileWithDefaultPermissions</literal> and
720             <literal>openBinaryTempFileWithDefaultPermissions</literal>.
721           </para>
722         </listitem>
723
724         <listitem>
725           <para>
726             <literal>Data.Fixed</literal> now provides
727             <literal>Data</literal> and <literal>Typeable</literal>
728             instances for <literal>Fixed</literal>, and exports
729             a number of new types:
730             <literal>E0</literal>, <literal>Uni</literal>,
731             <literal>E1</literal>, <literal>Deci</literal>,
732             <literal>E2</literal>, <literal>Centi</literal>,
733             <literal>E3</literal>, <literal>Milli</literal>,
734             <literal>E9</literal> and <literal>Nano</literal>.
735           </para>
736         </listitem>
737
738         <listitem>
739           <para>
740             In <literal>Control.Exception</literal>,
741             <literal>BlockedOnDeadMVar</literal>
742             has been renamed to
743             <literal>BlockedIndefinitelyOnMVar</literal>
744             and <literal>BlockedIndefinitely</literal>
745             has been renamed to
746             <literal>BlockedIndefinitelyOnSTM</literal>.
747           </para>
748         </listitem>
749
750         <listitem>
751           <para>
752             The <literal>Control.OldException</literal> module has been
753             deprecated.
754           </para>
755         </listitem>
756
757         <listitem>
758           <para>
759             <literal>System.Posix.Internals.setNonBlockingFD</literal>
760             now takes an additional <literal>Bool</literal> argument, so
761             you can turn blocking back on again.
762           </para>
763         </listitem>
764
765         <listitem>
766           <para>
767             A new function <literal>eof</literal> has been added to
768             <literal>Text.ParserCombinators.ReadP</literal>.
769           </para>
770         </listitem>
771
772         <listitem>
773           <para>
774             The <literal>Foreign.C.Types.CLDouble</literal> type has
775             been removed. It was never correct, but just a duplicate of
776             <literal>Foreign.C.Types.CDouble</literal>.
777           </para>
778         </listitem>
779
780         <listitem>
781           <para>
782             In <literal>Data.Data</literal>, the
783             <literal>StringRep</literal> and
784             <literal>StringConstr</literal> constructors have been
785             removed. The <literal>CharRep</literal> and
786             <literal>CharConstr</literal> constructors should be used
787             instead.
788           </para>
789         </listitem>
790
791         <listitem>
792           <para>
793             In <literal>Data.Data</literal>,
794             <literal>mkIntConstr</literal> has been deprecated in favour
795             of the new <literal>mkIntegralConstr</literal>.
796           </para>
797         </listitem>
798
799         <listitem>
800           <para>
801             In <literal>Data.Data</literal>,
802             <literal>mkFloatConstr</literal> has been deprecated in
803             favour of the new <literal>mkRealConstr</literal>.
804           </para>
805         </listitem>
806
807         <listitem>
808           <para>
809             In <literal>Data.Data</literal>,
810             <literal>mkNorepType</literal> has been deprecated in
811             favour of the new <literal>mkNoRepType</literal>.
812           </para>
813         </listitem>
814       </itemizedlist>
815     </sect3>
816
817     <sect3>
818       <title>bytestring</title>
819       <itemizedlist>
820         <listitem>
821           <para>
822             Version number 0.9.1.5 (was 0.9.1.4)
823           </para>
824         </listitem>
825       </itemizedlist>
826     </sect3>
827
828     <sect3>
829       <title>Cabal</title>
830       <itemizedlist>
831         <listitem>
832           <para>
833             Version number 1.8.0.0 (was 1.6.0.3)
834           </para>
835         </listitem>
836
837         <listitem>
838           <para>
839             Many API changes. See the Cabal docs for more information.
840           </para>
841         </listitem>
842       </itemizedlist>
843     </sect3>
844
845     <sect3>
846       <title>containers</title>
847       <itemizedlist>
848         <listitem>
849           <para>
850             Version number 0.3.0.0 (was 0.2.0.1)
851           </para>
852         </listitem>
853
854         <listitem>
855           <para>
856             <literal>mapAccumRWithKey</literal> has been added to
857             <literal>Data.IntMap</literal>.
858           </para>
859         </listitem>
860
861         <listitem>
862           <para>
863             A <literal>Traversable</literal> instance has been added to
864             <literal>Data.IntMap.IntMap</literal>.
865           </para>
866         </listitem>
867
868         <listitem>
869           <para>
870             The types of <literal>Data.IntMap.intersectionWith</literal>
871             and <literal>Data.IntMap.intersectionWithKey</literal> have
872             been changed from
873         </para>
874 <programlisting>
875 intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
876 intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
877 </programlisting>
878         <para>
879             to
880         </para>
881 <programlisting>
882 intersectionWith :: (a -> b -> c) -> IntMap a -> IntMap b -> IntMap c
883 intersectionWithKey :: (Key -> a -> b -> c) -> IntMap a -> IntMap b -> IntMap c
884 </programlisting>
885         </listitem>
886
887         <listitem>
888           <para>
889             The types of <literal>Data.IntMap.findMin</literal>
890             and <literal>Data.IntMap.findMax</literal> have
891             been changed from
892         </para>
893 <programlisting>
894 findMin :: IntMap a -> a
895 findMax :: IntMap a -> a
896 </programlisting>
897         <para>
898             to
899         </para>
900 <programlisting>
901 findMin :: IntMap a -> (Int,a)
902 findMax :: IntMap a -> (Int,a)
903 </programlisting>
904         </listitem>
905
906         <listitem>
907           <para>
908             <literal>Data.Map</literal> now exports
909             <literal>mapAccumRWithKey</literal>,
910             <literal>foldrWithKey</literal>,
911             <literal>foldlWithKey</literal> and
912             <literal>toDescList</literal>.
913           </para>
914         </listitem>
915
916         <listitem>
917           <para>
918             <literal>Data.Sequence</literal> now exports
919             <literal>replicate</literal>,
920             <literal>replicateA</literal>,
921             <literal>replicateM</literal>,
922             <literal>iterateN</literal>,
923             <literal>unfoldr</literal>,
924             <literal>unfoldl</literal>,
925             <literal>scanl</literal>,
926             <literal>scanl1</literal>,
927             <literal>scanr</literal>,
928             <literal>scanr1</literal>,
929             <literal>tails</literal>,
930             <literal>inits</literal>,
931             <literal>takeWhileL</literal>,
932             <literal>takeWhileR</literal>,
933             <literal>dropWhileL</literal>,
934             <literal>dropWhileR</literal>,
935             <literal>spanl</literal>,
936             <literal>spanr</literal>,
937             <literal>breakl</literal>,
938             <literal>breakr</literal>,
939             <literal>partition</literal>,
940             <literal>filter</literal>,
941             <literal>sort</literal>,
942             <literal>sortBy</literal>,
943             <literal>unstableSort</literal>,
944             <literal>unstableSortBy</literal>,
945             <literal>elemIndexL</literal>,
946             <literal>elemIndicesL</literal>,
947             <literal>elemIndexR</literal>,
948             <literal>elemIndicesR</literal>,
949             <literal>findIndexL</literal>,
950             <literal>findIndicesL</literal>,
951             <literal>findIndexR</literal>,
952             <literal>findIndicesR</literal>,
953             <literal>foldlWithIndex</literal>,
954             <literal>foldrWithIndex</literal>,
955             <literal>mapWithIndex</literal>,
956             <literal>zip</literal>,
957             <literal>zipWith</literal>,
958             <literal>zip3</literal>,
959             <literal>zipWith3</literal>,
960             <literal>zip4</literal> and
961             <literal>zipWith4</literal>.
962           </para>
963         </listitem>
964       </itemizedlist>
965     </sect3>
966
967     <sect3>
968       <title>directory</title>
969       <itemizedlist>
970         <listitem>
971           <para>
972             Version number 1.0.1.0 (was 1.0.0.3)
973           </para>
974         </listitem>
975
976         <listitem>
977           <para>
978             A new function <literal>copyPermissions</literal> has been
979             added to <literal>System.Directory</literal>.
980           </para>
981         </listitem>
982       </itemizedlist>
983     </sect3>
984
985     <sect3>
986       <title>
987         dph
988         (dph-base, dph-par, dph-prim-interface, dph-prim-par,
989         dph-prim-seq, dph-seq)
990       </title>
991       <itemizedlist>
992         <listitem>
993           <para>
994             All the dph packages are version 0.4.0.
995           </para>
996         </listitem>
997       </itemizedlist>
998     </sect3>
999
1000     <sect3>
1001       <title>extensible-exceptions</title>
1002       <itemizedlist>
1003         <listitem>
1004           <para>
1005             Version number 0.1.1.1 (was 0.1.1.0)
1006           </para>
1007         </listitem>
1008       </itemizedlist>
1009     </sect3>
1010
1011     <sect3>
1012       <title>filepath</title>
1013       <itemizedlist>
1014         <listitem>
1015           <para>
1016             Version number 1.1.0.3 (was 1.1.0.2)
1017           </para>
1018         </listitem>
1019
1020         <listitem>
1021           <para>
1022             The list of characters that are invalid in filenames on
1023             Windows now includes <literal>\</literal> (backslash).
1024           </para>
1025         </listitem>
1026       </itemizedlist>
1027     </sect3>
1028
1029     <sect3>
1030       <title>ghc-binary</title>
1031       <itemizedlist>
1032         <listitem>
1033           <para>
1034             This is an internal package, and should not be used.
1035           </para>
1036         </listitem>
1037       </itemizedlist>
1038     </sect3>
1039
1040     <sect3>
1041       <title>ghc-prim</title>
1042       <itemizedlist>
1043         <listitem>
1044           <para>
1045             Version number 0.2.0.0 (was 0.1.0.0)
1046           </para>
1047         </listitem>
1048       </itemizedlist>
1049     </sect3>
1050
1051     <sect3>
1052       <title>haskell98</title>
1053       <itemizedlist>
1054         <listitem>
1055           <para>
1056             Version number 1.0.1.1 (was 1.0.1.0)
1057           </para>
1058         </listitem>
1059       </itemizedlist>
1060     </sect3>
1061
1062     <sect3>
1063       <title>hpc</title>
1064       <itemizedlist>
1065         <listitem>
1066           <para>
1067             Version number 0.5.0.4 (was 0.5.0.3)
1068           </para>
1069         </listitem>
1070       </itemizedlist>
1071     </sect3>
1072
1073     <sect3>
1074       <title>integer-gmp</title>
1075       <itemizedlist>
1076         <listitem>
1077           <para>
1078             Version number 0.2.0.0 (was called integer, version 0.1.0.1)
1079           </para>
1080         </listitem>
1081       </itemizedlist>
1082     </sect3>
1083
1084     <sect3>
1085       <title>integer-simple</title>
1086       <itemizedlist>
1087         <listitem>
1088           <para>
1089             This is a new boot package, version 0.1.0.0.
1090           </para>
1091         </listitem>
1092       </itemizedlist>
1093     </sect3>
1094
1095     <sect3>
1096       <title>old-locale</title>
1097       <itemizedlist>
1098         <listitem>
1099           <para>
1100             Version number 1.0.0.2 (was 1.0.0.1)
1101           </para>
1102         </listitem>
1103
1104         <listitem>
1105           <para>
1106             Date and time in ISO8601 format are now separated by
1107             <literal>T</literal> rather than a space.
1108           </para>
1109         </listitem>
1110       </itemizedlist>
1111     </sect3>
1112
1113     <sect3>
1114       <title>old-time</title>
1115       <itemizedlist>
1116         <listitem>
1117           <para>
1118             Version number 1.0.0.3 (was 1.0.0.2)
1119           </para>
1120         </listitem>
1121       </itemizedlist>
1122     </sect3>
1123
1124     <sect3>
1125       <title>packedstring</title>
1126       <itemizedlist>
1127         <listitem>
1128           <para>
1129             This is no longer a boot package.
1130           </para>
1131         </listitem>
1132       </itemizedlist>
1133     </sect3>
1134
1135     <sect3>
1136       <title>pretty</title>
1137       <itemizedlist>
1138         <listitem>
1139           <para>
1140             Version number 1.0.1.1 (was 1.0.1.0)
1141           </para>
1142         </listitem>
1143       </itemizedlist>
1144     </sect3>
1145
1146     <sect3>
1147       <title>process</title>
1148       <itemizedlist>
1149         <listitem>
1150           <para>
1151             Version number 1.0.1.2 (was 1.0.1.1)
1152           </para>
1153         </listitem>
1154       </itemizedlist>
1155     </sect3>
1156
1157     <sect3>
1158       <title>random</title>
1159       <itemizedlist>
1160         <listitem>
1161           <para>
1162             Version number 1.0.0.2 (was 1.0.0.1)
1163           </para>
1164         </listitem>
1165       </itemizedlist>
1166     </sect3>
1167
1168     <sect3>
1169       <title>syb</title>
1170       <itemizedlist>
1171         <listitem>
1172           <para>
1173             Version number 0.1.0.2 (was 0.1.0.1)
1174           </para>
1175         </listitem>
1176       </itemizedlist>
1177     </sect3>
1178
1179     <sect3>
1180       <title>template-haskell</title>
1181       <itemizedlist>
1182         <listitem>
1183           <para>
1184             Version number 2.4.0.0 (was 2.3.0.1)
1185           </para>
1186         </listitem>
1187
1188         <listitem>
1189           <para>
1190             Support for <literal>inline</literal> and
1191             <literal>specialise</literal> pragmas has been added.
1192           </para>
1193         </listitem>
1194
1195         <listitem>
1196           <para>
1197             Support for bang patterns has been added
1198           </para>
1199         </listitem>
1200
1201         <listitem>
1202           <para>
1203             Support for kind annotations has been added
1204           </para>
1205         </listitem>
1206
1207         <listitem>
1208           <para>
1209             Support for equality constraints has been added
1210           </para>
1211         </listitem>
1212
1213         <listitem>
1214           <para>
1215             Support for type family declarations has been added
1216           </para>
1217         </listitem>
1218       </itemizedlist>
1219     </sect3>
1220
1221     <sect3>
1222       <title>time</title>
1223       <itemizedlist>
1224         <listitem>
1225           <para>
1226             This is a new boot package, version 1.1.4.
1227           </para>
1228         </listitem>
1229       </itemizedlist>
1230     </sect3>
1231
1232     <sect3>
1233       <title>unix</title>
1234       <itemizedlist>
1235         <listitem>
1236           <para>
1237             Version number 2.4.0.0 (was 2.3.2.0)
1238           </para>
1239         </listitem>
1240
1241         <listitem>
1242           <para>
1243             <literal>System.Posix.IO</literal> now exports
1244             <literal>fdReadBuf</literal> and
1245             <literal>fdWriteBuf</literal>.
1246           </para>
1247         </listitem>
1248
1249         <listitem>
1250           <para>
1251             <literal>System.Posix.Process.executeFile</literal> now
1252             returns <literal>IO a</literal> instead of
1253             <literal>IO ()</literal>.
1254           </para>
1255         </listitem>
1256       </itemizedlist>
1257     </sect3>
1258
1259     <sect3>
1260       <title>Win32</title>
1261       <itemizedlist>
1262         <listitem>
1263           <para>
1264             Version number 2.2.0.1 (was 2.2.0.0)
1265           </para>
1266         </listitem>
1267
1268         <listitem>
1269           <para>
1270             <literal>System.Win32.File</literal> now exports
1271             <literal>WIN32_FIND_DATA</literal>,
1272             <literal>FindData</literal>,
1273             <literal>getFindDataFileName</literal>,
1274             <literal>findFirstFile</literal>,
1275             <literal>findNextFile</literal> and
1276             <literal>findClose</literal>.
1277           </para>
1278         </listitem>
1279
1280         <listitem>
1281           <para>
1282             <literal>System.Win32.Info</literal> now exports
1283             <literal>getCurrentDirectory</literal>,
1284             <literal>getTemporaryDirectory</literal>,
1285             <literal>getFullPathName</literal> and
1286             <literal>searchPath</literal>.
1287           </para>
1288         </listitem>
1289
1290         <listitem>
1291           <para>
1292             <literal>System.Win32.Types</literal> now exports
1293             <literal>HRESULT</literal>.
1294           </para>
1295         </listitem>
1296
1297         <listitem>
1298           <para>
1299             There is a new module <literal>System.Win32.Shell</literal>.
1300           </para>
1301         </listitem>
1302       </itemizedlist>
1303     </sect3>
1304   </sect2>
1305 </sect1>
1306