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