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