Remove -ddump-core-pipeline flag
[ghc.git] / docs / users_guide / 7.10.1-notes.xml
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-7-10-1">
3 <title>Release notes for version 7.10.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.8 branch.
9 </para>
10
11 <sect2>
12 <title>Highlights</title>
13
14 <para>
15 The highlights, since the 7.8 branch, are:
16 </para>
17
18 <itemizedlist>
19 <listitem>
20 <para>
21 TODO FIXME
22 </para>
23 </listitem>
24 </itemizedlist>
25 </sect2>
26
27 <sect2>
28 <title>Full details</title>
29 <sect3>
30 <title>Language</title>
31 <itemizedlist>
32 <listitem>
33 <para>
34 Added support for <link linkend="binary-literals">binary integer literals</link>
35 </para>
36 </listitem>
37 <listitem>
38 <para>
39 Simplified rules for implicit quantification. In previous versions of GHC,
40 it was possible to use the <literal>=></literal> arrow
41 to quantify over type variables in <literal>data</literal> and
42 <literal>type</literal> declarations without a
43 <literal>forall</literal> quantifier. For example,
44 <literal>data Fun = Fun (Ord a => a -> b)</literal> was identical to
45 <literal>data Fun = Fun (forall a b. Ord a => a -> b)</literal>, while
46 <literal>data Fun = Fun (a -> b)</literal> caused a not-in-scope error.
47 This implicit quantification is now deprecated, and variables
48 in higher-rank constructors should be quantified with <literal>forall</literal>
49 regardless of whether a class context is present or not.
50 GHC 7.10 raises a warning (controlled by
51 <option>-fwarn-context-quantification</option>, enabled by default)
52 and GHC 7.12 will raise an error. See <link linkend="univ">examples</link>
53 in GHC documentation.
54 </para>
55 <para>
56 The change also applies to Template Haskell splices such as
57 <literal>[t|Ord a => a|]</literal>, which should be written as
58 <literal>[t|forall a. Ord a => a|]</literal>.
59 </para>
60 </listitem>
61 </itemizedlist>
62 </sect3>
63
64 <sect3>
65 <title>Compiler</title>
66 <itemizedlist>
67 <listitem>
68 <para>
69 GHC now checks that all the language extensions required for
70 the inferred type signatures are explicitly enabled. This
71 means that if any of the type signatures inferred in your
72 program requires some language extension you will need to
73 enable it. The motivation is that adding a missing type
74 signature inferred by GHC should yield a program that
75 typechecks. Previously this was not the case.
76 </para>
77 <para>
78 This is a breaking change. Code that used to compile in the
79 past might fail with an error message requiring some
80 particular language extension (most likely
81 <option>-XTypeFamilies</option>, <option>-XGADTs</option> or
82 <option>-XFlexibleContexts</option>).
83 </para>
84 <para>
85 <option>-fwarn-tabs</option> warning flag is turned on by
86 default with this release of GHC. It can be suppressed
87 either by using <literal>GHC_OPTIONS</literal> pragma or by
88 specifying <option>-fno-warn-tabs</option> flag.
89 </para>
90 </listitem>
91 <listitem>
92 <para>
93 <option>-ddump-simpl-phases</option> and
94 <option>-ddump-core-pipeline</option> flags have been removed.
95 </para>
96 </listitem>
97 </itemizedlist>
98 </sect3>
99
100 <sect3>
101 <title>GHCi</title>
102 <itemizedlist>
103 <listitem>
104 <para>
105 TODO FIXME
106 </para>
107 </listitem>
108 </itemizedlist>
109 </sect3>
110
111 <sect3>
112 <title>Template Haskell</title>
113 <itemizedlist>
114 <listitem>
115 <para>
116 Added support for generating LINE pragma declarations
117 (<xref linkend="line-pragma"/>).
118 </para>
119
120 <para>
121 The type <literal>Pred</literal> (which stores a type
122 constraint) is now a synonym for <literal>Type</literal>,
123 in order to work with the <literal>ConstraintKinds</literal>
124 extension. This is a breaking change and may require
125 some rewriting of Template Haskell code.
126 </para>
127
128 <para>
129 <literal>reifyInstances</literal> now treats unbound type
130 variables as univerally quantified, allowing lookup of, say,
131 the instance for <literal>Eq [a]</literal>.
132 </para>
133
134 <para>
135 More kind annotations appear in reified types, in order to
136 disambiguate types that would otherwise be ambiguous in the
137 presence of <literal>PolyKinds</literal>. In particular, all
138 reified <literal>TyVarBndr</literal>s are now
139 <literal>KindedTV</literal>s. (This does not affect Template
140 Haskell quotations, just calls to <literal>reify</literal>.)
141 </para>
142
143 <para>
144 Various features unsupported in quotations were previously
145 silently ignored. These now cause errors.
146 </para>
147 </listitem>
148 </itemizedlist>
149 </sect3>
150
151 <sect3>
152 <title>Runtime system</title>
153 <itemizedlist>
154 <listitem>
155 <para>
156 TODO FIXME
157 </para>
158 </listitem>
159 </itemizedlist>
160 </sect3>
161
162 <sect3>
163 <title>Build system</title>
164 <itemizedlist>
165 <listitem>
166 <para>
167 <literal>ghc-pkg</literal> now respects <option>--user</option>
168 and <option>--global</option> when modifying packages (e.g.
169 changing exposed/trust flag or unregistering). Previously,
170 <literal>ghc-pkg</literal> would ignore these flags and modify
171 whichever package it found first on the database stack. To
172 recover the old behavior, simply omit these flags.
173 </para>
174 </listitem>
175 <listitem>
176 <para>
177 <literal>ghc-pkg</literal> accepts a <option>--user-package-db</option>
178 flag which allows a user to override the location of the user package
179 database. Unlike databases specified using <option>--package-db</option>,
180 a user package database configured this way respects
181 the <option>--user</option> flag.
182 </para>
183 </listitem>
184 </itemizedlist>
185 </sect3>
186
187 <sect3>
188 <title>Package system</title>
189 <itemizedlist>
190 <listitem>
191 <para>
192 TODO: cover module renaming, thinning, re-export etc
193 </para>
194 </listitem>
195 <listitem>
196 <para>
197 ghc-pkg (and ghc) have dropped support for single-file style
198 package databases. Since version 6.12, ghc-pkg has defaulted
199 to a new database format (using a directory of files, one per
200 package plus a binary cache).
201 </para>
202 <para>
203 This change will not affect programs and scripts that use
204 <literal>ghc-pkg init</literal> to create package databases.
205 </para>
206 <para>
207 This will affect scripts that create package databases
208 using tricks like
209 <programlisting>
210 echo "[]" > package.conf
211 </programlisting>
212 Such scripts will need to be modified to use
213 <literal>ghc-pkg init</literal>, and to delete databases
214 by directory removal, rather than simple file delete.
215 </para>
216 </listitem>
217 </itemizedlist>
218 </sect3>
219 </sect2>
220
221 <sect2>
222 <title>Libraries</title>
223
224 <sect3>
225 <title>array</title>
226 <itemizedlist>
227 <listitem>
228 <para>
229 Version number XXXXX (was 0.5.0.0)
230 </para>
231 </listitem>
232 </itemizedlist>
233 </sect3>
234
235 <sect3>
236 <title>base</title>
237 <itemizedlist>
238 <listitem>
239 <para>
240 Version number XXXXX (was 4.7.0.0)
241 </para>
242 </listitem>
243 <listitem>
244 <para>
245 GHC has had its internal Unicode database for
246 parsing updated to the Unicode 7.0 standard.
247 </para>
248 </listitem>
249 <listitem>
250 <para>
251 Attempting to access a portion of the result of
252 <literal>System.IO.hGetContents</literal> that was not yet
253 read when the handle was closed now throws an exception.
254 Previously, a lazy read from a closed handle would simply
255 end the result string, leading to silent or delayed
256 failures.
257 </para>
258 </listitem>
259 </itemizedlist>
260 </sect3>
261
262 <sect3>
263 <title>bin-package-db</title>
264 <itemizedlist>
265 <listitem>
266 <para>
267 This is an internal package, and should not be used.
268 </para>
269 </listitem>
270 </itemizedlist>
271 </sect3>
272
273 <sect3>
274 <title>binary</title>
275 <itemizedlist>
276 <listitem>
277 <para>
278 Version number XXXXX (was 0.7.1.0)
279 </para>
280 </listitem>
281 </itemizedlist>
282 </sect3>
283
284 <sect3>
285 <title>bytestring</title>
286 <itemizedlist>
287 <listitem>
288 <para>
289 Version number XXXXX (was 0.10.4.0)
290 </para>
291 </listitem>
292 </itemizedlist>
293 </sect3>
294
295 <sect3>
296 <title>Cabal</title>
297 <itemizedlist>
298 <listitem>
299 <para>
300 Version number XXXXX (was 1.18.1.3)
301 </para>
302 </listitem>
303 </itemizedlist>
304 </sect3>
305
306 <sect3>
307 <title>containers</title>
308 <itemizedlist>
309 <listitem>
310 <para>
311 Version number XXXXX (was 0.5.4.0)
312 </para>
313 </listitem>
314 </itemizedlist>
315 </sect3>
316
317 <sect3>
318 <title>deepseq</title>
319 <itemizedlist>
320 <listitem>
321 <para>
322 Version number XXXXX (was 1.3.0.2)
323 </para>
324 </listitem>
325 </itemizedlist>
326 </sect3>
327
328 <sect3>
329 <title>directory</title>
330 <itemizedlist>
331 <listitem>
332 <para>
333 Version number XXXXX (was 1.2.0.2)
334 </para>
335 </listitem>
336 </itemizedlist>
337 </sect3>
338
339 <sect3>
340 <title>filepath</title>
341 <itemizedlist>
342 <listitem>
343 <para>
344 Version number XXXXX (was 1.3.0.2)
345 </para>
346 </listitem>
347 </itemizedlist>
348 </sect3>
349
350 <sect3>
351 <title>ghc</title>
352 <itemizedlist>
353 <listitem>
354 <para>
355 Many internal functions in GHC related to package IDs have been
356 renamed to refer to package keys, e.g. <literal>PackageId</literal>
357 is now <literal>PackageKey</literal>, the wired-in names
358 such as <literal>primPackageId</literal> are now
359 <literal>primPackageKey</literal>, etc. This reflects a distinction
360 that we are now making: a package ID is, as before, the user-visible
361 ID from Cabal <literal>foo-1.0</literal>; a package key is now
362 a compiler-internal entity used for generating linking symbols, and
363 may not correspond at all to the package ID. In
364 particular, there may be multiple package keys per
365 package ID.
366 </para>
367 </listitem>
368 <listitem>
369 <para>
370 The ghc library no longer depends on the Cabal library. This means
371 that users of the ghc library are no longer forced to use the same
372 version of Cabal as ghc did. It also means that Cabal is freed up
373 to be able to depend on packages that ghc does not want to depend
374 on (which for example may enable improvements to Cabal's parsing
375 infrastructure).
376 </para>
377 </listitem>
378 </itemizedlist>
379 </sect3>
380
381 <sect3>
382 <title>ghc-prim</title>
383 <itemizedlist>
384 <listitem>
385 <para>
386 Version number XXXXX (was 0.3.1.0)
387 </para>
388 </listitem>
389 </itemizedlist>
390 </sect3>
391
392 <sect3>
393 <title>haskell98</title>
394 <itemizedlist>
395 <listitem>
396 <para>
397 Version number XXXXX (was 2.0.0.3)
398 </para>
399 </listitem>
400 </itemizedlist>
401 </sect3>
402
403 <sect3>
404 <title>haskell2010</title>
405 <itemizedlist>
406 <listitem>
407 <para>
408 Version number XXXXX (was 1.1.1.1)
409 </para>
410 </listitem>
411 </itemizedlist>
412 </sect3>
413
414 <sect3>
415 <title>hoopl</title>
416 <itemizedlist>
417 <listitem>
418 <para>
419 Version number XXXXX (was 3.10.0.0)
420 </para>
421 </listitem>
422 </itemizedlist>
423 </sect3>
424
425 <sect3>
426 <title>hpc</title>
427 <itemizedlist>
428 <listitem>
429 <para>
430 Version number XXXXX (was 0.6.0.1)
431 </para>
432 </listitem>
433 </itemizedlist>
434 </sect3>
435
436 <sect3>
437 <title>integer-gmp</title>
438 <itemizedlist>
439 <listitem>
440 <para>
441 Version number XXXXX (was 0.5.1.0)
442 </para>
443 </listitem>
444 </itemizedlist>
445 </sect3>
446
447 <sect3>
448 <title>old-locale</title>
449 <itemizedlist>
450 <listitem>
451 <para>
452 Version number XXXXX (was 1.0.0.6)
453 </para>
454 </listitem>
455 </itemizedlist>
456 </sect3>
457
458 <sect3>
459 <title>old-time</title>
460 <itemizedlist>
461 <listitem>
462 <para>
463 Version number XXXXX (was 1.1.0.2)
464 </para>
465 </listitem>
466 </itemizedlist>
467 </sect3>
468
469 <sect3>
470 <title>process</title>
471 <itemizedlist>
472 <listitem>
473 <para>
474 Version number XXXXX (was 1.2.0.0)
475 </para>
476 </listitem>
477 </itemizedlist>
478 </sect3>
479
480 <sect3>
481 <title>template-haskell</title>
482 <itemizedlist>
483 <listitem>
484 <para>
485 Version number XXXXX (was 2.9.0.0)
486 </para>
487 </listitem>
488 </itemizedlist>
489 </sect3>
490
491 <sect3>
492 <title>time</title>
493 <itemizedlist>
494 <listitem>
495 <para>
496 Version number XXXXX (was 1.4.1)
497 </para>
498 </listitem>
499 </itemizedlist>
500 </sect3>
501
502 <sect3>
503 <title>unix</title>
504 <itemizedlist>
505 <listitem>
506 <para>
507 Version number XXXXX (was 2.7.0.0)
508 </para>
509 </listitem>
510 </itemizedlist>
511 </sect3>
512
513 <sect3>
514 <title>Win32</title>
515 <itemizedlist>
516 <listitem>
517 <para>
518 Version number XXXXX (was 2.3.0.1)
519 </para>
520 </listitem>
521 </itemizedlist>
522 </sect3>
523 </sect2>
524
525 <sect2>
526 <title>Known bugs</title>
527 <itemizedlist>
528 <listitem>
529 <para>
530 TODO FIXME
531 </para>
532 </listitem>
533 </itemizedlist>
534 </sect2>
535 </sect1>