Wibble.
[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 use less memory.
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 <emphasis>only</emphasis> 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: 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 <emphasis>dynamic</emphasis> 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 <emphasis>must</emphasis> 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 <emphasis>Haskell
294 exceptions</emphasis>, 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 For more information, see <xref linkend="ghci-commands"/>.
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.
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 <sect3>
656 <title>array</title>
657 <itemizedlist>
658 <listitem>
659 <para>
660 Version number 0.5.0.0 (was 0.4.0.1)
661 </para>
662 </listitem>
663 </itemizedlist>
664 </sect3>
665
666 <sect3>
667 <title>base</title>
668 <itemizedlist>
669 <listitem>
670 <para>
671 Version number 4.7.0.0 (was 4.6.0.1)
672 </para>
673 </listitem>
674 <listitem>
675 <para>
676 The <literal>Control.Category</literal> module now has the
677 <literal>PolyKinds</literal> extension enabled, meaning
678 that instances of <literal>Category</literal> no longer
679 need be of kind <literal>* -> * -> *</literal>.
680 </para>
681 </listitem>
682 <listitem>
683 <para>
684 There are now <literal>Foldable</literal> and <literal>Traversable</literal>
685 instances for <literal>Either a</literal>, <literal>Const r</literal>, and <literal>(,) a</literal>.
686 </para>
687 </listitem>
688 <listitem>
689 <para>
690 There is now a <literal>Monoid</literal> instance for <literal>Const</literal>.
691 </para>
692 </listitem>
693 <listitem>
694 <para>
695 There is now a <literal>Data</literal> instance for <literal>Data.Version</literal>.
696 </para>
697 </listitem>
698 <listitem>
699 <para>
700 There are now <literal>Eq</literal>, <literal>Ord</literal>, <literal>Show</literal> and <literal>Read</literal> instances for <literal>ZipList</literal>.
701 </para>
702 </listitem>
703 <listitem>
704 <para>
705 There are now <literal>Eq</literal>, <literal>Ord</literal>, <literal>Show</literal> and <literal>Read</literal> instances for <literal>Down</literal>.
706 </para>
707 </listitem>
708 <listitem>
709 <para>
710 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>).
711 </para>
712 </listitem>
713 <listitem>
714 <para>
715 A zero-width unboxed poly-kinded <literal>Proxy#</literal>
716 was added to <literal>GHC.Prim</literal>. It can be used to make it so
717 that there is no the operational overhead for passing around proxy
718 arguments to model type application.
719 </para>
720 </listitem>
721 <listitem>
722 <para>
723 <literal>Control.Concurrent.MVar</literal> has a new
724 implementation of <literal>readMVar</literal>, which
725 fixes a long-standing bug where
726 <literal>readMVar</literal> is only atomic if there
727 are no other threads running
728 <literal>putMVar</literal>.
729 <literal>readMVar</literal> now is atomic, and is
730 guaranteed to return the value from the first
731 <literal>putMVar</literal>. There is also a new <literal>tryReadMVar</literal>
732 which is a non-blocking version.
733 </para>
734 </listitem>
735 <listitem>
736 <para>
737 There are now byte endian-swapping primitives
738 available in <literal>Data.Word</literal>, which
739 use optimized machine instructions when available.
740 </para>
741 </listitem>
742 <listitem>
743 <para>
744 <literal>Data.Bool</literal> now exports
745 <literal>bool :: a -> a -> Bool -> a</literal>, analogously
746 to <literal>maybe</literal> and <literal>either</literal>
747 in their respective modules.
748 </para>
749 </listitem>
750 <listitem>
751 <para>
752 Rewrote portions of <literal>Text.Printf</literal>, and
753 made changes to <literal>Numeric</literal> (added
754 <literal>Numeric.showFFloatAlt</literal> and
755 <literal>Numeric.showGFloatAlt</literal>) and
756 <literal>GHC.Float</literal> (added
757 <literal>formatRealFloatAlt</literal>) to support it.
758 The rewritten version is extensible to user types, adds a
759 "generic" format specifier "<literal>%v</literal>",
760 extends the <literal>printf</literal> spec
761 to support much of C's <literal>printf(3)</literal>
762 functionality, and fixes the spurious warnings about
763 using <literal>Text.Printf.printf</literal> at
764 <literal>(IO a)</literal> while ignoring the return value.
765 These changes were contributed by Bart Massey.
766 </para>
767 </listitem>
768 <listitem>
769 <para>
770 The minimal complete definitions for all
771 type-classes with cyclic default implementations
772 have been explicitly annotated with the new
773 <literal>{-# MINIMAL #-}</literal> pragma.
774 </para>
775 </listitem>
776 <listitem>
777 <para>
778 <literal>Control.Applicative.WrappedMonad</literal>,
779 which can be used to convert a <literal>Monad</literal>
780 to an <literal>Applicative</literal>, has now
781 a <literal>Monad m => Monad (WrappedMonad m)</literal>
782 instance.
783 </para>
784 </listitem>
785 </itemizedlist>
786 </sect3>
787
788 <sect3>
789 <title>bin-package-db</title>
790 <itemizedlist>
791 <listitem>
792 <para>
793 This is an internal package, and should not be used.
794 </para>
795 </listitem>
796 </itemizedlist>
797 </sect3>
798
799 <sect3>
800 <title>binary</title>
801 <itemizedlist>
802 <listitem>
803 <para>
804 Version number 0.7.1.0 (was 0.5.1.1)
805 </para>
806 </listitem>
807 </itemizedlist>
808 </sect3>
809
810 <sect3>
811 <title>bytestring</title>
812 <itemizedlist>
813 <listitem>
814 <para>
815 Version number 0.10.4.0 (was 0.10.0.0)
816 </para>
817 </listitem>
818 </itemizedlist>
819 </sect3>
820
821 <sect3>
822 <title>Cabal</title>
823 <itemizedlist>
824 <listitem>
825 <para>
826 Version number 1.18.1.3 (was 1.16.0)
827 </para>
828 </listitem>
829 </itemizedlist>
830 </sect3>
831
832 <sect3>
833 <title>containers</title>
834 <itemizedlist>
835 <listitem>
836 <para>
837 Version number 0.5.4.0 (was 0.5.0.0)
838 </para>
839 </listitem>
840 </itemizedlist>
841 </sect3>
842
843 <sect3>
844 <title>deepseq</title>
845 <itemizedlist>
846 <listitem>
847 <para>
848 Version number 1.3.0.2 (was 1.3.0.1)
849 </para>
850 </listitem>
851 </itemizedlist>
852 </sect3>
853
854 <sect3>
855 <title>directory</title>
856 <itemizedlist>
857 <listitem>
858 <para>
859 Version number 1.2.0.2 (was 1.2.0.1)
860 </para>
861 </listitem>
862 <listitem>
863 <para>
864 The function <literal>findExecutables</literal>
865 now correctly checks to see if the execute bit is
866 set on Linux, rather than just looking in
867 <literal>$PATH</literal>.
868 </para>
869 </listitem>
870 <listitem>
871 <para>
872 There are several new functions for finding files,
873 including <literal>findFiles</literal> and
874 <literal>findFilesWith</literal>, which allow you
875 to search for a file given a set of filepaths, and
876 run a predicate over them.
877 </para>
878 </listitem>
879 </itemizedlist>
880 </sect3>
881
882 <sect3>
883 <title>filepath</title>
884 <itemizedlist>
885 <listitem>
886 <para>
887 Version number 1.3.0.2 (was 1.3.0.1)
888 </para>
889 </listitem>
890 </itemizedlist>
891 </sect3>
892
893 <sect3>
894 <title>ghc-prim</title>
895 <itemizedlist>
896 <listitem>
897 <para>
898 Version number 0.3.1.0 (was 0.3.0.0)
899 </para>
900 </listitem>
901 <listitem>
902 <para>
903 The type-classes <literal>Eq</literal> and
904 <literal>Ord</literal> have been annotated with
905 the new <literal>{-# MINIMAL #-}</literal>
906 pragma.
907 </para>
908 </listitem>
909 <listitem>
910 <para>
911 There is a new type exposed by
912 <literal>GHC.Types</literal>, called
913 <literal>SPEC</literal>, which can be used to
914 inform GHC to perform call-pattern specialisation
915 extremely aggressively. See <xref
916 linkend="options-optimise"/> for more details
917 concerning <literal>-fspec-constr</literal>.
918 </para>
919 </listitem>
920 </itemizedlist>
921 </sect3>
922
923 <sect3>
924 <title>haskell98</title>
925 <itemizedlist>
926 <listitem>
927 <para>
928 Version number 2.0.0.3 (was 2.0.0.2)
929 </para>
930 </listitem>
931 </itemizedlist>
932 </sect3>
933
934 <sect3>
935 <title>haskell2010</title>
936 <itemizedlist>
937 <listitem>
938 <para>
939 Version number 1.1.1.1 (was 1.1.1.0)
940 </para>
941 </listitem>
942 </itemizedlist>
943 </sect3>
944
945 <sect3>
946 <title>hoopl</title>
947 <itemizedlist>
948 <listitem>
949 <para>
950 Version number 3.10.0.0 (was 3.9.0.0)
951 </para>
952 </listitem>
953 </itemizedlist>
954 </sect3>
955
956 <sect3>
957 <title>hpc</title>
958 <itemizedlist>
959 <listitem>
960 <para>
961 Version number 0.6.0.1 (was 0.6.0.0)
962 </para>
963 </listitem>
964 </itemizedlist>
965 </sect3>
966
967 <sect3>
968 <title>integer-gmp</title>
969 <itemizedlist>
970 <listitem>
971 <para>
972 Version number 0.5.1.0 (was 0.5.0.0)
973 </para>
974 </listitem>
975 </itemizedlist>
976 </sect3>
977
978 <sect3>
979 <title>old-locale</title>
980 <itemizedlist>
981 <listitem>
982 <para>
983 Version number 1.0.0.6 (was 1.0.0.5)
984 </para>
985 </listitem>
986 </itemizedlist>
987 </sect3>
988
989 <sect3>
990 <title>old-time</title>
991 <itemizedlist>
992 <listitem>
993 <para>
994 Version number 1.1.0.2 (was 1.1.0.1)
995 </para>
996 </listitem>
997 </itemizedlist>
998 </sect3>
999
1000 <sect3>
1001 <title>process</title>
1002 <itemizedlist>
1003 <listitem>
1004 <para>
1005 Version number 1.2.0.0 (was 1.1.0.2)
1006 </para>
1007 </listitem>
1008 <listitem>
1009 <para>
1010 Several bugs have been fixed, including deadlocks
1011 in <literal>readProcess</literal> and
1012 <literal>readProcessWithExitCode</literal>.
1013 </para>
1014 </listitem>
1015 </itemizedlist>
1016 </sect3>
1017
1018 <sect3>
1019 <title>template-haskell</title>
1020 <itemizedlist>
1021 <listitem>
1022 <para>
1023 Version number 2.9.0.0 (was 2.8.0.0)
1024 </para>
1025 </listitem>
1026 <listitem>
1027 <para>
1028 Typed Template Haskell expressions are now
1029 supported. See <xref linkend="template-haskell"/>
1030 for more details.
1031 </para>
1032 </listitem>
1033 <listitem>
1034 <para>
1035 There is now support for roles.
1036 </para>
1037 </listitem>
1038 <listitem>
1039 <para>
1040 There is now support for annotation pragmas.
1041 </para>
1042 </listitem>
1043 </itemizedlist>
1044 </sect3>
1045
1046 <sect3>
1047 <title>time</title>
1048 <itemizedlist>
1049 <listitem>
1050 <para>
1051 Version number 1.4.1 (was 1.4.1)
1052 </para>
1053 </listitem>
1054 </itemizedlist>
1055 </sect3>
1056
1057 <sect3>
1058 <title>unix</title>
1059 <itemizedlist>
1060 <listitem>
1061 <para>
1062 Version number 2.7.0.0 (was 2.6.0.0)
1063 </para>
1064 </listitem>
1065 <listitem>
1066 <para>
1067 A crash in <literal>getGroupEntryForID</literal>
1068 (and related functions like
1069 <literal>getUserEntryForID</literal> and
1070 <literal>getUserEntryForName</literal>) in
1071 multi-threaded applications has been fixed.
1072 </para>
1073 </listitem>
1074 <listitem>
1075 <para>
1076 The functions <literal>getGroupEntryForID</literal>
1077 and <literal>getUserEntryForID</literal> now fail
1078 with a <literal>isDoesNotExist</literal> error when
1079 the specified ID cannot be found.
1080 </para>
1081 </listitem>
1082 </itemizedlist>
1083 </sect3>
1084
1085 <sect3>
1086 <title>Win32</title>
1087 <itemizedlist>
1088 <listitem>
1089 <para>
1090 Version number 2.3.0.0 (was 2.3.0.0)
1091 </para>
1092 </listitem>
1093 </itemizedlist>
1094 </sect3>
1095 </sect2>
1096 </sect1>