Make some profiling flags dynamic
[ghc-hetmet.git] / docs / users_guide / 6.10.1-notes.xml
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-6-10-1">
3   <title>Release notes for version 6.10.1</title>
4
5   <para>
6     The significant changes to the various parts of the compiler are
7     listed in the following sections.
8   </para>
9
10   <sect2>
11     <title>User-visible compiler changes</title>
12     <itemizedlist>
13       <listitem>
14         <para>
15           The new QuasiQuotes language extension adds
16           general quasi-quotation, as described in
17           "Nice to be Quoted: Quasiquoting for Haskell"
18           (Geoffrey Mainland, Haskell Workshop 2007).
19           See <xref linkend="th-quasiquotation" /> for more information.
20         </para>
21       </listitem>
22       <listitem>
23         <para>
24           The new ViewPatterns language extension allows
25           &quot;view patterns&quot;. The syntax for view patterns
26           is <literal>expression -> pattern</literal> in a pattern.
27           For more information, see <xref linkend="view-patterns" />.
28         </para>
29       </listitem>
30       <listitem>
31         <para>
32           GHC already supported (e op) postfix operators, but this
33           support was enabled by default. Now you need to use the
34           PostfixOperators language extension if you want it.
35           See <xref linkend="postfix-operators" /> for more information
36           on postfix operators.
37         </para>
38       </listitem>
39       <listitem>
40         <para>
41           The new TransformListComp language extension enables
42           implements generalised list comprehensions, as described in
43           the paper "Comprehensive comprehensions" (Peyton Jones &amp;
44           Wadler, Haskell Workshop 2007).
45           For more information see
46           <xref linkend="generalised-list-comprehensions" />.
47         </para>
48       </listitem>
49       <listitem>
50         <para>
51           If you want to use impredicative types then you now need to
52           enable the ImpredicativeTypes language extension.
53           See <xref linkend="impredicative-polymorphism" /> for more
54           information.
55         </para>
56       </listitem>
57       <listitem>
58         <para>
59           FFI change: header files are now <emphasis>not
60             used</emphasis> when compiling via C.
61             The <option>-#include</option> flag,
62             the <literal>includes</literal> field
63             in <literal>.cabal</literal> files, and header files
64             specified in a <literal>foreign import</literal>
65             declaration all have no effect when compiling Haskell
66           source code.</para>
67
68         <para>This change has important ramifications if you are
69           calling FFI functions that are defined by macros (or renamed
70           by macros).  If you need to call one of these functions,
71           then write a C wrapper for the function and call the wrapper
72           using the FFI instead.  In this way, your code will work
73           with GHC 6.10.1, and will also work
74           with <option>-fasm</option> in older GHCs.</para>
75
76         <para>This change was made for several reasons.
77           Firstly, <option>-fvia-C</option> now behaves consistently
78           with <option>-fasm</option>, which is important because we
79           intend to stop compiling via C in the future.  Also, we
80           don't need to worry about the interactions between header
81           files, or CPP options necessary to expose certain functions
82           from the system header files (this was becoming quite a
83           headache).  We don't need to worry about needing header
84           files when inlining FFI calls across module or package
85           boundaries; calls can now be inlined freely.  One downside
86           is that you don't get a warning from the C compiler when you
87           call a function via the FFI at the wrong type.
88         </para>
89
90         <para>Another consequence of this change is that
91           calling <emphasis>varargs</emphasis> functions (such
92           as <literal>printf</literal>) via the FFI no longer works.
93           It has never been officially supported (the FFI spec outlaws
94           it), but in GHC 6.10.1 it may now really cause a crash on
95           certain platforms.  Again, to call one of these functions
96           use appropriate fixed-argument C wrappers.</para>
97       </listitem>
98       <listitem>
99         <para>
100           There is a new languages extension PackageImports which allows
101           imports to be qualified with the package they should come
102           from, e.g.
103         </para>
104 <programlisting>
105 import "network" Network.Socket
106 </programlisting>
107         <para>
108           Note that this feature is not intended for general use, it
109           was added for constructing backwards-compatibility packages
110           such as the <literal>base-3.0.3.0</literal> package.  See
111           <xref linkend="package-imports" /> for more details.
112         </para>
113       </listitem>
114       <listitem>
115         <para>
116           In earlier versions of GHC, the recompilation checker didn't
117           notice changes in other packages meant that recompilation is
118           needed. This is now handled properly, using MD5 checksums of
119           the interface ABIs.
120         </para>
121       </listitem>
122       <listitem>
123         <para>
124           GHC now treats the Unicode "Letter, Other" class as lowercase
125           letters. This is an arbitrary choice, but better than not
126           allowing them in identifiers at all. This may be revisited
127           by Haskell'.
128         </para>
129       </listitem>
130       <listitem>
131         <para>
132           In addition to the <literal>DEPRECATED</literal> pragma, you
133           can now attach arbitrary warnings to declarations with the new
134           <literal>WARNING</literal> pragma. See
135           <xref linkend="warning-deprecated-pragma" /> for more details.
136         </para>
137       </listitem>
138       <listitem>
139         <para>
140           If GHC is failing due to <literal>-Werror</literal>, then it
141           now emits a message telling you so.
142         </para>
143       </listitem>
144       <listitem>
145         <para>
146           GHC now warns about unrecognised pragmas, as they are often
147           caused by a typo. The
148           <literal>-fwarn-unrecognised-pragmas</literal> controls
149           whether this warning is emitted.
150           The warning is enabled by default.
151         </para>
152       </listitem>
153       <listitem>
154         <para>
155           There is a new flag
156           <literal>-fwarn-dodgy-foreign-imports</literal> which controls
157           a new warning about FFI delcarations of the form
158         </para>
159 <programlisting>
160 foreign import "f" f :: FunPtr t
161 </programlisting>
162         <para>
163           on the grounds that it is probably meant to be
164         </para>
165 <programlisting>
166 foreign import "&amp;f" f :: FunPtr t
167 </programlisting>
168         <para>
169           The warning is enabled by default.
170         </para>
171       </listitem>
172       <listitem>
173         <para>
174           External core (output only) is working again.
175         </para>
176       </listitem>
177       <listitem>
178         <para>
179           There is a new flag <literal>-dsuppress-uniques</literal> that
180           makes GHC's intermediate core easier to read. This flag cannot
181           be used when actually generating code.
182         </para>
183       </listitem>
184       <listitem>
185         <para>
186           There is a new flag <literal>-dno-debug-output</literal> that
187           suppresses all of the debug information when running a
188           compiler built with the <literal>DEBUG</literal> option.
189         </para>
190       </listitem>
191       <listitem>
192         <para>
193           A bug in earlier versions of GHC meant that sections didn't
194           always need to be parenthesised, e.g.
195           <literal>(+ 1, 2)</literal> was accepted. This has now been
196           fixed.
197         </para>
198       </listitem>
199       <listitem>
200         <para>
201           The <literal>-fspec-threshold</literal> flag has been replaced
202           by <literal>-fspec-constr-threshold</literal> and
203           <literal>-fliberate-case-threshold</literal> flags.
204           The thresholds can be disabled by
205           <literal>-fno-spec-constr-threshold</literal> and
206           <literal>-fno-liberate-case-threshold</literal>.
207         </para>
208       </listitem>
209       <listitem>
210         <para>
211           The new flag <literal>-fsimplifier-phases</literal>
212           controls the number of simplifier phases run during
213           optimisation. These are numbered from n to 1 (by default, n=2).
214           Phase 0 is always run regardless of this flag.
215         </para>
216       </listitem>
217       <listitem>
218         <para>
219           Simplifier phases can have an arbitrary number of tags
220           assigned to them, and multiple phases can share the same tags.
221           The tags can be used as arguments to the new flag
222           <literal>-ddump-simpl-phases</literal>
223           to specify which phases are to be dumped.
224         </para>
225
226         <para>
227           For example,
228           <literal>-ddump-simpl-phases=main</literal> will dump the
229           output of phases 2, 1 and 0 of the initial simplifier run
230           (they all share the "main" tag) while
231           <literal>-ddump-simpl-phases=main:0</literal>
232           will dump only the output of phase 0 of that run.
233         </para>
234
235         <para>
236           At the moment, the supported tags are
237           main (the main, staged simplifier run (before strictness)),
238           post-worker-wrapper (after the w/w split),
239           post-liberate-case  (after LiberateCase), and
240           final (final clean-up run)
241         </para>
242
243         <para>
244           The names are somewhat arbitrary and will change in the future.
245         </para>
246       </listitem>
247       <listitem>
248         <para>
249           The <literal>-fno-method-sharing</literal> flag is now
250           dynamic (it used to be static).
251         </para>
252       </listitem>
253     </itemizedlist>
254   </sect2>
255
256   <sect2>
257     <title>Deprecated flags</title>
258
259     <itemizedlist>
260       <listitem>
261         <para>
262           The new flag <literal>-fwarn-deprecated-flags</literal>,
263           controls whether we warn about deprecated flags and language
264           extensions. The warning is on by default.
265         </para>
266       </listitem>
267       <listitem>
268         <para>
269           The following language extensions are now marked as
270           deprecated; expect them to be removed in a future release:
271         </para>
272         <itemizedlist>
273           <listitem>
274             <para>
275               <literal>RecordPuns</literal>
276               (use <literal>NamedFieldPuns</literal> instead)
277             </para>
278           </listitem>
279           <listitem>
280             <para>
281               <literal>PatternSignatures</literal>
282               (use <literal>ScopedTypeVariables</literal> instead)
283             </para>
284           </listitem>
285         </itemizedlist>
286       </listitem>
287       <listitem>
288         <para>
289           The following flags are now marked as deprecated;
290           expect them to be removed in a future release:
291         </para>
292         <itemizedlist>
293           <listitem>
294             <para>
295               <literal>-Onot</literal>
296               (use <literal>-O0</literal> instead)
297             </para>
298           </listitem>
299           <listitem>
300             <para>
301               <literal>-Wnot</literal>
302               (use <literal>-w</literal> instead)
303             </para>
304           </listitem>
305           <listitem>
306             <para>
307               <literal>-frewrite-rules</literal>
308               (use <literal>-fenable-rewrite-rules</literal> instead)
309             </para>
310           </listitem>
311           <listitem>
312             <para>
313               <literal>-no-link</literal>
314               (use <literal>-c</literal> instead)
315             </para>
316           </listitem>
317           <listitem>
318             <para>
319               <literal>-recomp</literal>
320               (use <literal>-fno-force-recomp</literal> instead)
321             </para>
322           </listitem>
323           <listitem>
324             <para>
325               <literal>-no-recomp</literal>
326               (use <literal>-fforce-recomp</literal> instead)
327             </para>
328           </listitem>
329           <listitem>
330             <para>
331               <literal>-syslib</literal>
332               (use <literal>-package</literal> instead)
333             </para>
334           </listitem>
335           <listitem>
336             <para>
337               <literal>-fth</literal>
338               (use the <literal>TemplateHaskell</literal> language
339               extension instead)
340             </para>
341           </listitem>
342           <listitem>
343             <para>
344               <literal>-ffi</literal>, <literal>-fffi</literal>
345               (use the <literal>ForeignFunctionInterface</literal>
346               extension instead)
347             </para>
348           </listitem>
349           <listitem>
350             <para>
351               <literal>-farrows</literal>
352               (use the <literal>Arrows</literal> language
353               extension instead)
354             </para>
355           </listitem>
356           <listitem>
357             <para>
358               <literal>-fgenerics</literal>
359               (use the <literal>Generics</literal> language
360               extension instead)
361             </para>
362           </listitem>
363           <listitem>
364             <para>
365               <literal>-fno-implicit-prelude</literal>
366               (use the <literal>NoImplicitPrelude</literal> language
367               extension instead)
368             </para>
369           </listitem>
370           <listitem>
371             <para>
372               <literal>-fbang-patterns</literal>
373               (use the <literal>BangPatterns</literal> language
374               extension instead)
375             </para>
376           </listitem>
377           <listitem>
378             <para>
379               <literal>-fno-monomorphism-restriction</literal>
380               (use the <literal>NoMonomorphismRestriction</literal> language
381               extension instead)
382             </para>
383           </listitem>
384           <listitem>
385             <para>
386               <literal>-fmono-pat-binds</literal>
387               (use the <literal>MonoPatBinds</literal> language
388               extension instead)
389             </para>
390           </listitem>
391           <listitem>
392             <para>
393               <literal>-fextended-default-rules</literal>
394               (use the <literal>ExtendedDefaultRules</literal> language
395               extension instead)
396             </para>
397           </listitem>
398           <listitem>
399             <para>
400               <literal>-fimplicit-params</literal>
401               (use the <literal>ImplicitParams</literal> language
402               extension instead)
403             </para>
404           </listitem>
405           <listitem>
406             <para>
407               <literal>-fscoped-type-variables</literal>
408               (use the <literal>ScopedTypeVariables</literal> language
409               extension instead)
410             </para>
411           </listitem>
412           <listitem>
413             <para>
414               <literal>-fparr</literal>
415               (use the <literal>PArr</literal> language
416               extension instead)
417             </para>
418           </listitem>
419           <listitem>
420             <para>
421               <literal>-fallow-overlapping-instances</literal>
422               (use the <literal>OverlappingInstances</literal> language
423               extension instead)
424             </para>
425           </listitem>
426           <listitem>
427             <para>
428               <literal>-fallow-undecidable-instances</literal>
429               (use the <literal>UndecidableInstances</literal> language
430               extension instead)
431             </para>
432           </listitem>
433           <listitem>
434             <para>
435               <literal>-fallow-incoherent-instances</literal>
436               (use the <literal>IncoherentInstances</literal> language
437               extension instead)
438             </para>
439           </listitem>
440           <listitem>
441             <para>
442               <literal>-optdep-s</literal>
443               (use <literal>-dep-suffix</literal> instead)
444             </para>
445           </listitem>
446           <listitem>
447             <para>
448               <literal>-optdep-f</literal>
449               (use <literal>-dep-makefile</literal> instead)
450             </para>
451           </listitem>
452           <listitem>
453             <para>
454               <literal>-optdep-w</literal>
455               (has no effect)
456             </para>
457           </listitem>
458           <listitem>
459             <para>
460               <literal>-optdep--include-prelude</literal>
461               (use <literal>-include-pkg-deps</literal> instead)
462             </para>
463           </listitem>
464           <listitem>
465             <para>
466               <literal>-optdep--include-pkg-deps</literal>
467               (use <literal>-include-pkg-deps</literal> instead)
468             </para>
469           </listitem>
470           <listitem>
471             <para>
472               <literal>-optdep--exclude-module</literal>
473               (use <literal>-exclude-module</literal> instead)
474             </para>
475           </listitem>
476           <listitem>
477             <para>
478               <literal>-optdep-x</literal>
479               (use <literal>-exclude-module</literal> instead)
480             </para>
481           </listitem>
482         </itemizedlist>
483       </listitem>
484       <listitem>
485         <para>
486           The following flags have been removed:
487         </para>
488         <itemizedlist>
489           <listitem>
490             <para>
491               <literal>-no-link-chk</literal>
492               (has been a no-op since at least 6.0)
493             </para>
494           </listitem>
495           <listitem>
496             <para>
497               <literal>-fruntime-types</literal>
498               (has not been used for years)
499             </para>
500           </listitem>
501           <listitem>
502             <para>
503               <literal>-fhardwire-lib-paths</literal>
504               (use <literal>-dynload sysdep</literal>)
505             </para>
506           </listitem>
507         </itemizedlist>
508       </listitem>
509       <listitem>
510         <para>
511           The <literal>-unreg</literal> flag, which was used to build
512           unregisterised code with a registerised compiler, has been
513           removed. Now you need to build an unregisterised compiler
514           if you want to build unregisterised code.
515         </para>
516       </listitem>
517     </itemizedlist>
518   </sect2>
519
520   <sect2>
521     <title>GHC API changes</title>
522
523     <itemizedlist>
524       <listitem>
525         <para>
526           There is now a Ghc Monad used to carry around GHC's
527           Session data. This Monad also provides exception handling
528           functions.
529         </para>
530       </listitem>
531       <listitem>
532         <para>
533           It is now possible to get the raw characters corresponding to
534           each token the lexer outputs, and thus to reconstruct the
535           original file.
536         </para>
537       </listitem>
538       <listitem>
539         <para>
540           GHCi implicitly brings all exposed modules into scope with
541           qualified module names. There is a new flag
542           <literal>-fimplicit-import-qualified</literal>
543           that controls this behaviour, so other GHC API clients can
544           specify whether or not they want it.
545         </para>
546       </listitem>
547       <listitem>
548         <para>
549           There is now haddock documentation for much of the GHC API.
550         </para>
551       </listitem>
552     </itemizedlist>
553   </sect2>
554
555   <sect2>
556     <title>GHCi changes</title>
557
558     <itemizedlist>
559       <listitem>
560         <para>
561           You can now force GHCi to interpret a module, rather than
562           loading its compiled code, by prepending a * character to its
563           name, e.g.
564         </para>
565 <programlisting>
566 Prelude> :load *A
567 Compiling A                ( A.hs, interpreted )
568 *A>
569 </programlisting>
570       </listitem>
571       <listitem>
572         <para>
573           By default, GHCi will not print bind results, e.g.
574         </para>
575 <programlisting>
576 Prelude&gt; c &lt;- return 'c'
577 Prelude&gt; 
578 </programlisting>
579         <para>
580           does not print <literal>'c'</literal>. Use
581           <literal>-fprint-bind-result</literal> if you want the old
582           behaviour.
583         </para>
584       </listitem>
585       <listitem>
586         <para>
587           GHCi now uses editline, rather than readline, for input.
588           This shouldn't affect its behaviour.
589         </para>
590       </listitem>
591       <listitem>
592         <para>
593           The GHCi prompt history is now saved in
594           <literal>~/.ghc/ghci_history</literal>.
595         </para>
596       </listitem>
597       <listitem>
598         <para>
599           GHCi now uses libffi to make FFI calls, which means that the
600           FFI now works in GHCi on a much wider range of platforms
601           (all those platforms that libffi supports).
602         </para>
603       </listitem>
604     </itemizedlist>
605   </sect2>
606
607   <sect2>
608     <title>Runtime system changes</title>
609     
610     <itemizedlist>
611       <listitem>
612         <para>
613           The garbage collector can now use multiple threads in parallel.
614           The new <literal>-g<replaceable>n</replaceable></literal> RTS
615           flag controls it, e.g. run your program with
616           <literal>+RTS -g2 -RTS</literal> to use 2 threads.
617           The <option>-g</option> option is implied by the
618           usual <option>-N</option> option, so normally there will be
619           no need to specify it separately, although occasionally it
620           is useful to turn it off with <option>-g1</option>.</para>
621         <para>Do let us know if you experience strange effects,
622           especially an increase in GC time when using the parallel GC
623           (use <option>+RTS -s -RTS</option> to measure GC time).
624           See <xref linkend="rts-options-gc" /> for more details.</para>
625       </listitem>
626       <listitem>
627         <para>
628           It is now possible to generate a heap profile without
629           recompiling your program for profiling.  Run the program
630           with <option>+RTS -hT</option> to generate a basic heap
631           profile, and use <command>hp2ps</command> as usual to
632           convert the heap profile into a <literal>.ps</literal> file
633           for viewing.  See <xref linkend="rts-profiling" /> for more
634           details.
635         </para>
636       </listitem>
637       <listitem>
638         <para>
639           If the user presses control-C while running a Haskell program
640           then the program gets an asynchronous UserInterrupt exception.
641         </para>
642       </listitem>
643       <listitem>
644         <para>
645           We now ignore SIGPIPE by default.
646         </para>
647       </listitem>
648       <listitem>
649         <para>
650           The <literal>-S</literal> and <literal>-s</literal> RTS flags
651           now send their output to stderr, rather than
652           <literal><replaceable>prog</replaceable>.stat</literal>,
653           by default.
654         </para>
655       </listitem>
656       <listitem>
657         <para>
658           The new <literal>-vg</literal> RTS flag provides some RTS trace
659           messages even in the non-debug RTS variants.
660         </para>
661       </listitem>
662     </itemizedlist>
663   </sect2>
664
665   <sect2>
666     <title>runghc</title>
667
668     <itemizedlist>
669       <listitem>
670         <para>
671           runghc now uses the compiler that it came with to run the
672           code, rather than the first compiler that it finds on the
673           PATH.
674         </para>
675       </listitem>
676       <listitem>
677         <para>
678           If the program to run does not have a <literal>.lhs</literal>
679           extension then runghc now treats it as a <literal>.hs</literal>
680           file. In particular, this means that programs without an
681           extension now work.
682         </para>
683       </listitem>
684       <listitem>
685         <para>
686           <literal>runghc foo</literal> will now work if
687           <literal>foo.hs</literal> or <literal>foo.lhs</literal> exists.
688         </para>
689       </listitem>
690       <listitem>
691         <para>
692           runghc can now take the code to run from stdin.
693         </para>
694       </listitem>
695     </itemizedlist>
696   </sect2>
697
698   <sect2>
699     <title>ghc-pkg</title>
700
701     <itemizedlist>
702       <listitem>
703         <para>ghc-pkg will refuse to unregister a package on which
704           other packages depend, unless
705           the <option>&ndash;&ndash;force</option> option is also
706           supplied.</para>
707       </listitem>
708       <listitem>
709         <para>
710           ghc-pkg now has a <literal>-no-user-package-conf</literal>
711           flag which instructs it to ignore the user's personal
712           package.conf.
713         </para>
714       </listitem>
715       <listitem>
716         <para>
717           ghc-pkg no longer allows you to register two packages that
718           differ in case only.
719         </para>
720       </listitem>
721       <listitem>
722         <para>
723           ghc-pkg no longer allows you to register packages which have
724           unversioned dependencies.
725         </para>
726       </listitem>
727       <listitem>
728         <para>
729           There is a new command <literal>dump</literal> which is
730           similar to <literal>describe '*'</literal>, but in a format
731           that is designed to be parsable by other tools.
732         </para>
733       </listitem>
734     </itemizedlist>
735   </sect2>
736
737   <sect2>
738     <title>Haddock</title>
739
740     <itemizedlist>
741       <listitem>
742         <para>
743           Haddock 2 now comes with GHC.
744         </para>
745       </listitem>
746     </itemizedlist>
747   </sect2>
748
749   <sect2>
750     <title>DPH changes</title>
751
752     <itemizedlist>
753       <listitem>
754         <para>
755           DPH is now an extralib.
756         </para>
757       </listitem>
758       <listitem>
759         <para>
760           There is a new flag <literal>-Odph</literal> that sets the
761           flags recommended when using DPH. Currently it is equivalent
762           to
763           <literal>
764             -O2 -fno-method-sharing -fdicts-cheap
765             -fmax-simplifier-iterations20 -fno-spec-constr-threshold
766           </literal>
767         </para>
768       </listitem>
769       <listitem>
770         <para>
771           There are now flags <literal>-fdph-seq</literal> and
772           <literal>-fdph-par</literal> for selecting which DPH backend
773           to use.
774         </para>
775       </listitem>
776       <listitem>
777         <para>
778           The <literal>-fflatten</literal> flag has been removed. It
779           never worked and has now been superceded by vectorisation.
780         </para>
781       </listitem>
782     </itemizedlist>
783   </sect2>
784
785   <sect2> 
786     <title>Boot Libraries</title>
787
788     <sect3>
789       <title>array</title>
790       <itemizedlist>
791         <listitem>
792           <para>
793             Version number 0.2.0.0 (was 0.1.0.0)
794           </para>
795         </listitem>
796       </itemizedlist>
797     </sect3>
798
799     <sect3>
800       <title>base</title>
801       <itemizedlist>
802         <listitem>
803           <para>
804             Version number 4.0.0.0 (was 3.0.2.0)
805           </para>
806         </listitem>
807         <listitem>
808           <para>
809             We also ship a base version 3.0.3.0, so legacy code should
810             continue to work.
811           </para>
812         </listitem>
813         <listitem>
814           <para>The <literal>Show</literal> instance
815             for <literal>Ratio</literal> now puts spaces around
816             the <literal>%</literal>, as required by Haskell 98.</para>
817         </listitem>
818         <listitem>
819           <para>
820             There is a new module <literal>Control.Category</literal>.
821           </para>
822         </listitem>
823         <listitem>
824           <para>
825             <literal>&gt;&gt;&gt;</literal> is no longer a method of the
826             <literal>Arrow</literal> class; instead
827             <literal>Category</literal> is a superclass of
828             <literal>Arrow</literal>.
829           </para>
830         </listitem>
831         <listitem>
832           <para>
833             <literal>pure</literal> is no longer a method of the
834             <literal>Arrow</literal> class; use <literal>arr</literal>
835             instead.
836           </para>
837         </listitem>
838         <listitem>
839           <para>
840             <literal>Control.Exception</literal> now uses extensible
841             exceptions. The old style of exceptions are still available
842             in <literal>Control.OldException</literal>, but we expect to
843             remove them in a future release.
844           </para>
845         </listitem>
846         <listitem>
847           <para>
848             There is a new function
849             <literal>System.Exit.exitSuccess :: IO a</literal>
850             analogous to the existing
851             <literal>System.Exit.exitFailure :: IO a</literal>.
852           </para>
853         </listitem>
854         <listitem>
855           <para>
856             There are new functions
857             <literal>Data.Either.lefts :: [Either a b] -&gt; [a]</literal>,
858             <literal>Data.Either.rights :: [Either a b] -&gt; [b]</literal>
859             and
860             <literal>
861             Data.Either.partitionEithers :: [Either a b] -&gt; ([a], [b])
862             </literal>.
863           </para>
864         </listitem>
865         <listitem>
866           <para>
867             The new function
868             <literal>Data.List.subsequences :: [a] -&gt; [[a]]</literal>
869             gives all sublists of a list, e.g.
870             <literal>
871             subsequences "abc" ==
872             ["","a","b","ab","c","ac","bc","abc"]
873             </literal>.
874           </para>
875         </listitem>
876         <listitem>
877           <para>
878             The new function
879             <literal>Data.List.permutations :: [a] -&gt; [[a]]</literal>
880             gives all permutations of a list, e.g.
881             <literal>
882             permutations "abc" ==
883             ["abc","bac","cba","bca","cab","acb"]
884             </literal>.
885           </para>
886         </listitem>
887         <listitem>
888           <para>
889             The new functions
890             <literal>Data.Traversable.mapAccumL</literal> and
891             <literal>Data.Traversable.mapAccumR</literal> generalise their
892             <literal>Data.List</literal> counterparts to work on any
893             <literal>Traversable</literal> type.
894           </para>
895         </listitem>
896         <listitem>
897           <para>
898             The new function
899             <literal>Control.Exception.blocked :: IO Bool</literal>
900             tells you whether or not exceptions are blocked (as controlled
901             by <literal>Control.Exception.(un)block</literal>).
902           </para>
903         </listitem>
904         <listitem>
905           <para>
906             There is a new function
907             <literal>traceShow :: Show a => a -> b -> b</literal> in
908             <literal>Debug.Trace</literal>.
909           </para>
910         </listitem>
911         <listitem>
912           <para>
913             The type of <literal>Control.Monad.forever</literal> has
914             been generalised from
915             <literal>Monad m =&gt; m a -&gt; m ()</literal> to
916             <literal>Monad m =&gt; m a -&gt; m b</literal>.
917           </para>
918         </listitem>
919         <listitem>
920           <para>
921             The new value <literal>GHC.Exts.maxTupleSize</literal>
922             tells you the largest tuple size that can be used. This is
923             mostly of use in Template Haskell programs.
924           </para>
925         </listitem>
926         <listitem>
927           <para>
928             <literal>GHC.Exts</literal> now exports
929             <literal>Down(..)</literal>,
930             <literal>groupWith</literal>,
931             <literal>sortWith</literal> and
932             <literal>the</literal> which are used in the desugaring of
933             generalised comprehensions.
934           </para>
935         </listitem>
936         <listitem>
937           <para>
938             <literal>GHC.Exts</literal> no longer exports the
939             <literal>Integer</literal> internals. If you want them then
940             you need to get them directly from the
941             new <literal>integer</literal> package.
942           </para>
943         </listitem>
944         <listitem>
945           <para>
946             The new function <literal>GHC.Conc.threadStatus</literal>
947             allows you to ask whether a thread is running, blocked on
948             an MVar, etc.
949           </para>
950         </listitem>
951         <listitem>
952           <para>
953             The <literal>Data.Generics</literal> hierarchy has been
954             moved to a new package <literal>syb</literal>.
955           </para>
956         </listitem>
957         <listitem>
958           <para>
959             The <literal>GHC.Prim</literal> and
960             <literal>GHC.PrimopWrappers</literal> modules have been
961             moved into a new <literal>ghc-prim</literal> package.
962           </para>
963         </listitem>
964       </itemizedlist>
965     </sect3>
966
967     <sect3>
968       <title>bytestring</title>
969       <itemizedlist>
970         <listitem>
971           <para>
972             Version number 0.9.0.1.2 (was 0.9.0.1.1)
973           </para>
974         </listitem>
975       </itemizedlist>
976     </sect3>
977
978     <sect3>
979       <title>Cabal</title>
980       <itemizedlist>
981         <listitem>
982           <para>
983             Version number 1.6.0.1 (was 1.2.4.0)
984           </para>
985         </listitem>
986         <listitem>
987           <para>
988             Many API changes. See the Cabal docs for more information.
989           </para>
990         </listitem>
991       </itemizedlist>
992     </sect3>
993
994     <sect3>
995       <title>containers</title>
996       <itemizedlist>
997         <listitem>
998           <para>
999             Version number 0.2.0.0 (was 0.1.0.2)
1000           </para>
1001         </listitem>
1002         <listitem>
1003           <para>
1004             Various result type now use <literal>Maybe</literal> rather
1005             than allowing any Monad.
1006           </para>
1007         </listitem>
1008       </itemizedlist>
1009     </sect3>
1010
1011     <sect3>
1012       <title>directory</title>
1013       <itemizedlist>
1014         <listitem>
1015           <para>
1016             Version number 1.0.0.2 (was 1.0.0.1)
1017           </para>
1018         </listitem>
1019         <listitem>
1020           <para>
1021             No longer defines the UNICODE CPP symbol for packages that
1022             use it.
1023           </para>
1024         </listitem>
1025       </itemizedlist>
1026     </sect3>
1027
1028     <sect3>
1029       <title>editline</title>
1030       <itemizedlist>
1031         <listitem>
1032           <para>
1033             This is a new bootlib, version 0.2.1.0.
1034           </para>
1035         </listitem>
1036       </itemizedlist>
1037     </sect3>
1038
1039     <sect3>
1040       <title>filepath</title>
1041       <itemizedlist>
1042         <listitem>
1043           <para>
1044             Version number 1.1.0.1 (was 1.1.0.0)
1045           </para>
1046         </listitem>
1047       </itemizedlist>
1048     </sect3>
1049
1050     <sect3>
1051       <title>ghc-prim</title>
1052       <itemizedlist>
1053         <listitem>
1054           <para>
1055             This is a new bootlib, version 0.1.0.0.
1056           </para>
1057         </listitem>
1058       </itemizedlist>
1059     </sect3>
1060
1061     <sect3>
1062       <title>haskell98</title>
1063       <itemizedlist>
1064         <listitem>
1065           <para>
1066             Version number 1.0.1.0 (unchanged)
1067           </para>
1068         </listitem>
1069       </itemizedlist>
1070     </sect3>
1071
1072     <sect3>
1073       <title>hpc</title>
1074       <itemizedlist>
1075         <listitem>
1076           <para>
1077             Version number 0.5.0.2 (was 0.5.0.1)
1078           </para>
1079         </listitem>
1080       </itemizedlist>
1081     </sect3>
1082
1083     <sect3>
1084       <title>integer</title>
1085       <itemizedlist>
1086         <listitem>
1087           <para>
1088             This is a new bootlib, version 0.1.0.0.
1089           </para>
1090         </listitem>
1091       </itemizedlist>
1092     </sect3>
1093
1094     <sect3>
1095       <title>old-locale</title>
1096       <itemizedlist>
1097         <listitem>
1098           <para>
1099             Version number 1.0.0.1 (was 1.0.0.0)
1100           </para>
1101         </listitem>
1102       </itemizedlist>
1103     </sect3>
1104
1105     <sect3>
1106       <title>old-time</title>
1107       <itemizedlist>
1108         <listitem>
1109           <para>
1110             Version number 1.0.0.1 (was 1.0.0.0)
1111           </para>
1112         </listitem>
1113       </itemizedlist>
1114     </sect3>
1115
1116     <sect3>
1117       <title>packedstring</title>
1118       <itemizedlist>
1119         <listitem>
1120           <para>
1121             Version number 0.1.0.1 (was 0.1.0.0)
1122           </para>
1123         </listitem>
1124       </itemizedlist>
1125     </sect3>
1126
1127     <sect3>
1128       <title>pretty</title>
1129       <itemizedlist>
1130         <listitem>
1131           <para>
1132             Version number 1.0.1.0 (was 1.0.0.0)
1133           </para>
1134         </listitem>
1135         <listitem>
1136           <para>
1137             There is a new combinator
1138             <literal>zeroWidthText :: String -&gt; Doc</literal>
1139             for printing things like ANSI escape sequences.
1140           </para>
1141         </listitem>
1142       </itemizedlist>
1143     </sect3>
1144
1145     <sect3>
1146       <title>process</title>
1147       <itemizedlist>
1148         <listitem>
1149           <para>
1150             Version number 1.0.1.0 (was 1.0.0.1)
1151           </para>
1152         </listitem>
1153         <listitem>
1154           <para>
1155             The <literal>System.Process</literal> API has been overhauled.
1156             The new API is a superset of the old API, however.
1157           </para>
1158         </listitem>
1159       </itemizedlist>
1160     </sect3>
1161
1162     <sect3>
1163       <title>random</title>
1164       <itemizedlist>
1165         <listitem>
1166           <para>
1167             Version number 1.0.0.1 (was 1.0.0.0)
1168           </para>
1169         </listitem>
1170       </itemizedlist>
1171     </sect3>
1172
1173     <sect3>
1174       <title>readline</title>
1175       <itemizedlist>
1176         <listitem>
1177           <para>
1178             This is no longer a bootlib; editline replaces it.
1179           </para>
1180         </listitem>
1181       </itemizedlist>
1182     </sect3>
1183
1184     <sect3>
1185       <title>syb</title>
1186       <itemizedlist>
1187         <listitem>
1188           <para>
1189             This is a new bootlib, version 0.1.0.0.
1190           </para>
1191         </listitem>
1192       </itemizedlist>
1193     </sect3>
1194
1195     <sect3>
1196       <title>template-haskell</title>
1197       <itemizedlist>
1198         <listitem>
1199           <para>
1200             Version number 2.3.0.0 (was 2.2.0.0)
1201           </para>
1202         </listitem>
1203         <listitem>
1204           <para>
1205             The datatypes now have support for Word primitives.
1206           </para>
1207         </listitem>
1208         <listitem>
1209           <para>
1210             <literal>currentModule :: Q String</literal> has been
1211             replaced with
1212             <literal>location :: Q Loc</literal>, where
1213             <literal>Loc</literal> is a new datatype.
1214           </para>
1215         </listitem>
1216       </itemizedlist>
1217     </sect3>
1218
1219     <sect3>
1220       <title>unix</title>
1221       <itemizedlist>
1222         <listitem>
1223           <para>
1224             Version number 2.3.1.0 (was 2.3.0.1)
1225           </para>
1226         </listitem>
1227         <listitem>
1228           <para>
1229             The <literal>System.Posix.Terminal.BaudRate</literal> type
1230             now includes <literal>B57600</literal> and
1231             <literal>B115200</literal> constructors.
1232           </para>
1233         </listitem>
1234       </itemizedlist>
1235     </sect3>
1236
1237     <sect3>
1238       <title>Win32</title>
1239       <itemizedlist>
1240         <listitem>
1241           <para>
1242             Version number 2.2.0.0 (was 2.1.1.1)
1243           </para>
1244         </listitem>
1245         <listitem>
1246           <para>
1247             No longer defines the UNICODE CPP symbol for packages that
1248             use it.
1249           </para>
1250         </listitem>
1251       </itemizedlist>
1252     </sect3>
1253   </sect2>
1254 </sect1>
1255