1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-7-0-1">
3 <title>Release notes for version 7.0.1</title>
6 The significant changes to the various parts of the compiler are
7 listed in the following sections. There have also been numerous bug
8 fixes and performance improvements over the 6.12 branch.
12 <title>Highlights</title>
16 GHC now defaults to the Haskell 2010 language standard.
20 Libraries are not quite so straightforward. By default, GHC
21 provides access to the <literal>base</literal> package,
22 which includes the Haskell 2010 libraries, albeit with a few
23 minor differences. For those who want to write strictly
24 standards-conforming code we also provide
25 the <literal>haskell2010</literal> package which provides
26 the precise APIs specified by Haskell 2010, but because the
27 module names in this package overlap with those in
28 the <literal>base</literal> package it is not possible to
29 use both <literal>haskell2010</literal>
30 and <literal>base</literal> at the same time (this also
31 applies to the <literal>array</literal> package). Hence to use
32 the Haskell 2010 libraries you should hide
33 the <literal>base</literal> and <literal>array</literal>
34 packages, for example with GHCi:
36 $ ghci -package haskell2010 -hide-package base -hide-package array
38 If you are using Cabal it isn't necessary to
39 hide <literal>base</literal> and <literal>array</literal>
40 explicitly, just don't include them in your <literal>build-depends</literal>.
46 On POSIX platforms, there is a new I/O manager based on
47 epoll/kqueue/poll, which allows multithreaded I/O code to
48 scale to a much larger number (100k+) of threads.
54 The inliner has been overhauled, which should in general
55 give better performance while reducing unnecessary code-size
62 Large parts of the runtime system have been overhauled, in
63 particular the machinery related to blocking and wakeup of
64 threads and exception throwing (<literal>throwTo</literal>).
65 Several instances of pathological performance have been
66 fixed, especially where large numbers of threads are
73 Due to changes in the runtime system, if you are
74 using <literal>Control.Parallel.Strategies</literal> from
75 the <literal>parallel</literal> package, please upgrade to
76 at least version 2 (preferably version 3). The
77 implementation of Strategies
78 in <literal>parallel-1.x</literal> will lose parallelism
85 The full Haskell <literal>import</literal> syntax can now been
86 used to bring modules into scope in GHCi, e.g.
89 Prelude> import Data.List as L
90 Prelude Data.List> L.length "foo"
97 GHC now comes with a more recent mingw bundled on Windows,
98 which includes a fix for windres on Windows 7.
105 <title>Language changes</title>
109 GHC now understands the <literal>Haskell98</literal> and
110 <literal>Haskell2010</literal> languages.
114 These get processed before the language extension pragmas,
115 and define the default sets of extensions that are enabled.
116 If neither is specified, then the default is
117 <literal>Haskell2010</literal> plus the
118 <literal>MonoPatBinds</literal> extension.
124 GHC now supports the <literal>DoAndIfThenElse</literal>
125 extension, which is part of the Haskell 2010 standard.
131 Datatype contexts, such as the <literal>Eq a</literal> in
134 data Eq a => Set a = NilSet | ConsSet a (Set a)
137 are now treated as an extension
138 <literal>DatatypeContexts</literal> (on by default) by GHC.
144 GHC's support for unicode source has been improved, including
145 removing support for U+22EF for the <literal>..</literal>
146 symbol. See <xref linkend="unicode-syntax" /> for more details.
152 Pragmas are now reread after preprocessing. In particular,
153 this means that if a pragma is used to turn CPP on, then other
154 pragmas can be put in CPP conditionals.
160 The <literal>TypeOperators</literal> extension now allows
161 instance heads to use infix syntax.
167 The <literal>PackageImports</literal> extension now understands
168 <literal>this</literal> to mean the current package.
174 The <literal>INLINE</literal> and <literal>NOINLINE</literal>
175 pragmas can now take a <literal>CONLIKE</literal> modifier,
176 which indicates that the right hand side is cheap to compute,
177 and can thus be duplicated more freely.
178 See <xref linkend="conlike" /> for more details.
184 A <literal>ForceSpecConstr</literal> annotation on a type, e.g.
188 {-# ANN type SPEC ForceSpecConstr #-}
191 can be used to force GHC to fully specialise argument of that
198 A <literal>NoSpecConstr</literal> annotation on a type, e.g.
202 {-# ANN type T NoSpecConstr #-}
205 can be used to prevent SpecConstr from specialising on
206 arguments of that type.
212 There is are two experimental new extensions
213 <literal>AlternativeLayoutRule</literal> and
214 <literal>AlternativeLayoutRuleTransitional</literal>,
215 which are for exploring alternative layout rules in Haskell'.
216 The details are subject to change, so we advise against using
217 them in real code for now.
223 The <literal>NewQualifiedOperators</literal> extension has
224 been deprecated, as it was rejected by the Haskell' committee.
231 <title>Warnings</title>
235 There is now a warning for missing import lists, controlled
236 by the new <literal>-fwarn-missing-import-lists</literal> flag.
242 GHC will now warn about <literal>SPECIALISE</literal> and
243 <literal>UNPACK</literal> pragmas that have no effect.
254 Shared libraries are once again supported on Windows.
260 Shared libraries are now supported on OS X, both on x86 and on
261 PowerPC. The new <literal>-dylib-install-name</literal> GHC
262 flag is used to set the location of the dynamic library.
263 See <xref linkend="finding-shared-libs" /> for more details.
270 <title>Runtime system</title>
275 For security reasons, by default, the only RTS flag that
276 programs accept is <literal>+RTS --info</literal>. If you want
277 the full range of RTS flags then you need to link with the new
278 <literal>-rtsopts</literal> flag. See
279 <xref linkend="options-linker" /> for more details.
285 The RTS now exports a function <literal>setKeepCAFs</literal>
286 which is important when loading Haskell DLLs dynamically, as
287 a DLL may refer to CAFs that hae already been GCed.
293 The garbage collector no longer allows you to specify a number
294 of steps; there are now always 2. The <literal>-T</literal>
295 RTS flag has thus been removed.
301 A new RTS flag <literal>-H</literal> causes the RTS to use a
302 larger nursery, but without exceeding the amount of memory
303 that the application is already using. It makes some programs
304 go slower, but others go faster.
310 GHC now returns memory to the OS, if memory usage peaks and
311 then drops again. This is mainly useful for long running
312 processes which normally use very little memory, but
313 occasionally need a lot of memory for a short period of time.
319 On OS X, eventLog events are now available as DTrace probes.
325 The PAPI support has been improved. The new RTS flag
326 <literal>-a#0x40000000</literal> can be used to tell the RTS
327 to collect the native PAPI event <literal>0x40000000</literal>.
334 <title>Compiler</title>
338 GHC now defaults to <literal>--make</literal> mode, i.e. GHC
339 will chase dependencies for you automatically by default.
345 GHC now includes an LLVM code generator.
348 This includes a number of new flags:
349 a flag to tell GHC to use LLVM, <literal>-fllvm</literal>;
350 a flag to dump the LLVM input ,<literal>-ddump-llvm</literal>;
351 flags to keep the LLVM intermediate files,
352 <literal>-keep-llvm-file</literal> and
353 <literal>-keep-llvm-files</literal>;
354 flags to set the location and options for the LLVM assembler,
355 optimiser and compiler,
356 <literal>-pgmla</literal>,
357 <literal>-pgmlo</literal>,
358 <literal>-pgmlc</literal>,
359 <literal>-optla</literal>,
360 <literal>-optlo</literal> and
361 <literal>-optlc</literal>.
367 It is now possible to use <literal>-fno-code</literal> with
368 <literal>--make</literal>.
374 The new flag <literal>-dsuppress-coercions</literal> controls
375 whether GHC prints coercions in core dumps.
381 The new flag <literal>-dsuppress-module-prefixes</literal>
382 controls whether GHC prints module qualification prefixes
389 The inliner has been overhauled. The most significant
390 user-visible change is that only saturated functions are
397 would only be inlined if <literal>(.)</literal> is applied to 3
401 (.) f g = \x -> f (g x)
404 will be inlined if only applied to 2 arguments.
410 The <literal>-finline-if-enough-args</literal> flag is no
417 Column numbers in warnings and error messages now start at 1,
418 as is more standard, rather than 0.
424 GHCi now understands most linker scripts. In particular, this
425 means that GHCi is able to load the C pthread library.
431 The <literal>ghc --info</literal> output has been updated:
435 location of the global package database, in the
436 <literal>Global Package DB</literal> field.
439 It now includes the build, host and target platforms, in the
440 <literal>Build platform</literal>,
441 <literal>Host platform</literal> and
442 <literal>Target platform</literal> fields.
445 It now includes a <literal>Have llvm code generator</literal>
449 The <literal>Win32 DLLs</literal> field has been removed.
455 The registerised via-C backend, and the
456 <literal>-fvia-C</literal> flag, have been deprecated. The poor
457 floating-point performance in the x86 native code generator
458 has now been fixed, so we don't believe there is still any
459 reason to use the via-C backend.
465 There is now a new flag <literal>--supported-extensions</literal>,
466 which currently behaves the same as
467 <literal>--supported-languages</literal>.
473 GHC progress output such as
476 [ 1 of 5] Compiling Foo ( Foo.hs, Foo.o )
479 is now sent to stdout rather than stderr.
485 The new flag <literal>-fexpose-all-unfoldings</literal>
486 makes GHC put unfoldings for <emphasis>everything</emphasis>
487 in the interface file.
493 There are two new flags, <literal>-fno-specialise</literal>
494 and <literal>-fno-float-in</literal>, for disabling the
495 specialise and float-in passes.
501 The new flag <literal>-fstrictness-before=<replaceable>n</replaceable></literal> tells
502 GHC to run an additional strictness analysis pass
503 before simplifier phase <replaceable>n</replaceable>.
510 <literal>-funfolding-dict-discount</literal>
511 for tweaking the optimiser's behaviour.
517 The <literal>-fspec-inline-join-points</literal> flag has been
524 The <literal>-dynload wrapper</literal> flag has been
536 GHCi now understands layout in multi-line commands, so
542 Prelude| y = 2 in x + y
551 <title>Template Haskell and Quasi-Quoters</title>
555 It is now possible to quasi-quote patterns with
556 <literal>[p| ... |]</literal>.
562 It is no longer to use a <literal>$</literal> before the
563 name of a quasi-quoter, e.g. one can now say
564 <literal>[expr| ... |]</literal> rather than
565 <literal>[$expr| ... |]</literal>.
571 It is now possible to use a quasi-quoter for types, e.g.
572 <literal>f :: [$qq| ... |]</literal>
578 It is now possible to quasi-quote existentials and GADTs.
585 <title>GHC API</title>
589 There are now <literal>Data</literal> and
590 <literal>Typeable</literal> instances for the
597 As language extensions are not applied until after the base
598 language (Haskell98, Haskell2010 or the default) has been
599 selected, it is now necessary to tell the GHC API the point
600 at which the extension flags should be processed. Normally
601 this is done by calling
602 <literal>DynFlags.flattenExtensionFlags</literal> once all
603 the flags and pragmas have been read.
611 <title>Libraries</title>