1c10827a7ad9f960c0529886db2fa31f6b3d6594
[ghc-hetmet.git] / docs / users_guide / 7.0.1-notes.xml
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-7-0-1">
3   <title>Release notes for version 7.0.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.12 branch.
9   </para>
10
11   <sect2>
12     <title>Highlights</title>
13     <itemizedlist>
14       <listitem>
15         <para>
16           GHC now defaults to the Haskell 2010 language standard.
17         </para>
18
19         <para>
20           Libraries are not quite so straightforward.  By default, GHC
21           provides access to the <literal>base</literal> package,
22           which includes the Haskell 2010 libraries, albeit with a few
23           minor differences.  For those who want to write strictly
24           standards-conforming code we also provide
25           the <literal>haskell2010</literal> package which provides
26           the precise APIs specified by Haskell 2010, but because the
27           module names in this package overlap with those in
28           the <literal>base</literal> package it is not possible to
29           use both <literal>haskell2010</literal>
30           and <literal>base</literal> at the same time (this also
31           applies to the <literal>array</literal> package).  Hence to use
32           the Haskell 2010 libraries you should hide
33           the <literal>base</literal> and <literal>array</literal>
34           packages, for example with GHCi:
35 <screen>
36 $ ghci -package haskell2010 -hide-package base -hide-package array
37 </screen>
38           If you are using Cabal it isn't necessary to
39           hide <literal>base</literal> and <literal>array</literal>
40           explicitly, just don't include them in your <literal>build-depends</literal>.
41         </para>
42       </listitem>
43
44       <listitem>
45         <para>
46           On POSIX platforms, there is a new I/O manager based on
47           epoll/kqueue/poll, which allows multithreaded I/O code to
48           scale to a much larger number (100k+) of threads.
49         </para>
50       </listitem>
51
52       <listitem>
53         <para>
54                                         GHC now includes an LLVM code generator. For certain code,
55                                         particularly arithmetic heavy code, using the LLVM code
56                                         generator can bring some nice performance improvements.
57         </para>
58       </listitem>
59
60       <listitem>
61         <para>
62           The type checker has been overhauled, which means it is now
63           able to correctly handle interactions between the type system
64           extensions.
65         </para>
66       </listitem>
67
68       <listitem>
69         <para>
70           The inliner has been overhauled, which should in general
71           give better performance while reducing unnecessary code-size
72           explosion.
73         </para>
74       </listitem>
75
76       <listitem>
77         <para>
78           Large parts of the runtime system have been overhauled, in
79           particular the machinery related to blocking and wakeup of
80           threads and exception throwing (<literal>throwTo</literal>).
81           Several instances of pathological performance have been
82           fixed, especially where large numbers of threads are
83           involved.
84         </para>
85       </listitem>
86
87       <listitem>
88         <para>
89           Due to changes in the runtime system, if you are
90           using <literal>Control.Parallel.Strategies</literal> from
91           the <literal>parallel</literal> package, please upgrade to
92           at least version 2 (preferably version 3).  The
93           implementation of Strategies
94           in <literal>parallel-1.x</literal> will lose parallelism
95           with GHC 7.0.1.
96         </para>
97       </listitem>
98
99       <listitem>
100         <para>
101           The full Haskell <literal>import</literal> syntax can now been
102           used to bring modules into scope in GHCi, e.g.
103         </para>
104 <programlisting>
105 Prelude> import Data.List as L
106 Prelude Data.List> L.length "foo"
107 3
108 </programlisting>
109       </listitem>
110
111       <listitem>
112         <para>
113           GHC now comes with a more recent mingw bundled on Windows,
114           which includes a fix for windres on Windows 7.
115         </para>
116       </listitem>
117     </itemizedlist>
118   </sect2>
119
120   <sect2>
121     <title>Language changes</title>
122     <itemizedlist>
123       <listitem>
124         <para>
125           GHC now understands the <literal>Haskell98</literal> and
126           <literal>Haskell2010</literal> languages.
127         </para>
128
129         <para>
130           These get processed before the language extension pragmas,
131           and define the default sets of extensions that are enabled.
132           If neither is specified, then the default is
133           <literal>Haskell2010</literal> plus the
134           <literal>MonoPatBinds</literal> extension.
135         </para>
136       </listitem>
137
138       <listitem>
139         <para>
140           GHC now supports the <literal>DoAndIfThenElse</literal>
141           extension, which is part of the Haskell 2010 standard.
142         </para>
143       </listitem>
144
145       <listitem>
146         <para>
147           Datatype contexts, such as the <literal>Eq a</literal> in
148         </para>
149 <programlisting>
150 data Eq a => Set a = NilSet | ConsSet a (Set a)
151 </programlisting>
152         <para>
153           are now treated as an extension
154           <literal>DatatypeContexts</literal> (on by default) by GHC.
155         </para>
156       </listitem>
157
158       <listitem>
159         <para>
160           GHC's support for unicode source has been improved, including
161           removing support for U+22EF for the <literal>..</literal>
162           symbol. See <xref linkend="unicode-syntax" /> for more details.
163         </para>
164       </listitem>
165
166       <listitem>
167         <para>
168           Pragmas are now reread after preprocessing. In particular,
169           this means that if a pragma is used to turn CPP on, then other
170           pragmas can be put in CPP conditionals.
171         </para>
172       </listitem>
173
174       <listitem>
175         <para>
176           The <literal>TypeOperators</literal> extension now allows
177           instance heads to use infix syntax.
178         </para>
179       </listitem>
180
181       <listitem>
182         <para>
183           The <literal>PackageImports</literal> extension now understands
184           <literal>this</literal> to mean the current package.
185         </para>
186       </listitem>
187
188       <listitem>
189         <para>
190           The <literal>INLINE</literal> and <literal>NOINLINE</literal>
191           pragmas can now take a <literal>CONLIKE</literal> modifier,
192           which indicates that the right hand side is cheap to compute,
193           and can thus be duplicated more freely.
194           See <xref linkend="conlike" /> for more details.
195         </para>
196       </listitem>
197
198       <listitem>
199         <para>
200           A <literal>ForceSpecConstr</literal> annotation on a type, e.g.
201         </para>
202 <programlisting>
203 import SpecConstr
204 {-# ANN type SPEC ForceSpecConstr #-}
205 </programlisting>
206         <para>
207           can be used to force GHC to fully specialise argument of that
208           type.
209         </para>
210       </listitem>
211
212       <listitem>
213         <para>
214           A <literal>NoSpecConstr</literal> annotation on a type, e.g.
215         </para>
216 <programlisting>
217 import SpecConstr
218 {-# ANN type T NoSpecConstr #-}
219 </programlisting>
220         <para>
221           can be used to prevent SpecConstr from specialising on
222           arguments of that type.
223         </para>
224       </listitem>
225
226       <listitem>
227         <para>
228           There is are two experimental new extensions
229           <literal>AlternativeLayoutRule</literal> and
230           <literal>AlternativeLayoutRuleTransitional</literal>,
231           which are for exploring alternative layout rules in Haskell'.
232           The details are subject to change, so we advise against using
233           them in real code for now.
234         </para>
235       </listitem>
236
237       <listitem>
238         <para>
239           The <literal>NewQualifiedOperators</literal> extension has
240           been deprecated, as it was rejected by the Haskell' committee.
241         </para>
242       </listitem>
243     </itemizedlist>
244   </sect2>
245
246   <sect2>
247     <title>Warnings</title>
248     <itemizedlist>
249       <listitem>
250         <para>
251           There is now a warning for missing import lists, controlled
252           by the new <literal>-fwarn-missing-import-lists</literal> flag.
253         </para>
254       </listitem>
255
256       <listitem>
257         <para>
258           GHC will now warn about <literal>SPECIALISE</literal> and
259           <literal>UNPACK</literal> pragmas that have no effect.
260         </para>
261       </listitem>
262     </itemizedlist>
263   </sect2>
264
265   <sect2>
266     <title>DLLs</title>
267     <itemizedlist>
268       <listitem>
269         <para>
270           Shared libraries are once again supported on Windows.
271         </para>
272       </listitem>
273
274       <listitem>
275         <para>
276           Shared libraries are now supported on OS X, both on x86 and on
277           PowerPC. The new <literal>-dylib-install-name</literal> GHC
278           flag is used to set the location of the dynamic library.
279           See <xref linkend="finding-shared-libs" /> for more details.
280         </para>
281       </listitem>
282     </itemizedlist>
283   </sect2>
284
285   <sect2>
286     <title>Runtime system</title>
287
288     <itemizedlist>
289       <listitem>
290         <para>
291           For security reasons, by default, the only RTS flag that
292           programs accept is <literal>+RTS --info</literal>. If you want
293           the full range of RTS flags then you need to link with the new
294           <literal>-rtsopts</literal> flag. See
295           <xref linkend="options-linker" /> for more details.
296         </para>
297       </listitem>
298
299       <listitem>
300         <para>
301           The RTS now exports a function <literal>setKeepCAFs</literal>
302           which is important when loading Haskell DLLs dynamically, as
303           a DLL may refer to CAFs that hae already been GCed.
304         </para>
305       </listitem>
306
307       <listitem>
308         <para>
309           The garbage collector no longer allows you to specify a number
310           of steps; there are now always 2. The <literal>-T</literal>
311           RTS flag has thus been removed.
312         </para>
313       </listitem>
314
315       <listitem>
316         <para>
317           A new RTS flag <literal>-H</literal> causes the RTS to use a
318           larger nursery, but without exceeding the amount of memory
319           that the application is already using. It makes some programs
320           go slower, but others go faster.
321         </para>
322       </listitem>
323
324       <listitem>
325         <para>
326           GHC now returns memory to the OS, if memory usage peaks and
327           then drops again. This is mainly useful for long running
328           processes which normally use very little memory, but
329           occasionally need a lot of memory for a short period of time.
330         </para>
331       </listitem>
332
333       <listitem>
334         <para>
335           On OS X, eventLog events are now available as DTrace probes.
336         </para>
337       </listitem>
338
339       <listitem>
340         <para>
341           The PAPI support has been improved. The new RTS flag
342           <literal>-a#0x40000000</literal> can be used to tell the RTS
343           to collect the native PAPI event <literal>0x40000000</literal>.
344         </para>
345       </listitem>
346     </itemizedlist>
347   </sect2>
348
349   <sect2>
350     <title>Compiler</title>
351     <itemizedlist>
352       <listitem>
353         <para>
354           GHC now defaults to <literal>--make</literal> mode, i.e. GHC
355           will chase dependencies for you automatically by default.
356         </para>
357       </listitem>
358
359       <listitem>
360         <para>
361           GHC now includes an LLVM code generator.
362         </para>
363         <para>
364           This includes a number of new flags:
365           a flag to tell GHC to use LLVM, <literal>-fllvm</literal>;
366           a flag to dump the LLVM input ,<literal>-ddump-llvm</literal>;
367           flags to keep the LLVM intermediate files,
368           <literal>-keep-llvm-file</literal> and
369           <literal>-keep-llvm-files</literal>;
370                                         flags to set the location and options for the LLVM optimiser
371                                         and compiler,
372           <literal>-pgmlo</literal>,
373           <literal>-pgmlc</literal>,
374           <literal>-optlo</literal> and
375           <literal>-optlc</literal>.
376                                         The LLVM code generator requires LLVM version 2.7 or later on
377                                         your path.
378         </para>
379       </listitem>
380
381       <listitem>
382         <para>
383           It is now possible to use <literal>-fno-code</literal> with
384           <literal>--make</literal>.
385         </para>
386       </listitem>
387
388       <listitem>
389         <para>
390           The new flag <literal>-dsuppress-coercions</literal> controls
391           whether GHC prints coercions in core dumps.
392         </para>
393       </listitem>
394
395       <listitem>
396         <para>
397           The new flag <literal>-dsuppress-module-prefixes</literal>
398           controls whether GHC prints module qualification prefixes
399           in core dumps.
400         </para>
401       </listitem>
402
403       <listitem>
404         <para>
405           The inliner has been overhauled. The most significant
406           user-visible change is that only saturated functions are
407           inlined, e.g.
408         </para>
409 <programlisting>
410 (.) f g x = f (g x)
411 </programlisting>
412         <para>
413           would only be inlined if <literal>(.)</literal> is applied to 3
414           arguments, while
415         </para>
416 <programlisting>
417 (.) f g = \x -> f (g x)
418 </programlisting>
419         <para>
420           will be inlined if only applied to 2 arguments.
421         </para>
422       </listitem>
423
424       <listitem>
425         <para>
426           The <literal>-finline-if-enough-args</literal> flag is no
427           longer supported.
428         </para>
429       </listitem>
430
431       <listitem>
432         <para>
433           Column numbers in warnings and error messages now start at 1,
434           as is more standard, rather than 0.
435         </para>
436       </listitem>
437
438       <listitem>
439         <para>
440           GHCi now understands most linker scripts. In particular, this
441           means that GHCi is able to load the C pthread library.
442         </para>
443       </listitem>
444
445       <listitem>
446         <para>
447           The <literal>ghc --info</literal> output has been updated:
448         </para>
449         <para>
450           It now includes the
451           location of the global package database, in the
452           <literal>Global Package DB</literal> field.
453         </para>
454         <para>
455           It now includes the build, host and target platforms, in the
456           <literal>Build platform</literal>,
457           <literal>Host platform</literal> and
458           <literal>Target platform</literal> fields.
459         </para>
460         <para>
461           It now includes a <literal>Have llvm code generator</literal>
462           field.
463         </para>
464         <para>
465           The <literal>Win32 DLLs</literal> field has been removed.
466         </para>
467       </listitem>
468
469       <listitem>
470         <para>
471           The registerised via-C backend, and the
472           <literal>-fvia-C</literal> flag, have been deprecated. The poor
473           floating-point performance in the x86 native code generator
474           has now been fixed, so we don't believe there is still any
475           reason to use the via-C backend.
476         </para>
477       </listitem>
478
479       <listitem>
480         <para>
481           There is now a new flag <literal>--supported-extensions</literal>,
482           which currently behaves the same as
483           <literal>--supported-languages</literal>.
484         </para>
485       </listitem>
486
487       <listitem>
488         <para>
489           GHC progress output such as
490         </para>
491 <programlisting>
492 [ 1 of 5] Compiling Foo              ( Foo.hs, Foo.o )
493 </programlisting>
494         <para>
495           is now sent to stdout rather than stderr.
496         </para>
497       </listitem>
498
499       <listitem>
500         <para>
501           The new flag <literal>-fexpose-all-unfoldings</literal>
502           makes GHC put unfoldings for <emphasis>everything</emphasis>
503           in the interface file.
504         </para>
505       </listitem>
506
507       <listitem>
508         <para>
509           There are two new flags, <literal>-fno-specialise</literal>
510           and <literal>-fno-float-in</literal>, for disabling the
511           specialise and float-in passes.
512         </para>
513       </listitem>
514
515       <listitem>
516         <para>
517           The new flag <literal>-fstrictness-before=<replaceable>n</replaceable></literal> tells
518           GHC to run an additional strictness analysis pass
519           before simplifier phase <replaceable>n</replaceable>.
520         </para>
521       </listitem>
522
523       <listitem>
524         <para>
525           There is a new flag
526           <literal>-funfolding-dict-discount</literal>
527           for tweaking the optimiser's behaviour.
528         </para>
529       </listitem>
530
531       <listitem>
532         <para>
533           The <literal>-fspec-inline-join-points</literal> flag has been
534           removed.
535         </para>
536       </listitem>
537
538       <listitem>
539         <para>
540           The <literal>-dynload wrapper</literal> flag has been
541           removed.
542         </para>
543       </listitem>
544     </itemizedlist>
545   </sect2>
546
547   <sect2>
548     <title>GHCi</title>
549     <itemizedlist>
550       <listitem>
551         <para>
552           GHCi now understands layout in multi-line commands, so
553           this now works:
554         </para>
555 <programlisting>
556 Prelude> :{
557 Prelude| let x = 1
558 Prelude|     y = 2 in x + y
559 Prelude| :}
560 3
561 </programlisting>
562       </listitem>
563     </itemizedlist>
564   </sect2>
565
566   <sect2>
567     <title>Template Haskell and Quasi-Quoters</title>
568     <itemizedlist>
569       <listitem>
570         <para>
571           It is now possible to quasi-quote patterns with
572           <literal>[p| ... |]</literal>.
573         </para>
574       </listitem>
575
576       <listitem>
577         <para>
578           It is no longer to use a <literal>$</literal> before the
579           name of a quasi-quoter, e.g. one can now say
580           <literal>[expr| ... |]</literal> rather than
581           <literal>[$expr| ... |]</literal>.
582         </para>
583       </listitem>
584
585       <listitem>
586         <para>
587           It is now possible to use a quasi-quoter for types, e.g.
588           <literal>f :: [$qq| ... |]</literal>
589         </para>
590       </listitem>
591
592       <listitem>
593         <para>
594           It is now possible to quasi-quote existentials and GADTs.
595         </para>
596       </listitem>
597     </itemizedlist>
598   </sect2>
599
600   <sect2>
601     <title>GHC API</title>
602     <itemizedlist>
603       <listitem>
604         <para>
605           There are now <literal>Data</literal> and
606           <literal>Typeable</literal> instances for the
607           HsSyn typed.
608         </para>
609       </listitem>
610
611       <listitem>
612         <para>
613           As language extensions are not applied until after the base
614           language (Haskell98, Haskell2010 or the default) has been
615           selected, it is now necessary to tell the GHC API the point
616           at which the extension flags should be processed. Normally
617           this is done by calling
618           <literal>DynFlags.flattenExtensionFlags</literal> once all
619           the flags and pragmas have been read.
620         </para>
621       </listitem>
622     </itemizedlist>
623   </sect2>
624
625   <sect2>
626     <title>Libraries</title>
627
628     <sect3>
629         <title>array</title>
630         <itemizedlist>
631             <listitem>
632                 <para>
633                     Version number 0.3.0.2 (was 0.3.0.1)
634                 </para>
635             </listitem>
636         </itemizedlist>
637     </sect3>
638
639     <sect3>
640         <title>base</title>
641         <itemizedlist>
642             <listitem>
643                 <para>
644                     Version number 4.3.0.0 (was 4.2.0.2)
645                 </para>
646             </listitem>
647
648             <listitem>
649                 <para>
650                     There is a new asynchronous exception control API
651                     in <literal>Control.Exception</literal>, using the
652                     new functions
653                     <literal>mask :: ((forall a. IO a -> IO a) -> IO b) -> IO b</literal>
654                     and <literal>mask_ :: IO a -> IO a</literal>
655                     rather than the old
656                     <literal>block</literal> and <literal>unblock</literal>.
657                     There are also functions
658                     <literal>uninterruptibleMask :: ((forall a. IO a -> IO a) -> IO b) -> IO b</literal>
659                     and
660                     <literal>getMaskingState :: IO MaskingState</literal>,
661                     and a type
662                     <literal>MaskingState</literal>, as well as
663                     <literal>forkIOUnmasked :: IO () -> IO ThreadId</literal>
664                     in <literal>Control.Concurrent</literal>.
665                 </para>
666             </listitem>
667
668             <listitem>
669                 <para>
670                     <literal>Control.Monad</literal> exports a new function
671                     <literal>void :: Functor f => f a -> f ()</literal>.
672                 </para>
673             </listitem>
674
675             <listitem>
676                 <para>
677                     <literal>Data.Tuple</literal> exports a new function
678                     <literal>swap :: (a,b) -> (b,a)</literal>.
679                 </para>
680             </listitem>
681
682             <listitem>
683                 <para>
684                     <literal>System.IO</literal> exports a new function
685                     <literal>hGetBufSome :: Handle -> Ptr a -> Int -> IO Int</literal>
686                     which is like <literal>hGetBuf</literal> but can
687                     return short reads.
688                 </para>
689             </listitem>
690
691             <listitem>
692                 <para>
693                     There is a new function
694                     <literal>mfilter :: MonadPlus m => (a -> Bool) -> m a -> m a</literal>
695                     in
696                     <literal>Control.Monad</literal>.
697                 </para>
698             </listitem>
699
700             <listitem>
701                 <para>
702                     The <literal>Foreign.Marshal</literal> module now
703                     exports
704                     <literal>unsafeLocalState :: IO a -> a</literal>
705                     as specified by Haskell 2010.
706                 </para>
707             </listitem>
708
709             <listitem>
710                 <para>
711                     The <literal></literal>
712                     module now exports four new functions specified by
713                     Haskell 2010:
714                     <literal>castCUCharToChar :: CUChar -> Char</literal>,
715                     <literal>castCharToCUChar :: Char -> CUChar</literal>,
716                     <literal>castCSCharToChar :: CSChar -> Char</literal> and
717                     <literal>castCharToCSChar :: Char -> CSChar</literal>.
718                 </para>
719             </listitem>
720
721             <listitem>
722                 <para>
723                     The <literal>Foreign.Marshal.Alloc</literal>
724                     module now exports
725                     <literal>allocaBytesAligned :: Int -> Int -> (Ptr a -> IO b) -> IO b</literal>
726                     for allocating memory with a particular alignment.
727                 </para>
728             </listitem>
729
730             <listitem>
731                 <para>
732                     There is a new function
733                     <literal>numSparks :: IO Int</literal>
734                     in <literal>GHC.Conc</literal>.
735                 </para>
736             </listitem>
737
738             <listitem>
739                 <para>
740                     <literal>Data.Either.partitionEithers</literal>
741                     in now lazier.
742                 </para>
743             </listitem>
744
745             <listitem>
746                 <para>
747                     There is now a <literal>Typeable</literal> instance for
748                     <literal>Data.Unique.Unique</literal>.
749                 </para>
750             </listitem>
751
752             <listitem>
753                 <para>
754                     <literal>Control.Concurrent.SampleVar.SampleVar</literal>
755                     is now an abstract type.
756                 </para>
757             </listitem>
758
759             <listitem>
760                 <para>
761                     There are now
762                     <literal>Applicative</literal>,
763                     <literal>Alternative</literal> and
764                     <literal>MonadPlus</literal>
765                     instances for <literal>STM</literal>.
766                 </para>
767             </listitem>
768
769             <listitem>
770                 <para>
771                     There are now <literal>Applicative</literal>,
772                     <literal>Monad</literal> and
773                     <literal>MonadFix</literal>
774                     instances for <literal>Either</literal>.
775                 </para>
776             </listitem>
777
778             <listitem>
779                 <para>
780                     There are now
781                     <literal>Ord</literal>,
782                     <literal>Read</literal> and
783                     <literal>Show</literal> instances for
784                     <literal>Newline</literal> and
785                     <literal>NewlineMode</literal>.
786                 </para>
787             </listitem>
788
789             <listitem>
790                 <para>
791                     There is now a <literal>Show</literal> instance for
792                     <literal>TextEncoding</literal>.
793                 </para>
794             </listitem>
795
796             <listitem>
797                 <para>
798                     The <literal>unGetChan</literal> and
799                     <literal>isEmptyChan</literal> functions in
800                     <literal>Control.Concurrent.Chan</literal> are now
801                     deprecated.
802                     <literal>Control.Concurrent.STM.TChan</literal>
803                     should be used instead if you need that
804                     functionality.
805                 </para>
806             </listitem>
807
808             <listitem>
809                 <para>
810                     The <literal>Read Integer</literal> instance now
811                     matches the standard definition.
812                 </para>
813             </listitem>
814         </itemizedlist>
815     </sect3>
816
817     <sect3>
818         <title>base 3 compat</title>
819         <itemizedlist>
820             <listitem>
821                 <para>
822                     We no longer ship a base 3 compat package
823                 </para>
824             </listitem>
825         </itemizedlist>
826     </sect3>
827
828     <sect3>
829         <title>bin-package-db</title>
830         <itemizedlist>
831             <listitem>
832                 <para>
833                     This is an internal package, and should not be used.
834                 </para>
835             </listitem>
836         </itemizedlist>
837     </sect3>
838
839     <sect3>
840         <title>bytestring</title>
841         <itemizedlist>
842             <listitem>
843                 <para>
844                     Version number 0.9.1.8 (was 0.9.1.7)
845                 </para>
846             </listitem>
847         </itemizedlist>
848     </sect3>
849
850     <sect3>
851         <title>Cabal</title>
852         <itemizedlist>
853             <listitem>
854                 <para>
855                     Version number 1.9.2 (was 1.8.0.6)
856                 </para>
857             </listitem>
858
859             <listitem>
860                 <para>
861                     Many API changes. See the Cabal docs for more information.
862                 </para>
863             </listitem>
864         </itemizedlist>
865     </sect3>
866
867     <sect3>
868         <title>containers</title>
869         <itemizedlist>
870             <listitem>
871                 <para>
872                     Version number 0.4.0.0 (was 0.3.0.0)
873                 </para>
874             </listitem>
875
876             <listitem>
877                 <para>
878                     Strictness is now more consistent, with containers
879                     being strict in their elements even in singleton
880                     cases.
881                 </para>
882             </listitem>
883
884             <listitem>
885                 <para>
886                     There is a new function
887                     <literal>insertLookupWithKey'</literal> in
888                     <literal>Data.Map</literal>.
889                 </para>
890             </listitem>
891
892             <listitem>
893                 <para>
894                     The <literal>foldWithKey</literal> function in
895                     <literal>Data.Map</literal> has been deprecated in
896                     favour of <literal>foldrWithKey</literal>.
897                 </para>
898             </listitem>
899         </itemizedlist>
900     </sect3>
901
902     <sect3>
903         <title>directory</title>
904         <itemizedlist>
905             <listitem>
906                 <para>
907                     Version number 1.1.0.0 (was 1.0.1.1)
908                 </para>
909             </listitem>
910
911             <listitem>
912                 <para>
913                     The <literal>System.Directory</literal> module
914                     now exports the <literal>Permissions</literal> type
915                     abstractly. There are also new functions
916                     <literal>setOwnerReadable</literal>,
917                     <literal>setOwnerWritable</literal>,
918                     <literal>setOwnerExecutable</literal> and
919                     <literal>setOwnerSearchable</literal>, and
920                     a new value <literal>emptyPermissions</literal>.
921                 </para>
922             </listitem>
923         </itemizedlist>
924     </sect3>
925
926     <sect3>
927         <title>
928             dph
929             (dph-base, dph-par, dph-prim-interface, dph-prim-par,
930             dph-prim-seq, dph-seq)
931         </title>
932         <itemizedlist>
933             <listitem>
934                 <para>
935                     All the dph packages are version 0.4.0.
936                 </para>
937             </listitem>
938         </itemizedlist>
939     </sect3>
940
941     <sect3>
942         <title>extensible-exceptions</title>
943         <itemizedlist>
944             <listitem>
945                 <para>
946                     Version number 0.1.1.2 (was 0.1.1.1)
947                 </para>
948             </listitem>
949         </itemizedlist>
950     </sect3>
951
952     <sect3>
953         <title>filepath</title>
954         <itemizedlist>
955             <listitem>
956                 <para>
957                     Version number 1.2.0.0 (was 1.1.0.4)
958                 </para>
959             </listitem>
960
961             <listitem>
962                 <para>
963                     The current directory is now <literal>"."</literal>
964                     rather than <literal>""</literal>.
965                 </para>
966             </listitem>
967         </itemizedlist>
968     </sect3>
969
970     <sect3>
971         <title>ghc-binary</title>
972         <itemizedlist>
973             <listitem>
974                 <para>
975                     This is an internal package, and should not be used.
976                 </para>
977             </listitem>
978         </itemizedlist>
979     </sect3>
980
981     <sect3>
982         <title>ghc-prim</title>
983         <itemizedlist>
984             <listitem>
985                 <para>
986                     This is an internal package, and should not be used.
987                 </para>
988             </listitem>
989         </itemizedlist>
990     </sect3>
991
992     <sect3>
993         <title>haskell98</title>
994         <itemizedlist>
995             <listitem>
996                 <para>
997                     Version number 1.1.0.0 (was 1.0.1.1)
998                 </para>
999             </listitem>
1000
1001             <listitem>
1002                 <para>
1003                     In the <literal>Directory</literal> module, the
1004                     <literal>Permissions</literal> type and the
1005                     <literal>getPermissions</literal> and
1006                     <literal>setPermissions</literal> functions are now
1007                     different to their equivalents in
1008                     <literal>base:System.Directory</literal>.
1009                 </para>
1010             </listitem>
1011         </itemizedlist>
1012     </sect3>
1013
1014     <sect3>
1015         <title>haskell2010</title>
1016         <itemizedlist>
1017             <listitem>
1018                 <para>
1019                     This is a new boot package, version 1.0.0.0.
1020                     It is not exposed by default.
1021                 </para>
1022             </listitem>
1023         </itemizedlist>
1024     </sect3>
1025
1026     <sect3>
1027         <title>hpc</title>
1028         <itemizedlist>
1029             <listitem>
1030                 <para>
1031                     Version number 0.5.0.6 (was 0.5.0.5)
1032                 </para>
1033             </listitem>
1034         </itemizedlist>
1035     </sect3>
1036
1037     <sect3>
1038         <title>integer-gmp</title>
1039         <itemizedlist>
1040             <listitem>
1041                 <para>
1042                     Version number 0.2.0.2 (was 0.2.0.1)
1043                 </para>
1044             </listitem>
1045         </itemizedlist>
1046     </sect3>
1047
1048     <sect3>
1049         <title>old-locale</title>
1050         <itemizedlist>
1051             <listitem>
1052                 <para>
1053                     No change (version 1.0.0.2)
1054                 </para>
1055             </listitem>
1056         </itemizedlist>
1057     </sect3>
1058
1059     <sect3>
1060         <title>old-time</title>
1061         <itemizedlist>
1062             <listitem>
1063                 <para>
1064                     Version number 1.0.0.6 (was 1.0.0.5)
1065                 </para>
1066             </listitem>
1067         </itemizedlist>
1068     </sect3>
1069
1070     <sect3>
1071         <title>pretty</title>
1072         <itemizedlist>
1073             <listitem>
1074                 <para>
1075                     Version number 1.0.1.2 (was 1.0.1.1)
1076                 </para>
1077             </listitem>
1078         </itemizedlist>
1079     </sect3>
1080
1081     <sect3>
1082         <title>process</title>
1083         <itemizedlist>
1084             <listitem>
1085                 <para>
1086                     Version number 1.0.1.4 (was 1.0.1.3)
1087                 </para>
1088             </listitem>
1089         </itemizedlist>
1090     </sect3>
1091
1092     <sect3>
1093         <title>random</title>
1094         <itemizedlist>
1095             <listitem>
1096                 <para>
1097                     Version number 1.0.0.3 (was 1.0.0.2)
1098                 </para>
1099             </listitem>
1100         </itemizedlist>
1101     </sect3>
1102
1103     <sect3>
1104         <title>syb</title>
1105         <itemizedlist>
1106             <listitem>
1107                 <para>
1108                     The syb package is no longer included with GHC.
1109                 </para>
1110             </listitem>
1111         </itemizedlist>
1112     </sect3>
1113
1114     <sect3>
1115         <title>template-haskell</title>
1116         <itemizedlist>
1117             <listitem>
1118                 <para>
1119                     Version number 2.5.0.0 (was 2.4.0.1)
1120                 </para>
1121             </listitem>
1122
1123             <listitem>
1124                 <para>
1125                     There is a new type synonym <literal>DecsQ</literal>
1126                     in <literal>Language.Haskell.TH.Lib</literal>.
1127                 </para>
1128             </listitem>
1129
1130             <listitem>
1131                 <para>
1132                     There is a new <literal>StringPrimL</literal>
1133                     constructor in
1134                     <literal>Language.Haskell.TH.Syntax.Lit</literal>,
1135                     and a new helper function
1136                     <literal>stringPrimL</literal> for it in
1137                     <literal>Language.Haskell.TH.Lib</literal>.
1138                 </para>
1139             </listitem>
1140
1141             <listitem>
1142                 <para>
1143                     There is a new function <literal>quoteFile</literal>
1144                     in <literal>Language.Haskell.TH.Quote</literal>.
1145                 </para>
1146             </listitem>
1147
1148             <listitem>
1149                 <para>
1150                     The
1151                     <literal>Language.Haskell.TH.Quote.QuasiQuoter</literal>
1152                     type has two new fields:
1153                     <literal>quoteType</literal> and
1154                     <literal>quoteDec</literal>.
1155                 </para>
1156             </listitem>
1157
1158             <listitem>
1159                 <para>
1160                     There is a new <literal>ClassInstance</literal>
1161                     type in <literal>Language.Haskell.TH.Syntax</literal>.
1162                     The
1163                     <literal>Language.Haskell.TH.Syntax.Info.ClassI</literal>
1164                     constructor now includes a value of this type, which
1165                     allows instance information to be queried via the
1166                     new <literal>isClassInstance</literal>
1167                     and <literal>classInstances</literal> functions.
1168                     There is also a new method
1169                     <literal>qClassInstances</literal> in the
1170                     <literal>Quasi</literal> class.
1171                 </para>
1172             </listitem>
1173         </itemizedlist>
1174     </sect3>
1175
1176     <sect3>
1177         <title>time</title>
1178         <itemizedlist>
1179             <listitem>
1180                 <para>
1181                     Version number 1.2.0.3 (was 1.1.4)
1182                 </para>
1183             </listitem>
1184
1185             <listitem>
1186                 <para>
1187                     The types provided by the time package now include
1188                     <literal>Data</literal> instances.
1189                 </para>
1190             </listitem>
1191         </itemizedlist>
1192     </sect3>
1193
1194     <sect3>
1195         <title>unix</title>
1196         <itemizedlist>
1197             <listitem>
1198                 <para>
1199                     Version number 2.4.1.0 (was 2.4.0.2)
1200                 </para>
1201             </listitem>
1202
1203             <listitem>
1204                 <para>
1205                     There are three new helper function in
1206                     <literal>System.Posix.Error</literal>:
1207                     <literal>throwErrnoPathIfRetry</literal>,
1208                     <literal>throwErrnoPathIfNullRetry</literal> and
1209                     <literal>throwErrnoPathIfMinus1Retry</literal>.
1210                 </para>
1211             </listitem>
1212
1213             <listitem>
1214                 <para>
1215                     There are three new functions in
1216                     <literal>System.Posix.User</literal>:
1217                     <literal>setEffectiveUserID</literal>,
1218                     <literal>setEffectiveGroupID</literal> and
1219                     <literal>setGroups</literal>.
1220                 </para>
1221             </listitem>
1222         </itemizedlist>
1223     </sect3>
1224   </sect2>
1225 </sect1>
1226