Another release note fix.
[ghc.git] / docs / users_guide / 7.8.1-notes.xml
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-7-8-1">
3 <title>Release notes for version 7.8.1</title>
4
5 <para>
6 The significant changes to the various parts of the compiler are listed
7 in the following sections. There have also been numerous bug fixes and
8 performance improvements over the 7.6 branch.
9 </para>
10
11 <sect2>
12 <title>Highlights</title>
13
14 <para>
15 The highlights, since the 7.6 branch, are:
16 </para>
17
18 <itemizedlist>
19 <listitem>
20 <para>
21 GHC now supports "type holes" with the
22 <literal>TypeHoles</literal> extension. When enabled, the
23 unbound literal <literal>_</literal> may be used during
24 development in place of a regular identifier, and GHC will
25 respond with the type necessary to "fill in the hole."
26
27 TODO FIXME: reference.
28 </para>
29 </listitem>
30
31 <listitem>
32 <para>
33 GHC can now perform simple evaluation of type-level
34 natural numbers, when using the
35 <literal>DataKinds</literal> extension. For example,
36 given a type-level constraint such as <literal>(x + 3)
37 ~ 5</literal>, GHC is able to infer that
38 <literal>x</literal> is 2. Similarly, GHC can now
39 understand type-level identities such as <literal>x +
40 0 ~ x</literal>.
41 </para>
42
43 <para>
44 Note that the solving of these equations is only used
45 to resolve unification variables - it does not
46 generate new facts in the type checker. This is
47 similar to how functional dependencies work.
48 </para>
49 </listitem>
50
51 <listitem>
52 <para>
53 It is now possible to declare a 'closed' <literal>type
54 family</literal> when using the
55 <literal>TypeFamilies</literal> extension. A closed
56 <literal>type family</literal> cannot have any
57 instances created other than the ones in its
58 definition.
59
60 TODO FIXME: reference.
61 </para>
62 </listitem>
63
64 <listitem>
65 <para>
66 Use of the <literal>GeneralizedNewtypeDeriving</literal>
67 extension is now subject to <emphasis>role checking</emphasis>,
68 to ensure type safety of the derived instances. As this change
69 increases the type safety of GHC, it is possible that some code
70 that previously compiled will no longer work.
71
72 TODO FIXME: reference.
73 </para>
74 </listitem>
75
76 <listitem>
77 <para>
78 GHC now supports overloading list literals using the new
79 <literal>OverloadedLists</literal> extension.
80
81 TODO FIXME: reference.
82 </para>
83 </listitem>
84
85 <listitem>
86 <para>
87 There has been significant overhaul of the type inference engine and
88 constraint solver.
89
90 TODO FIXME: reference.
91 </para>
92 </listitem>
93
94 <listitem>
95 <para>
96 By default, GHC will now unbox all "small" strict
97 fields in a data type. A "small" data type is one
98 whose size is equivalent to or smaller than the native
99 word size of the machine. This means you no longer
100 have to specify <literal>UNPACK</literal> pragmas for
101 e.g. strict <literal>Int</literal> fields. This also
102 applies to floating-point values.
103 </para>
104 </listitem>
105
106 <listitem>
107 <para>
108 GHC now has a brand-new I/O manager that scales significantly
109 better for larger workloads compared to the previous one. It
110 should scale linearly up to approximately 32 cores.
111 </para>
112 </listitem>
113
114 <listitem>
115 <para>
116 The LLVM backend now supports 128- and 256-bit SIMD
117 operations.
118
119 TODO FIXME: reference.
120 </para>
121 <para>
122 This is only available with the LLVM backend.
123 </para>
124 </listitem>
125
126 <listitem>
127 <para>
128 The new code generator, after significant work by many
129 individuals over the past several years, is now enabled by
130 default. This is a complete rewrite of the STG to Cmm
131 transformation. In general, your programs may get slightly
132 faster.
133 </para>
134
135 <para>
136 The old code generator has been removed completely.
137 </para>
138 </listitem>
139
140 <listitem>
141 <para>
142 GHC now has substantially better support for cross
143 compilation. In particular, GHC now has all the
144 necessary patches to support cross compilation to
145 Apple iOS, using the LLVM backend.
146
147 TODO FIXME: reference.
148 </para>
149 </listitem>
150
151 <listitem>
152 <para>
153 PrimOps for comparing unboxed values now return
154 <literal>Int#</literal> instead of <literal>Bool</literal>.
155 This change is backwards incompatible. See
156 <ulink url="http://ghc.haskell.org/trac/ghc/wiki/NewPrimopsInGHC7.8">
157 this GHC wiki page</ulink> for instructions how to update your
158 existing code. See <ulink url="http://ghc.haskell.org/trac/ghc/wiki/PrimBool">
159 here</ulink> for motivation and discussion of implementation details.
160 </para>
161 </listitem>
162
163 <listitem>
164 <para>
165 New PrimOps for atomic memory operations.
166 The <literal>casMutVar#</literal> PrimOp was introduced in
167 GHC 7.2 (debugged in 7.4). This release also includes additional
168 PrimOps for compare-and-swap (<literal>casArray#</literal> and
169 <literal>casIntArray#</literal>) and one for fetch-and-add
170 (<literal>fetchAddIntArray#</literal>).
171 </para>
172 </listitem>
173
174 <listitem>
175 <para>
176 TODO: mention dynamic changes
177 </para>
178 </listitem>
179
180 <listitem>
181 <para>
182 <literal>Typeable</literal> is now poly-kinded, making
183 <literal>Typeable1</literal>, <literal>Typeable2</literal>,
184 etc., obsolete, deprecated, and relegated to
185 <literal>Data.OldTypeable</literal>. Furthermore, user-written
186 instances of <literal>Typeable</literal> are now disallowed:
187 use <literal>deriving</literal> or the new extension
188 <literal>-XAutoDeriveTypeable</literal>, which will create
189 <literal>Typeable</literal> instances for every datatype
190 declared in the module.
191 </para>
192 </listitem>
193
194 <listitem>
195 <para>
196 GHC now has a parallel compilation driver. When
197 compiling with <literal>--make</literal> (which is on
198 by default,) you may also specify
199 <literal>-jN</literal> in order to compile
200 <replaceable>N</replaceable> modules in
201 parallel. (Note: this will automatically scale on
202 multicore machines without specifying <literal>+RTS
203 -N</literal> to the compiler.)
204 </para>
205 </listitem>
206
207 <listitem>
208 <para>
209 GHC now has support for a new pragma,
210 <literal>{-# MINIMAL #-}</literal>, allowing you to
211 explicitly declare the minimal complete definition of
212 a class. Should an instance not provide the minimal
213 required definitions, a warning will be emitted.
214 </para>
215 </listitem>
216
217 <listitem>
218 <para>
219 GHC now generates warnings when definitions conflict with the
220 Applicative-Monad Proposal (AMP).
221
222 TODO FIXME: reference.
223 </para>
224
225 <para>
226 A warning is emitted if a type is an instance of
227 <literal>Monad</literal> but not of
228 <literal>Applicative</literal>,
229 <literal>MonadPlus</literal> but not
230 <literal>Alternative</literal>, and when a local
231 function named <literal>join</literal>,
232 <literal>&lt;*&gt;</literal> or <literal>pure</literal> is
233 defined.
234 </para>
235
236 <para>
237 The warnings are enabled by default, and can be controlled
238 using the new flag <literal>-f[no-]warn-amp</literal>.
239 </para>
240 </listitem>
241 <listitem>
242 <para>
243 GHC's internal compiler pipeline is now exposed
244 through a <literal>Hooks</literal> module inside the
245 GHC API. These hooks allow you to control most of the
246 internal compiler phase machinery, including compiling
247 expressions, phase control, and linking.
248 </para>
249
250 <para>
251 Note: this interface will likely see continuous
252 refinement and API changes in future releases, so it
253 should be considered a preview.
254 </para>
255 </listitem>
256 </itemizedlist>
257 </sect2>
258
259 <sect2>
260 <title>Full details</title>
261 <sect3>
262 <title>Language</title>
263 <itemizedlist>
264 <listitem>
265 <para>
266 There is a new extension,
267 <literal>NullaryTypeClasses</literal>, which
268 allows you to declare a type class without any
269 parameters.
270 </para>
271 </listitem>
272 </itemizedlist>
273
274 <itemizedlist>
275 <listitem>
276 <para>
277 There is a new extension,
278 <literal>NumDecimals</literal>, which allows you
279 to specify an integer using compact "floating
280 literal" syntax. This lets you say things like
281 <literal>1.2e6 :: Integer</literal> instead of
282 <literal>1200000</literal>
283 </para>
284 </listitem>
285 </itemizedlist>
286
287 <itemizedlist>
288 <listitem>
289 <para>
290 There is a new extension,
291 <literal>NegativeLiterals</literal>, which will
292 cause GHC to interpret the expression
293 <literal>-123</literal> as <literal>fromIntegral
294 (-123)</literal>. Haskell 98 and Haskell 2010 both
295 specify that it should instead desugar to
296 <literal>negate (fromIntegral 123)</literal>
297 </para>
298 </listitem>
299 </itemizedlist>
300
301 <itemizedlist>
302 <listitem>
303 <para>
304 There is a new extension,
305 <literal>EmptyCase</literal>, which allows
306 to write a case expression with no alternatives
307 <literal>case ... of {}</literal>.
308 </para>
309 </listitem>
310 </itemizedlist>
311
312 <itemizedlist>
313 <listitem>
314 <para>
315 The <literal>IncoherentInstances</literal>
316 extension has seen a behavioral change, and is
317 now 'liberated' and less conservative during
318 instance resolution. This allows more programs to
319 compile than before.
320 </para>
321 <para>
322 Now, <literal>IncoherentInstances</literal> will
323 always pick an arbitrary matching instance, if
324 multiple ones exist.
325 </para>
326 </listitem>
327 </itemizedlist>
328
329 <itemizedlist>
330 <listitem>
331 <para>
332 A new built-in function <literal>coerce</literal> is
333 provided that allows to safely coerce values between types
334 that have the same run-time-presentation, such as
335 newtypes, but also newtypes inside containers. See the
336 haddock documentation of
337 <ulink url="&libraryBaseLocation;/GHC-Exts.html#v%3Acoerce">coerce</ulink>
338 and of the class
339 <ulink url="&libraryBaseLocation;/GHC-Exts.html#t%3ACoercible">Coercible</ulink>
340 for more details.
341 </para>
342 <para>
343 This feature is included in this release as a technology
344 preview, and may change its syntax and/or semantics in the
345 next release.
346 </para>
347 </listitem>
348 </itemizedlist>
349
350 <itemizedlist>
351 <listitem>
352 <para>
353 The new pragma, <literal>{-# MINIMAL #-}</literal>,
354 allows to explicitly declare the minimal complete
355 definition of a class. Should an instance not provide
356 the minimal required definitions, a warning will be
357 emitted.
358 </para>
359
360 <para>
361 See <xref linkend="minimal-pragma"/> for more details.
362 </para>
363 </listitem>
364 </itemizedlist>
365 </sect3>
366
367 <sect3>
368 <title>Compiler</title>
369 <itemizedlist>
370 <listitem>
371 <para>
372 GHC can now build both static and dynamic object
373 files at the same time in a single compilation
374 pass, when given the
375 <literal>-dynamic-too</literal> flag. This will
376 produce both a statically-linkable
377 <literal>.o</literal> object file, and a
378 dynamically-linkable <literal>.dyn_o</literal>
379 file. The output suffix of the dynamic objects can
380 be controlled by the flag
381 <literal>-dynosuf</literal>.
382 </para>
383
384 <para>
385 Note that GHC still builds statically by default.
386 </para>
387 </listitem>
388 <listitem>
389 <para>
390 GHC now supports a <literal>--show-options</literal> flag,
391 which will dump all of the flags it supports to standard out.
392 </para>
393 </listitem>
394 <listitem>
395 <para>
396 GHC now supports warning about overflow of integer
397 literals, enabled by
398 <literal>-fwarn-overflowed-literals</literal>. It
399 is enabled by default
400 </para>
401 </listitem>
402 <listitem>
403 <para>
404 It's now possible to switch the system linker on Linux
405 (between GNU gold and GNU ld) at runtime without problem.
406 </para>
407 </listitem>
408 <listitem>
409 <para>
410 The <literal>-fwarn-dodgy-imports</literal> flag now warns
411 in the case an <literal>import</literal> statement hides an
412 entity which is not exported.
413 </para>
414 </listitem>
415 <listitem>
416 <para>
417 The LLVM backend was overhauled and rewritten, and
418 should hopefully be easier to maintain and work on
419 in the future.
420 </para>
421 </listitem>
422 <listitem>
423 <para>
424 GHC now detects annotation changes during
425 recompilation, and correctly persists new
426 annotations.
427 </para>
428 </listitem>
429 <listitem>
430 <para>
431 There is a new set of primops for utilizing
432 hardware-based prefetch instructions, to help
433 guide the processor's caching decisions.
434 </para>
435 <para>
436 Currently, these are only supported with the LLVM
437 backend and x86/amd64 backends.
438 </para>
439 </listitem>
440 </itemizedlist>
441 </sect3>
442
443 <sect3>
444 <title>GHCi</title>
445 <itemizedlist>
446 <listitem>
447 <para>
448 GHCi now supports a <literal>prompt2</literal>
449 setting, which allows you to customize the
450 continuation prompt of multi-line input.
451
452 TODO FIXME: reference.
453 </para>
454 </listitem>
455 <listitem>
456 <para>
457 The new <literal>:shows paths</literal> command
458 shows the current working directory and the
459 current search path for Haskell modules.
460 </para>
461 </listitem>
462
463 <listitem>
464 <para>
465 On Linux, the static GHCi linker now supports weak symbols.
466 </para>
467 </listitem>
468
469 <listitem>
470 <para>
471 The (static) GHCi linker now runs constructors for
472 linked libraries. This means for example that C
473 code using
474 <literal>__attribute__((constructor))</literal>
475 can now properly be loaded into GHCi.
476 </para>
477
478 <para>
479 Note: destructors are not supported.
480 </para>
481 </listitem>
482 </itemizedlist>
483 </sect3>
484
485 <sect3>
486 <title>Template Haskell</title>
487 <itemizedlist>
488 <listitem>
489 <para>
490 Template Haskell now supports Roles (TODO FIXME: elaborate?)
491 </para>
492 </listitem>
493 <listitem>
494 <para>
495 Template Haskell now supports annotation pragmas.
496 </para>
497 </listitem>
498 <listitem>
499 <para>
500 Typed Template Haskell expressions are now supported. See
501 <xref linkend="template-haskell"/> for more details.
502 </para>
503 </listitem>
504 <listitem>
505 <para>
506 Template Haskell declarations, types, patterns, and
507 <emphasis>untyped</emphasis> expressions are no longer
508 typechecked at all. This is a backwards-compatible change
509 since it allows strictly more programs to be typed.
510 </para>
511 </listitem>
512 </itemizedlist>
513 </sect3>
514
515 <sect3>
516 <title>Runtime system</title>
517 <itemizedlist>
518 <listitem>
519 <para>
520 The RTS linker can now unload object code at
521 runtime (when using the GHC API
522 <literal>ObjLink</literal> module.) Previously,
523 GHC would not unload the old object file, causing
524 a gradual memory leak as more objects were loaded
525 over time.
526 </para>
527
528 <para>
529 Note that this change in unloading behavior
530 <emphasis>only</emphasis> affects statically
531 linked binaries, and not dynamic ones.
532 </para>
533 </listitem>
534
535 <listitem>
536 <para>
537 The performance of <literal>StablePtr</literal>s and
538 <literal>StableName</literal>s has been improved.
539 </para>
540 </listitem>
541
542 <listitem>
543 <para>
544 The default maximum stack size has
545 increased. Previously, it defaulted to 8m
546 (equivalent to passing <literal>+RTS
547 -K8m</literal>. Now, GHC will use up-to 80% of the
548 <emphasis>physical memory</emphasis> available at
549 runtime.
550 </para>
551 </listitem>
552 </itemizedlist>
553 </sect3>
554
555 <sect3>
556 <title>Build system</title>
557 <itemizedlist>
558 <listitem>
559 <para>
560 GHC >= 7.4 is now required for bootstrapping.
561 </para>
562 </listitem>
563 <listitem>
564 <para>
565 GHC can now be built with Clang, and use Clang as the
566 preprocessor for Haskell code. Only Clang version 3.4svn is
567 reliably supported.
568 </para>
569 </listitem>
570 </itemizedlist>
571 </sect3>
572 </sect2>
573
574 <sect2>
575 <title>Libraries</title>
576
577 <para>
578 There have been some changes that have effected multiple
579 libraries:
580 </para>
581
582 <itemizedlist>
583 <listitem>
584 <para>
585 TODO FIXME
586 </para>
587 </listitem>
588 </itemizedlist>
589
590 <para>
591 The following libraries have been removed from the GHC tree:
592 </para>
593
594 <itemizedlist>
595 <listitem>
596 <para>TODO FIXME</para>
597 </listitem>
598 </itemizedlist>
599
600 <para>
601 The following libraries have been added to the GHC tree:
602 </para>
603
604 <itemizedlist>
605 <listitem>
606 <para>TODO FIXME</para>
607 </listitem>
608 </itemizedlist>
609
610 <sect3>
611 <title>array</title>
612 <itemizedlist>
613 <listitem>
614 <para>
615 Version number XXXX (was XXXX)
616 </para>
617 </listitem>
618 </itemizedlist>
619 </sect3>
620
621 <sect3>
622 <title>base</title>
623 <itemizedlist>
624 <listitem>
625 <para>
626 Version number 4.7.0.0 (was 4.6.0.1)
627 </para>
628 </listitem>
629 <listitem>
630 <para>
631 The <literal>Control.Category</literal> module now has the
632 <literal>PolyKinds</literal> extension enabled, meaning
633 that instances of <literal>Category</literal> no longer
634 need be of kind <literal>* -> * -> *</literal>
635 </para>
636 </listitem>
637 <listitem>
638 <para>
639 There are now <literal>Foldable</literal> and <literal>Traversable</literal>
640 instances for <literal>Either a</literal>, <literal>Const r</literal>, and <literal>(,) a</literal>
641 </para>
642 </listitem>
643 <listitem>
644 <para>
645 There is now a <literal>Monoid</literal> instance for <literal>Const</literal>
646 </para>
647 </listitem>
648 <listitem>
649 <para>
650 There is now a <literal>Data</literal> instance for <literal>Data.Version</literal>
651 </para>
652 </listitem>
653 <listitem>
654 <para>
655 A zero-width unboxed poly-kinded <literal>Proxy#</literal>
656 was added to <literal>GHC.Prim</literal>. It can be used to make it so
657 that there is no the operational overhead for passing around proxy
658 arguments to model type application.
659 </para>
660 </listitem>
661 <listitem>
662 <para>
663 <literal>Control.Concurrent.MVar</literal> has a new
664 implementation of <literal>readMVar</literal>, which
665 fixes a long-standing bug where
666 <literal>readMVar</literal> is only atomic if there
667 are no other threads running
668 <literal>putMVar</literal>.
669 <literal>readMVar</literal> now is atomic, and is
670 guaranteed to return the value from the first
671 <literal>putMVar</literal>. There is also a new <literal>tryReadMVar</literal>
672 which is a non-blocking version.
673 </para>
674 </listitem>
675 <listitem>
676 <para>
677 There are now byte endian-swapping primitives
678 available in <literal>Data.Word</literal>, which
679 use optimized machine instructions when available.
680 </para>
681 </listitem>
682 <listitem>
683 <para>
684 <literal>Data.Bool</literal> now exports
685 <literal>bool :: a -> a -> Bool -> a</literal>, analogously
686 to <literal>maybe</literal> and <literal>either</literal>
687 in their respective modules.
688 </para>
689 </listitem>
690 <listitem>
691 <para>
692 Rewrote portions of <literal>Text.Printf</literal>, and
693 made changes to <literal>Numeric</literal> (added
694 <literal>Numeric.showFFloatAlt</literal> and
695 <literal>Numeric.showGFloatAlt</literal>) and
696 <literal>GHC.Float</literal> (added
697 <literal>formatRealFloatAlt</literal>) to support it.
698 The rewritten version is extensible to user types, adds a
699 "generic" format specifier "<literal>%v</literal>",
700 extends the <literal>printf</literal> spec
701 to support much of C's <literal>printf(3)</literal>
702 functionality, and fixes the spurious warnings about
703 using <literal>Text.Printf.printf</literal> at
704 <literal>(IO a)</literal> while ignoring the return value.
705 These changes were contributed by Bart Massey.
706 </para>
707 </listitem>
708 <listitem>
709 <para>
710 The minimal complete definitions for all
711 type-classes with cyclic default implementations
712 have been explicitly annotated with the new
713 <literal>{-# MINIMAL #-}</literal> pragma.
714 </para>
715 </listitem>
716 <listitem>
717 <para>
718 <literal>Control.Applicative.WrappedMonad</literal>,
719 which can be used to convert a <literal>Monad</literal>
720 to an <literal>Applicative</literal>, has now
721 a <literal>Monad m => Monad (WrappedMonad m)</literal>
722 instance.
723 </para>
724 </listitem>
725 </itemizedlist>
726 </sect3>
727
728 <sect3>
729 <title>bin-package-db</title>
730 <itemizedlist>
731 <listitem>
732 <para>
733 This is an internal package, and should not be used.
734 </para>
735 </listitem>
736 </itemizedlist>
737 </sect3>
738
739 <sect3>
740 <title>binary</title>
741 <itemizedlist>
742 <listitem>
743 <para>
744 Version number 0.7.1.0 (was 0.5.1.1)
745 </para>
746 </listitem>
747 </itemizedlist>
748 </sect3>
749
750 <sect3>
751 <title>bytestring</title>
752 <itemizedlist>
753 <listitem>
754 <para>
755 Version number 0.10.3.0 (was 0.10.0.0)
756 </para>
757 </listitem>
758 </itemizedlist>
759 </sect3>
760
761 <sect3>
762 <title>Cabal</title>
763 <itemizedlist>
764 <listitem>
765 <para>
766 Version number 1.18.1 (was 1.16.0)
767 </para>
768 </listitem>
769 </itemizedlist>
770 </sect3>
771
772 <sect3>
773 <title>containers</title>
774 <itemizedlist>
775 <listitem>
776 <para>
777 Version number XXXX (was XXXX)
778 </para>
779 </listitem>
780 </itemizedlist>
781 </sect3>
782
783 <sect3>
784 <title>deepseq</title>
785 <itemizedlist>
786 <listitem>
787 <para>
788 Version number XXXX (was XXXX)
789 </para>
790 </listitem>
791 </itemizedlist>
792 </sect3>
793
794 <sect3>
795 <title>directory</title>
796 <itemizedlist>
797 <listitem>
798 <para>
799 Version number XXXX (was XXXX)
800 </para>
801 </listitem>
802 <listitem>
803 <para>
804 The function <literal>findExecutables</literal>
805 now correctly checks to see if the execute bit is
806 set on Linux, rather than just looking in
807 <literal>$PATH</literal>.
808 </para>
809 </listitem>
810 <listitem>
811 <para>
812 There are several new functions for finding files,
813 including <literal>findFiles</literal> and
814 <literal>findFilesWith</literal>, which allow you
815 to search for a file given a set of filepaths, and
816 run a predicate over them.
817 </para>
818 </listitem>
819 </itemizedlist>
820 </sect3>
821
822 <sect3>
823 <title>filepath</title>
824 <itemizedlist>
825 <listitem>
826 <para>
827 Version number XXXX (was XXXX)
828 </para>
829 </listitem>
830 </itemizedlist>
831 </sect3>
832
833 <sect3>
834 <title>ghc-prim</title>
835 <itemizedlist>
836 <listitem>
837 <para>
838 Version number XXXX (was XXXX)
839 </para>
840 </listitem>
841 <listitem>
842 <para>
843 The type-classes <literal>Eq</literal> and
844 <literal>Ord</literal> have been annotated with
845 the new <literal>{-# MINIMAL #-}</literal>
846 pragma.
847 </para>
848 </listitem>
849 <listitem>
850 <para>
851 There is a new type exposed by
852 <literal>GHC.Types</literal>, called
853 <literal>SPEC</literal>, which can be used to
854 inform GHC to perform call-pattern specialisation
855 extremely aggressively. See <xref
856 linkend="options-optimise"/> for more details
857 concerning <literal>-fspec-constr</literal>.
858 </para>
859 </listitem>
860 </itemizedlist>
861 </sect3>
862
863 <sect3>
864 <title>haskell98</title>
865 <itemizedlist>
866 <listitem>
867 <para>
868 Version number XXXX (was XXXX)
869 </para>
870 </listitem>
871 </itemizedlist>
872 </sect3>
873
874 <sect3>
875 <title>haskell2010</title>
876 <itemizedlist>
877 <listitem>
878 <para>
879 Version number XXXX (was XXXX)
880 </para>
881 </listitem>
882 </itemizedlist>
883 </sect3>
884
885 <sect3>
886 <title>hoopl</title>
887 <itemizedlist>
888 <listitem>
889 <para>
890 Version number XXXX (was XXXX)
891 </para>
892 </listitem>
893 </itemizedlist>
894 </sect3>
895
896 <sect3>
897 <title>hpc</title>
898 <itemizedlist>
899 <listitem>
900 <para>
901 Version number XXXX (was XXXX)
902 </para>
903 </listitem>
904 </itemizedlist>
905 </sect3>
906
907 <sect3>
908 <title>integer-gmp</title>
909 <itemizedlist>
910 <listitem>
911 <para>
912 Version number XXXX (was XXXX)
913 </para>
914 </listitem>
915 </itemizedlist>
916 </sect3>
917
918 <sect3>
919 <title>old-locale</title>
920 <itemizedlist>
921 <listitem>
922 <para>
923 Version number XXXX (was XXXX)
924 </para>
925 </listitem>
926 </itemizedlist>
927 </sect3>
928
929 <sect3>
930 <title>old-time</title>
931 <itemizedlist>
932 <listitem>
933 <para>
934 Version number XXXX (was XXXX)
935 </para>
936 </listitem>
937 </itemizedlist>
938 </sect3>
939
940 <sect3>
941 <title>process</title>
942 <itemizedlist>
943 <listitem>
944 <para>
945 Version number XXXX (was XXXX)
946 </para>
947 </listitem>
948 <listitem>
949 <para>
950 Several bugs have been fixed, including deadlocks
951 in <literal>readProcess</literal> and
952 <literal>readProcessWithExitCode</literal>.
953 </para>
954 </listitem>
955 </itemizedlist>
956 </sect3>
957
958 <sect3>
959 <title>template-haskell</title>
960 <itemizedlist>
961 <listitem>
962 <para>
963 Version number XXXX (was XXXX)
964 </para>
965 </listitem>
966 <listitem>
967 <para>
968 There is now support for annotation pragmas.
969 </para>
970 </listitem>
971 </itemizedlist>
972 </sect3>
973
974 <sect3>
975 <title>time</title>
976 <itemizedlist>
977 <listitem>
978 <para>
979 Version number XXXX (was XXXX)
980 </para>
981 </listitem>
982 </itemizedlist>
983 </sect3>
984
985 <sect3>
986 <title>unix</title>
987 <itemizedlist>
988 <listitem>
989 <para>
990 Version number 2.7.0.0 (was 2.6.0.0)
991 </para>
992 </listitem>
993 <listitem>
994 <para>
995 A crash in <literal>getGroupEntryForID</literal>
996 (and related functions like
997 <literal>getUserEntryForID</literal> and
998 <literal>getUserEntryForName</literal>) in
999 multi-threaded applications has been fixed.
1000 </para>
1001 </listitem>
1002 <listitem>
1003 <para>
1004 The functions <literal>getGroupEntryForID</literal>
1005 and <literal>getUserEntryForID</literal> now fail
1006 with a <literal>isDoesNotExist</literal> error when
1007 the specified ID cannot be found.
1008 </para>
1009 </listitem>
1010 </itemizedlist>
1011 </sect3>
1012
1013 <sect3>
1014 <title>Win32</title>
1015 <itemizedlist>
1016 <listitem>
1017 <para>
1018 Version number XXXX (was XXXX)
1019 </para>
1020 </listitem>
1021 </itemizedlist>
1022 </sect3>
1023 </sect2>
1024 </sect1>