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, e.g.
29 Prelude> import Data.List as L
30 Prelude Data.List> L.length "foo"
38 <title>Language changes</title>
42 GHC now understands the <literal>Haskell98</literal> and
43 <literal>Haskell2010</literal> languages.
47 These get processed before the language extension pragmas,
48 and define the default sets of extensions that are enabled.
49 If neither is specified, then the default is
50 <literal>Haskell2010</literal> plus the
51 <literal>MonoPatBinds</literal> extension.
57 GHC now supports the <literal>DoAndIfThenElse</literal>
58 extension, which is part of the Haskell 2010 standard.
64 Datatype contexts, such as the <literal>Eq a</literal> in
67 data Eq a => Set a = NilSet | ConsSet a (Set a)
70 are now treated as an extension
71 <literal>DatatypeContexts</literal> (on by default) by GHC.
77 GHC's support for unicode source has been improved, including
78 removing support for U+22EF for the <literal>..</literal>
79 symbol. See <xref linkend="unicode-syntax" /> for more details.
85 Pragmas are now reread after preprocessing. In particular,
86 this means that if a pragma is used to turn CPP on, then other
87 pragmas can be put in CPP conditionals.
93 The <literal>TypeOperators</literal> extension now allows
94 instance heads to use infix syntax.
100 The <literal>PackageImports</literal> extension now understands
101 <literal>this</literal> to mean the current package.
107 The <literal>INLINE</literal> and <literal>NOINLINE</literal>
108 pragmas can now take a <literal>CONLIKE</literal> modifier,
109 which indicates that the right hand side is cheap to compute,
110 and can thus be duplicated more freely.
111 See <xref linkend="conlike" /> for more details.
117 A <literal>ForceSpecConstr</literal> annotation on a type, e.g.
121 {-# ANN type SPEC ForceSpecConstr #-}
124 can be used to force GHC to fully specialise argument of that
131 A <literal>NoSpecConstr</literal> annotation on a type, e.g.
135 {-# ANN type T NoSpecConstr #-}
138 can be used to prevent SpecConstr from specialising on
139 arguments of that type.
145 There is are two experimental new extensions
146 <literal>AlternativeLayoutRule</literal> and
147 <literal>AlternativeLayoutRuleTransitional</literal>,
148 which are for exploring alternative layout rules in Haskell'.
149 The details are subject to change, so we advise against using
150 them in real code for now.
156 The <literal>NewQualifiedOperators</literal> extension has
157 been deprecated, as it was rejected by the Haskell' committee.
164 <title>Warnings</title>
168 There is now a warning for missing import lists, controlled
169 by the new <literal>-fwarn-missing-import-lists</literal> flag.
175 GHC will now warn about <literal>SPECIALISE</literal> and
176 <literal>UNPACK</literal> pragmas that have no effect.
187 Shared libraries are once again supported on Windows.
193 Shared libraries are now supported on OS X, both on x86 and on
194 PowerPC. The new <literal>-dylib-install-name</literal> GHC
195 flag is used to set the location of the dynamic library.
196 See <xref linkend="finding-shared-libs" /> for more details.
203 <title>Runtime system</title>
208 For security reasons, by default, the only RTS flag that
209 programs accept is <literal>+RTS --info</literal>. If you want
210 the full range of RTS flags then you need to link with the new
211 <literal>-rtsopts</literal> flag. See
212 <xref linkend="options-linker" /> for more details.
218 On POSIX platforms, the RTS now has a new I/O manager based
219 on epoll/kqueue/poll, which allows it to scale to a much
220 larger number (100k+) of open file descriptors.
226 The RTS now exports a function <literal>setKeepCAFs</literal>
227 which is important when loading Haskell DLLs dynamically, as
228 a DLL may refer to CAFs that hae already been GCed.
234 The garbage collector no longer allows you to specify a number
235 of steps; there are now always 2. The <literal>-T</literal>
236 RTS flag has thus been removed.
242 A new RTS flag <literal>-H</literal> causes the RTS to use a
243 larger nursery, but without exceeding the amount of memory
244 that the application is already using. It makes some programs
245 go slower, but others go faster.
251 GHC now returns memory to the OS, if memory usage peaks and
252 then drops again. This is mainly useful for long running
253 processes which normally use very little memory, but
254 occasionally need a lot of memory for a short period of time.
260 On OS X, eventLog events are now available as DTrace probes.
266 The PAPI support has been improved. The new RTS flag
267 <literal>-a#0x40000000</literal> can be used to tell the RTS
268 to collect the native PAPI event <literal>0x40000000</literal>.
275 <title>Compiler</title>
279 GHC now defaults to <literal>--make</literal> mode, i.e. GHC
280 will chase dependencies for you automatically by default.
286 GHC now includes an LLVM code generator.
289 This includes a number of new flags:
290 a flag to tell GHC to use LLVM, <literal>-fllvm</literal>;
291 a flag to dump the LLVM input ,<literal>-ddump-llvm</literal>;
292 flags to keep the LLVM intermediate files,
293 <literal>-keep-llvm-file</literal> and
294 <literal>-keep-llvm-files</literal>;
295 flags to set the location and options for the LLVM assembler,
296 optimiser and compiler,
297 <literal>-pgmla</literal>,
298 <literal>-pgmlo</literal>,
299 <literal>-pgmlc</literal>,
300 <literal>-optla</literal>,
301 <literal>-optlo</literal> and
302 <literal>-optlc</literal>.
308 It is now possible to use <literal>-fno-code</literal> with
309 <literal>--make</literal>.
315 The new flag <literal>-dsuppress-coercions</literal> controls
316 whether GHC prints coercions in core dumps.
322 The inliner has been overhauled. The most significant
323 user-visible change is that only saturated functions are
330 would only be inlined if <literal>(.)</literal> is applied to 3
334 (.) f g = \x -> f (g x)
337 will be inlined if only applied to 2 arguments.
343 The <literal>-finline-if-enough-args</literal> flag is no
350 Column numbers in warnings and error messages now start at 1,
351 as is more standard, rather than 0.
357 GHCi now understands most linker scripts. In particular, this
358 means that GHCi is able to load the C pthread library.
364 The <literal>ghc --info</literal> output has been updated:
368 location of the global package database, in the
369 <literal>Global Package DB</literal> field.
372 It now includes the build, host and target platforms, in the
373 <literal>Build platform</literal>,
374 <literal>Host platform</literal> and
375 <literal>Target platform</literal> fields.
378 It now includes a <literal>Have llvm code generator</literal>
382 The <literal>Win32 DLLs</literal> field has been removed.
388 The registerised via-C backend, and the
389 <literal>-fvia-C</literal>, have been deprecated. The poor
390 floating-point performance in the x86 native code generator
391 has now been fixed, so we don't believe there is still any
392 reason to use the via-C backend.
398 There is now a new flag <literal>--supported-extensions</literal>,
399 which currently behaves the same as
400 <literal>--supported-languages</literal>.
406 GHC progress output such as
409 [ 1 of 5] Compiling Foo ( Foo.hs, Foo.o )
412 is now sent to stdout rather than stderr.
418 The new flag <literal>-fexpose-all-unfoldings</literal>
419 makes GHC put unfoldings for <emphasis>everything</emphasis>
420 in the interface file.
426 There are two new flags, <literal>-fno-specialise</literal>
427 and <literal>-fno-float-in</literal>, for disabling the
428 specialise and float-in passes.
434 The new flag <literal>-fstrictness-before=<replaceable>n</replaceable></literal> tells
435 GHC to run an additional strictness analysis pass
436 before simplifier phase <replaceable>n</replaceable>.
443 <literal>-funfolding-dict-discount</literal>
444 for tweaking the optimiser's behaviour.
450 The <literal>-fspec-inline-join-points</literal> flag has been
462 GHCi now understands the layout of multiline-commands, so
468 Prelude| y = 2 in x + y
477 <title>Template Haskell and Quasi-Quoters</title>
481 It is now possible to quasi-quote patterns with
482 <literal>[p| ... |]</literal>.
488 It is no longer to use a <literal>$</literal> before the
489 name of a quasi-quoter, e.g. one can now say
490 <literal>[expr| ... |]</literal> rather than
491 <literal>[$expr| ... |]</literal>.
497 It is now possible to use a quasi-quoter for types, e.g.
498 <literal>f :: [$qq| ... |]</literal>
504 It is now possible to quasi-quote existentials and GADTs.
511 <title>GHC API</title>
515 There are now <literal>Data</literal> and
516 <literal>Typeable</literal> instances for the
523 As language extensions are not applied until after the base
524 language (Haskell98, Haskell2010 or the default) has been
525 selected, it is now necessary to tell the GHC API the point
526 at which the extension flags should be processed. Normally
527 this is done by calling
528 <literal>DynFlags.flattenExtensionFlags</literal> once all
529 the flags and pragmas have been read.
537 <title>Libraries</title>