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