1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-6-14-1">
3 <title>Release notes for version 6.14.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 Due to changes in the runtime system, version 2.0 or later
17 (preferably version 2.2 or later) of the
18 <literal>parallel</literal> library should be used, or
19 parallelism will be lost.
25 The full Haskell <literal>import</literal> syntax can now been
26 used to bring modules into scope in GHCi.
33 <title>Language changes</title>
37 GHC now understands the <literal>Haskell98</literal> and
38 <literal>Haskell2010</literal> languages.
42 These get processed before the language extension pragmas,
43 and define the default sets of extensions that are enabled.
44 If neither is specified, then the default is
45 <literal>Haskell2010</literal> plus the
46 <literal>MonoPatBinds</literal> extension.
52 GHC now supports the <literal>DoAndIfThenElse</literal>
53 extension, which is part of the Haskell 2010 standard.
59 Datatype contexts, such as the <literal>Eq a</literal> in
62 data Eq a => Set a = NilSet | ConsSet a (Set a)
65 are now treated as an extension
66 <literal>DatatypeContexts</literal> (on by default) by GHC.
72 GHC's support for unicode source has been improved, including
73 removing support for U+22EF for the <literal>..</literal>
74 symbol. See <xref linkend="unicode-syntax" /> for more details.
80 Pragmas are now reread after preprocessing. In particular,
81 this means that if a pragma is used to turn CPP on, then other
82 pragmas can be put in CPP conditionals.
88 The <literal>TypeOperators</literal> extension now allows
89 instance heads to use infix syntax.
95 The <literal>PackageImports</literal> extension now understands
96 <literal>this</literal> to mean the current package.
102 The <literal>INLINE</literal> and <literal>NOINLINE</literal>
103 pragmas can now take a <literal>CONLIKE</literal> modifier,
104 which indicates that the right hand side is cheap to compute,
105 and can thus be duplicated more freely.
106 See <xref linkend="conlike" /> for more details.
112 A <literal>ForceSpecConstr</literal> annotation on a type, e.g.
116 {-# ANN type SPEC ForceSpecConstr #-}
119 can be used to force GHC to fully specialise argument of that
126 A <literal>NoSpecConstr</literal> annotation on a type, e.g.
130 {-# ANN type T NoSpecConstr #-}
133 can be used to prevent SpecConstr from specialising on
134 arguments of that type.
140 There is are two experimental new extensions
141 <literal>AlternativeLayoutRule</literal> and
142 <literal>AlternativeLayoutRuleTransitional</literal>,
143 which are for exploring alternative layout rules in Haskell'.
144 The details are subject to change, so we advise against using
145 them in real code for now.
151 The <literal>NewQualifiedOperators</literal> extension has
152 been deprecated, as it was rejected by the Haskell' committee.
159 <title>Warnings</title>
163 There is now a warning for missing import lists, controlled
164 by the new <literal>-fwarn-missing-import-lists</literal> flag.
170 GHC will now warn about <literal>SPECIALISE</literal> and
171 <literal>UNPACK</literal> pragmas that have no effect.
182 Shared libraries are once again supported on Windows.
188 Shared libraries are now supported on OS X, both on x86 and on
189 PowerPC. The new <literal>-dylib-install-name</literal> GHC
190 flag is used to set the location of the dynamic library.
191 See <xref linkend="finding-shared-libs" /> for more details.
198 <title>Runtime system</title>
203 For security reasons, by default, the only RTS flag that
204 programs accept is <literal>+RTS --info</literal>. If you want
205 the full range of RTS flags then you need to link with the new
206 <literal>-rtsopts</literal> flag. See
207 <xref linkend="options-linker" /> for more details.
213 The RTS now exports a function <literal>setKeepCAFs</literal>
214 which is important when loading Haskell DLLs dynamically, as
215 a DLL may refer to CAFs that hae already been GCed.
221 The garbage collector no longer allows you to specify a number
222 of steps; there are now always 2. The <literal>-T</literal>
223 RTS flag has thus been removed.
229 A new RTS flag <literal>-H</literal> causes the RTS to use a
230 larger nursery, but without exceeding the amount of memory
231 that the application is already using. It makes some programs
232 go slower, but others go faster.
238 GHC now returns memory to the OS, if memory usage peaks and
239 then drops again. This is mainly useful for long running
240 processes which normally use very little memory, but
241 occasionally need a lot of memory for a short period of time.
247 On OS X, eventLog events are now available as DTrace probes.
253 The PAPI support has been improved. The new RTS flag
254 <literal>-a#0x40000000</literal> can be used to tell the RTS
255 to collect the native PAPI event <literal>0x40000000</literal>.
262 <title>Compiler</title>
266 GHC now defaults to <literal>--make</literal> mode, i.e. GHC
267 will chase dependencies for you automatically by default.
273 GHC now includes an LLVM code generator.
276 This includes a number of new flags:
277 a flag to tell GHC to use LLVM, <literal>-fllvm</literal>;
278 a flag to dump the LLVM input ,<literal>-ddump-llvm</literal>;
279 flags to keep the LLVM intermediate files,
280 <literal>-keep-llvm-file</literal> and
281 <literal>-keep-llvm-files</literal>;
282 flags to set the location and options for the LLVM assembler,
283 optimiser and compiler,
284 <literal>-pgmla</literal>,
285 <literal>-pgmlo</literal>,
286 <literal>-pgmlc</literal>,
287 <literal>-optla</literal>,
288 <literal>-optlo</literal> and
289 <literal>-optlc</literal>.
295 It is now possible to use <literal>-fno-code</literal> with
296 <literal>--make</literal>.
302 The new flag <literal>-dsuppress-coercions</literal> controls
303 whether GHC prints coercions in core dumps.
309 The inliner has been overhauled. The most significant
310 user-visible change is that only saturated functions are
317 would only be inlined if <literal>(.)</literal> is applied to 3
321 (.) f g = \x -> f (g x)
324 will be inlined if only applied to 2 arguments.
330 The <literal>-finline-if-enough-args</literal> flag is no
337 Column numbers in warnings and error messages now start at 1,
338 as is more standard, rather than 0.
344 GHCi now understands most linker scripts. In particular, this
345 means that GHCi is able to load the C pthread library.
351 The <literal>ghc --info</literal> output has been updated:
355 location of the global package database, in the
356 <literal>Global Package DB</literal> field.
359 It now includes the build, host and target platforms, in the
360 <literal>Build platform</literal>,
361 <literal>Host platform</literal> and
362 <literal>Target platform</literal> fields.
365 It now includes a <literal>Have llvm code generator</literal>
369 The <literal>Win32 DLLs</literal> field has been removed.
375 The registerised via-C backend, and the
376 <literal>-fvia-C</literal>, have been deprecated. The poor
377 floating-point performance in the x86 native code generator
378 has now been fixed, so we don't believe there is still any
379 reason to use the via-C backend.
385 There is now a new flag <literal>--supported-extensions</literal>,
386 which currently behaves the same as
387 <literal>--supported-languages</literal>.
393 GHC progress output such as
396 [ 1 of 5] Compiling Foo ( Foo.hs, Foo.o )
399 is now sent to stdout rather than stderr.
405 The new flag <literal>-fexpose-all-unfoldings</literal>
406 makes GHC put unfoldings for <emphasis>everything</emphasis>
407 in the interface file.
413 There are two new flags, <literal>-fno-specialise</literal>
414 and <literal>-fno-float-in</literal>, for disabling the
415 specialise and float-in passes.
421 The new flag <literal>-fstrictness-before=<replaceable>n</replaceable></literal> tells
422 GHC to run an additional strictness analysis pass
423 before simplifier phase <replaceable>n</replaceable>.
430 <literal>-funfolding-dict-discount</literal>
431 for tweaking the optimiser's behaviour.
437 The <literal>-fspec-inline-join-points</literal> flag has been
449 GHCi now supports full import syntax, e.g.
452 Prelude> import Data.List as L
453 Prelude Data.List> L.length "foo"
460 GHCi now understands the layout of multiline-commands, so
466 Prelude| y = 2 in x + y
475 <title>Template Haskell and Quasi-Quoters</title>
479 It is now possible to quasi-quote patterns with
480 <literal>[p| ... |]</literal>.
486 It is no longer to use a <literal>$</literal> before the
487 name of a quasi-quoter, e.g. one can now say
488 <literal>[expr| ... |]</literal> rather than
489 <literal>[$expr| ... |]</literal>.
495 It is now possible to use a quasi-quoter for types, e.g.
496 <literal>f :: [$qq| ... |]</literal>
502 It is now possible to quasi-quote existentials and GADTs.
509 <title>GHC API</title>
513 There are now <literal>Data</literal> and
514 <literal>Typeable</literal> instances for the
521 As language extensions are not applied until after the base
522 language (Haskell98, Haskell2010 or the default) has been
523 selected, it is now necessary to tell the GHC API the point
524 at which the extension flags should be processed. Normally
525 this is done by calling
526 <literal>DynFlags.flattenExtensionFlags</literal> once all
527 the flags and pragmas have been read.
535 <title>Libraries</title>