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