Update release notes and docs with LLVM info.
[ghc-hetmet.git] / docs / users_guide / 7.0.1-notes.xml
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>
4
5   <para>
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.
9   </para>
10
11   <sect2>
12     <title>Highlights</title>
13     <itemizedlist>
14       <listitem>
15         <para>
16           GHC now defaults to the Haskell 2010 language standard.
17         </para>
18
19         <para>
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:
35 <screen>
36 $ ghci -package haskell2010 -hide-package base -hide-package array
37 </screen>
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>.
41         </para>
42       </listitem>
43
44       <listitem>
45         <para>
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.
49         </para>
50       </listitem>
51
52       <listitem>
53         <para>
54                                         GHC now includes an LLVM code generator. For certain code,
55                                         particularly arithmetic heavy code, using the LLVM code
56                                         generator can bring some nice performance improvements.
57         </para>
58       </listitem>
59
60       <listitem>
61         <para>
62           The inliner has been overhauled, which should in general
63           give better performance while reducing unnecessary code-size
64           explosion.
65         </para>
66       </listitem>
67
68       <listitem>
69         <para>
70           Large parts of the runtime system have been overhauled, in
71           particular the machinery related to blocking and wakeup of
72           threads and exception throwing (<literal>throwTo</literal>).
73           Several instances of pathological performance have been
74           fixed, especially where large numbers of threads are
75           involved.
76         </para>
77       </listitem>
78
79       <listitem>
80         <para>
81           Due to changes in the runtime system, if you are
82           using <literal>Control.Parallel.Strategies</literal> from
83           the <literal>parallel</literal> package, please upgrade to
84           at least version 2 (preferably version 3).  The
85           implementation of Strategies
86           in <literal>parallel-1.x</literal> will lose parallelism
87           with GHC 7.0.1.
88         </para>
89       </listitem>
90
91       <listitem>
92         <para>
93           The full Haskell <literal>import</literal> syntax can now been
94           used to bring modules into scope in GHCi, e.g.
95         </para>
96 <programlisting>
97 Prelude> import Data.List as L
98 Prelude Data.List> L.length "foo"
99 3
100 </programlisting>
101       </listitem>
102
103       <listitem>
104         <para>
105           GHC now comes with a more recent mingw bundled on Windows,
106           which includes a fix for windres on Windows 7.
107         </para>
108       </listitem>
109     </itemizedlist>
110   </sect2>
111
112   <sect2>
113     <title>Language changes</title>
114     <itemizedlist>
115       <listitem>
116         <para>
117           GHC now understands the <literal>Haskell98</literal> and
118           <literal>Haskell2010</literal> languages.
119         </para>
120
121         <para>
122           These get processed before the language extension pragmas,
123           and define the default sets of extensions that are enabled.
124           If neither is specified, then the default is
125           <literal>Haskell2010</literal> plus the
126           <literal>MonoPatBinds</literal> extension.
127         </para>
128       </listitem>
129
130       <listitem>
131         <para>
132           GHC now supports the <literal>DoAndIfThenElse</literal>
133           extension, which is part of the Haskell 2010 standard.
134         </para>
135       </listitem>
136
137       <listitem>
138         <para>
139           Datatype contexts, such as the <literal>Eq a</literal> in
140         </para>
141 <programlisting>
142 data Eq a => Set a = NilSet | ConsSet a (Set a)
143 </programlisting>
144         <para>
145           are now treated as an extension
146           <literal>DatatypeContexts</literal> (on by default) by GHC.
147         </para>
148       </listitem>
149
150       <listitem>
151         <para>
152           GHC's support for unicode source has been improved, including
153           removing support for U+22EF for the <literal>..</literal>
154           symbol. See <xref linkend="unicode-syntax" /> for more details.
155         </para>
156       </listitem>
157
158       <listitem>
159         <para>
160           Pragmas are now reread after preprocessing. In particular,
161           this means that if a pragma is used to turn CPP on, then other
162           pragmas can be put in CPP conditionals.
163         </para>
164       </listitem>
165
166       <listitem>
167         <para>
168           The <literal>TypeOperators</literal> extension now allows
169           instance heads to use infix syntax.
170         </para>
171       </listitem>
172
173       <listitem>
174         <para>
175           The <literal>PackageImports</literal> extension now understands
176           <literal>this</literal> to mean the current package.
177         </para>
178       </listitem>
179
180       <listitem>
181         <para>
182           The <literal>INLINE</literal> and <literal>NOINLINE</literal>
183           pragmas can now take a <literal>CONLIKE</literal> modifier,
184           which indicates that the right hand side is cheap to compute,
185           and can thus be duplicated more freely.
186           See <xref linkend="conlike" /> for more details.
187         </para>
188       </listitem>
189
190       <listitem>
191         <para>
192           A <literal>ForceSpecConstr</literal> annotation on a type, e.g.
193         </para>
194 <programlisting>
195 import SpecConstr
196 {-# ANN type SPEC ForceSpecConstr #-}
197 </programlisting>
198         <para>
199           can be used to force GHC to fully specialise argument of that
200           type.
201         </para>
202       </listitem>
203
204       <listitem>
205         <para>
206           A <literal>NoSpecConstr</literal> annotation on a type, e.g.
207         </para>
208 <programlisting>
209 import SpecConstr
210 {-# ANN type T NoSpecConstr #-}
211 </programlisting>
212         <para>
213           can be used to prevent SpecConstr from specialising on
214           arguments of that type.
215         </para>
216       </listitem>
217
218       <listitem>
219         <para>
220           There is are two experimental new extensions
221           <literal>AlternativeLayoutRule</literal> and
222           <literal>AlternativeLayoutRuleTransitional</literal>,
223           which are for exploring alternative layout rules in Haskell'.
224           The details are subject to change, so we advise against using
225           them in real code for now.
226         </para>
227       </listitem>
228
229       <listitem>
230         <para>
231           The <literal>NewQualifiedOperators</literal> extension has
232           been deprecated, as it was rejected by the Haskell' committee.
233         </para>
234       </listitem>
235     </itemizedlist>
236   </sect2>
237
238   <sect2>
239     <title>Warnings</title>
240     <itemizedlist>
241       <listitem>
242         <para>
243           There is now a warning for missing import lists, controlled
244           by the new <literal>-fwarn-missing-import-lists</literal> flag.
245         </para>
246       </listitem>
247
248       <listitem>
249         <para>
250           GHC will now warn about <literal>SPECIALISE</literal> and
251           <literal>UNPACK</literal> pragmas that have no effect.
252         </para>
253       </listitem>
254     </itemizedlist>
255   </sect2>
256
257   <sect2>
258     <title>DLLs</title>
259     <itemizedlist>
260       <listitem>
261         <para>
262           Shared libraries are once again supported on Windows.
263         </para>
264       </listitem>
265
266       <listitem>
267         <para>
268           Shared libraries are now supported on OS X, both on x86 and on
269           PowerPC. The new <literal>-dylib-install-name</literal> GHC
270           flag is used to set the location of the dynamic library.
271           See <xref linkend="finding-shared-libs" /> for more details.
272         </para>
273       </listitem>
274     </itemizedlist>
275   </sect2>
276
277   <sect2>
278     <title>Runtime system</title>
279
280     <itemizedlist>
281       <listitem>
282         <para>
283           For security reasons, by default, the only RTS flag that
284           programs accept is <literal>+RTS --info</literal>. If you want
285           the full range of RTS flags then you need to link with the new
286           <literal>-rtsopts</literal> flag. See
287           <xref linkend="options-linker" /> for more details.
288         </para>
289       </listitem>
290
291       <listitem>
292         <para>
293           The RTS now exports a function <literal>setKeepCAFs</literal>
294           which is important when loading Haskell DLLs dynamically, as
295           a DLL may refer to CAFs that hae already been GCed.
296         </para>
297       </listitem>
298
299       <listitem>
300         <para>
301           The garbage collector no longer allows you to specify a number
302           of steps; there are now always 2. The <literal>-T</literal>
303           RTS flag has thus been removed.
304         </para>
305       </listitem>
306
307       <listitem>
308         <para>
309           A new RTS flag <literal>-H</literal> causes the RTS to use a
310           larger nursery, but without exceeding the amount of memory
311           that the application is already using. It makes some programs
312           go slower, but others go faster.
313         </para>
314       </listitem>
315
316       <listitem>
317         <para>
318           GHC now returns memory to the OS, if memory usage peaks and
319           then drops again. This is mainly useful for long running
320           processes which normally use very little memory, but
321           occasionally need a lot of memory for a short period of time.
322         </para>
323       </listitem>
324
325       <listitem>
326         <para>
327           On OS X, eventLog events are now available as DTrace probes.
328         </para>
329       </listitem>
330
331       <listitem>
332         <para>
333           The PAPI support has been improved. The new RTS flag
334           <literal>-a#0x40000000</literal> can be used to tell the RTS
335           to collect the native PAPI event <literal>0x40000000</literal>.
336         </para>
337       </listitem>
338     </itemizedlist>
339   </sect2>
340
341   <sect2>
342     <title>Compiler</title>
343     <itemizedlist>
344       <listitem>
345         <para>
346           GHC now defaults to <literal>--make</literal> mode, i.e. GHC
347           will chase dependencies for you automatically by default.
348         </para>
349       </listitem>
350
351       <listitem>
352         <para>
353           GHC now includes an LLVM code generator.
354         </para>
355         <para>
356           This includes a number of new flags:
357           a flag to tell GHC to use LLVM, <literal>-fllvm</literal>;
358           a flag to dump the LLVM input ,<literal>-ddump-llvm</literal>;
359           flags to keep the LLVM intermediate files,
360           <literal>-keep-llvm-file</literal> and
361           <literal>-keep-llvm-files</literal>;
362                                         flags to set the location and options for the LLVM optimiser
363                                         and compiler,
364           <literal>-pgmlo</literal>,
365           <literal>-pgmlc</literal>,
366           <literal>-optlo</literal> and
367           <literal>-optlc</literal>.
368                                         The LLVM code generator requires LLVM version 2.7 or later on
369                                         your path.
370         </para>
371       </listitem>
372
373       <listitem>
374         <para>
375           It is now possible to use <literal>-fno-code</literal> with
376           <literal>--make</literal>.
377         </para>
378       </listitem>
379
380       <listitem>
381         <para>
382           The new flag <literal>-dsuppress-coercions</literal> controls
383           whether GHC prints coercions in core dumps.
384         </para>
385       </listitem>
386
387       <listitem>
388         <para>
389           The new flag <literal>-dsuppress-module-prefixes</literal>
390           controls whether GHC prints module qualification prefixes
391           in core dumps.
392         </para>
393       </listitem>
394
395       <listitem>
396         <para>
397           The inliner has been overhauled. The most significant
398           user-visible change is that only saturated functions are
399           inlined, e.g.
400         </para>
401 <programlisting>
402 (.) f g x = f (g x)
403 </programlisting>
404         <para>
405           would only be inlined if <literal>(.)</literal> is applied to 3
406           arguments, while
407         </para>
408 <programlisting>
409 (.) f g = \x -> f (g x)
410 </programlisting>
411         <para>
412           will be inlined if only applied to 2 arguments.
413         </para>
414       </listitem>
415
416       <listitem>
417         <para>
418           The <literal>-finline-if-enough-args</literal> flag is no
419           longer supported.
420         </para>
421       </listitem>
422
423       <listitem>
424         <para>
425           Column numbers in warnings and error messages now start at 1,
426           as is more standard, rather than 0.
427         </para>
428       </listitem>
429
430       <listitem>
431         <para>
432           GHCi now understands most linker scripts. In particular, this
433           means that GHCi is able to load the C pthread library.
434         </para>
435       </listitem>
436
437       <listitem>
438         <para>
439           The <literal>ghc --info</literal> output has been updated:
440         </para>
441         <para>
442           It now includes the
443           location of the global package database, in the
444           <literal>Global Package DB</literal> field.
445         </para>
446         <para>
447           It now includes the build, host and target platforms, in the
448           <literal>Build platform</literal>,
449           <literal>Host platform</literal> and
450           <literal>Target platform</literal> fields.
451         </para>
452         <para>
453           It now includes a <literal>Have llvm code generator</literal>
454           field.
455         </para>
456         <para>
457           The <literal>Win32 DLLs</literal> field has been removed.
458         </para>
459       </listitem>
460
461       <listitem>
462         <para>
463           The registerised via-C backend, and the
464           <literal>-fvia-C</literal> flag, have been deprecated. The poor
465           floating-point performance in the x86 native code generator
466           has now been fixed, so we don't believe there is still any
467           reason to use the via-C backend.
468         </para>
469       </listitem>
470
471       <listitem>
472         <para>
473           There is now a new flag <literal>--supported-extensions</literal>,
474           which currently behaves the same as
475           <literal>--supported-languages</literal>.
476         </para>
477       </listitem>
478
479       <listitem>
480         <para>
481           GHC progress output such as
482         </para>
483 <programlisting>
484 [ 1 of 5] Compiling Foo              ( Foo.hs, Foo.o )
485 </programlisting>
486         <para>
487           is now sent to stdout rather than stderr.
488         </para>
489       </listitem>
490
491       <listitem>
492         <para>
493           The new flag <literal>-fexpose-all-unfoldings</literal>
494           makes GHC put unfoldings for <emphasis>everything</emphasis>
495           in the interface file.
496         </para>
497       </listitem>
498
499       <listitem>
500         <para>
501           There are two new flags, <literal>-fno-specialise</literal>
502           and <literal>-fno-float-in</literal>, for disabling the
503           specialise and float-in passes.
504         </para>
505       </listitem>
506
507       <listitem>
508         <para>
509           The new flag <literal>-fstrictness-before=<replaceable>n</replaceable></literal> tells
510           GHC to run an additional strictness analysis pass
511           before simplifier phase <replaceable>n</replaceable>.
512         </para>
513       </listitem>
514
515       <listitem>
516         <para>
517           There is a new flag
518           <literal>-funfolding-dict-discount</literal>
519           for tweaking the optimiser's behaviour.
520         </para>
521       </listitem>
522
523       <listitem>
524         <para>
525           The <literal>-fspec-inline-join-points</literal> flag has been
526           removed.
527         </para>
528       </listitem>
529
530       <listitem>
531         <para>
532           The <literal>-dynload wrapper</literal> flag has been
533           removed.
534         </para>
535       </listitem>
536     </itemizedlist>
537   </sect2>
538
539   <sect2>
540     <title>GHCi</title>
541     <itemizedlist>
542       <listitem>
543         <para>
544           GHCi now understands layout in multi-line commands, so
545           this now works:
546         </para>
547 <programlisting>
548 Prelude> :{
549 Prelude| let x = 1
550 Prelude|     y = 2 in x + y
551 Prelude| :}
552 3
553 </programlisting>
554       </listitem>
555     </itemizedlist>
556   </sect2>
557
558   <sect2>
559     <title>Template Haskell and Quasi-Quoters</title>
560     <itemizedlist>
561       <listitem>
562         <para>
563           It is now possible to quasi-quote patterns with
564           <literal>[p| ... |]</literal>.
565         </para>
566       </listitem>
567
568       <listitem>
569         <para>
570           It is no longer to use a <literal>$</literal> before the
571           name of a quasi-quoter, e.g. one can now say
572           <literal>[expr| ... |]</literal> rather than
573           <literal>[$expr| ... |]</literal>.
574         </para>
575       </listitem>
576
577       <listitem>
578         <para>
579           It is now possible to use a quasi-quoter for types, e.g.
580           <literal>f :: [$qq| ... |]</literal>
581         </para>
582       </listitem>
583
584       <listitem>
585         <para>
586           It is now possible to quasi-quote existentials and GADTs.
587         </para>
588       </listitem>
589     </itemizedlist>
590   </sect2>
591
592   <sect2>
593     <title>GHC API</title>
594     <itemizedlist>
595       <listitem>
596         <para>
597           There are now <literal>Data</literal> and
598           <literal>Typeable</literal> instances for the
599           HsSyn typed.
600         </para>
601       </listitem>
602
603       <listitem>
604         <para>
605           As language extensions are not applied until after the base
606           language (Haskell98, Haskell2010 or the default) has been
607           selected, it is now necessary to tell the GHC API the point
608           at which the extension flags should be processed. Normally
609           this is done by calling
610           <literal>DynFlags.flattenExtensionFlags</literal> once all
611           the flags and pragmas have been read.
612         </para>
613       </listitem>
614     </itemizedlist>
615   </sect2>
616
617 <!--
618   <sect2>
619     <title>Libraries</title>
620
621     <itemizedlist>
622     </itemizedlist>
623   </sect2>
624 -->
625 </sect1>
626