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