Enabled warn on tabs by default (fixes #9230)
[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 has had its internal Unicode database for
70 parsing updated to the Unicode 7.0 standard.
71 </para>
72 </listitem>
73 <listitem>
74 <para>
75 GHC now checks that all the language extensions required for
76 the inferred type signatures are explicitly enabled. This
77 means that if any of the type signatures inferred in your
78 program requires some language extension you will need to
79 enable it. The motivation is that adding a missing type
80 signature inferred by GHC should yield a program that
81 typechecks. Previously this was not the case.
82 </para>
83 <para>
84 This is a breaking change. Code that used to compile in the
85 past might fail with an error message requiring some
86 particular language extension (most likely
87 <option>-XTypeFamilies</option>, <option>-XGADTs</option> or
88 <option>-XFlexibleContexts</option>).
89 </para>
90 <para>
91 <option>-fwarn-tabs</option> warning flag is turned on by
92 default with this release of GHC. It can be suppressed
93 either by using <literal>GHC_OPTIONS</literal> pragma or by
94 specifying <option>-fno-warn-tabs</option> flag.
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 </listitem>
120 </itemizedlist>
121 </sect3>
122
123 <sect3>
124 <title>Runtime system</title>
125 <itemizedlist>
126 <listitem>
127 <para>
128 TODO FIXME
129 </para>
130 </listitem>
131 </itemizedlist>
132 </sect3>
133
134 <sect3>
135 <title>Build system</title>
136 <itemizedlist>
137 <listitem>
138 <para>
139 <literal>ghc-pkg</literal> now respects <option>--user</option>
140 and <option>--global</option> when modifying packages (e.g.
141 changing exposed/trust flag or unregistering). Previously,
142 <literal>ghc-pkg</literal> would ignore these flags and modify
143 whichever package it found first on the database stack. To
144 recover the old behavior, simply omit these flags.
145 </para>
146 </listitem>
147 <listitem>
148 <para>
149 <literal>ghc-pkg</literal> accepts a <option>--user-package-db</option>
150 flag which allows a user to override the location of the user package
151 database. Unlike databases specified using <option>--package-db</option>,
152 a user package database configured this way respects
153 the <option>--user</option> flag.
154 </para>
155 </listitem>
156 </itemizedlist>
157 </sect3>
158
159 <sect3>
160 <title>Package system</title>
161 <itemizedlist>
162 <listitem>
163 <para>
164 TODO: cover module renaming, thinning, re-export etc
165 </para>
166 </listitem>
167 <listitem>
168 <para>
169 ghc-pkg (and ghc) have dropped support for single-file style
170 package databases. Since version 6.12, ghc-pkg has defaulted
171 to a new database format (using a directory of files, one per
172 package plus a binary cache).
173 </para>
174 <para>
175 This change will not affect programs and scripts that use
176 <literal>ghc-pkg init</literal> to create package databases.
177 </para>
178 <para>
179 This will affect scripts that create package databases
180 using tricks like
181 <programlisting>
182 echo "[]" > package.conf
183 </programlisting>
184 Such scripts will need to be modified to use
185 <literal>ghc-pkg init</literal>, and to delete databases
186 by directory removal, rather than simple file delete.
187 </para>
188 </listitem>
189 </itemizedlist>
190 </sect3>
191 </sect2>
192
193 <sect2>
194 <title>Libraries</title>
195
196 <sect3>
197 <title>array</title>
198 <itemizedlist>
199 <listitem>
200 <para>
201 Version number XXXXX (was 0.5.0.0)
202 </para>
203 </listitem>
204 </itemizedlist>
205 </sect3>
206
207 <sect3>
208 <title>base</title>
209 <itemizedlist>
210 <listitem>
211 <para>
212 Version number XXXXX (was 4.7.0.0)
213 </para>
214 </listitem>
215 </itemizedlist>
216 </sect3>
217
218 <sect3>
219 <title>bin-package-db</title>
220 <itemizedlist>
221 <listitem>
222 <para>
223 This is an internal package, and should not be used.
224 </para>
225 </listitem>
226 </itemizedlist>
227 </sect3>
228
229 <sect3>
230 <title>binary</title>
231 <itemizedlist>
232 <listitem>
233 <para>
234 Version number XXXXX (was 0.7.1.0)
235 </para>
236 </listitem>
237 </itemizedlist>
238 </sect3>
239
240 <sect3>
241 <title>bytestring</title>
242 <itemizedlist>
243 <listitem>
244 <para>
245 Version number XXXXX (was 0.10.4.0)
246 </para>
247 </listitem>
248 </itemizedlist>
249 </sect3>
250
251 <sect3>
252 <title>Cabal</title>
253 <itemizedlist>
254 <listitem>
255 <para>
256 Version number XXXXX (was 1.18.1.3)
257 </para>
258 </listitem>
259 </itemizedlist>
260 </sect3>
261
262 <sect3>
263 <title>containers</title>
264 <itemizedlist>
265 <listitem>
266 <para>
267 Version number XXXXX (was 0.5.4.0)
268 </para>
269 </listitem>
270 </itemizedlist>
271 </sect3>
272
273 <sect3>
274 <title>deepseq</title>
275 <itemizedlist>
276 <listitem>
277 <para>
278 Version number XXXXX (was 1.3.0.2)
279 </para>
280 </listitem>
281 </itemizedlist>
282 </sect3>
283
284 <sect3>
285 <title>directory</title>
286 <itemizedlist>
287 <listitem>
288 <para>
289 Version number XXXXX (was 1.2.0.2)
290 </para>
291 </listitem>
292 </itemizedlist>
293 </sect3>
294
295 <sect3>
296 <title>filepath</title>
297 <itemizedlist>
298 <listitem>
299 <para>
300 Version number XXXXX (was 1.3.0.2)
301 </para>
302 </listitem>
303 </itemizedlist>
304 </sect3>
305
306 <sect3>
307 <title>ghc</title>
308 <itemizedlist>
309 <listitem>
310 <para>
311 Many internal functions in GHC related to package IDs have been
312 renamed to refer to package keys, e.g. <literal>PackageId</literal>
313 is now <literal>PackageKey</literal>, the wired-in names
314 such as <literal>primPackageId</literal> are now
315 <literal>primPackageKey</literal>, etc. This reflects a distinction
316 that we are now making: a package ID is, as before, the user-visible
317 ID from Cabal <literal>foo-1.0</literal>; a package key is now
318 a compiler-internal entity used for generating linking symbols, and
319 may not correspond at all to the package ID. In
320 particular, there may be multiple package keys per
321 package ID.
322 </para>
323 </listitem>
324 <listitem>
325 <para>
326 The ghc library no longer depends on the Cabal library. This means
327 that users of the ghc library are no longer forced to use the same
328 version of Cabal as ghc did. It also means that Cabal is freed up
329 to be able to depend on packages that ghc does not want to depend
330 on (which for example may enable improvements to Cabal's parsing
331 infrastructure).
332 </para>
333 </listitem>
334 </itemizedlist>
335 </sect3>
336
337 <sect3>
338 <title>ghc-prim</title>
339 <itemizedlist>
340 <listitem>
341 <para>
342 Version number XXXXX (was 0.3.1.0)
343 </para>
344 </listitem>
345 </itemizedlist>
346 </sect3>
347
348 <sect3>
349 <title>haskell98</title>
350 <itemizedlist>
351 <listitem>
352 <para>
353 Version number XXXXX (was 2.0.0.3)
354 </para>
355 </listitem>
356 </itemizedlist>
357 </sect3>
358
359 <sect3>
360 <title>haskell2010</title>
361 <itemizedlist>
362 <listitem>
363 <para>
364 Version number XXXXX (was 1.1.1.1)
365 </para>
366 </listitem>
367 </itemizedlist>
368 </sect3>
369
370 <sect3>
371 <title>hoopl</title>
372 <itemizedlist>
373 <listitem>
374 <para>
375 Version number XXXXX (was 3.10.0.0)
376 </para>
377 </listitem>
378 </itemizedlist>
379 </sect3>
380
381 <sect3>
382 <title>hpc</title>
383 <itemizedlist>
384 <listitem>
385 <para>
386 Version number XXXXX (was 0.6.0.1)
387 </para>
388 </listitem>
389 </itemizedlist>
390 </sect3>
391
392 <sect3>
393 <title>integer-gmp</title>
394 <itemizedlist>
395 <listitem>
396 <para>
397 Version number XXXXX (was 0.5.1.0)
398 </para>
399 </listitem>
400 </itemizedlist>
401 </sect3>
402
403 <sect3>
404 <title>old-locale</title>
405 <itemizedlist>
406 <listitem>
407 <para>
408 Version number XXXXX (was 1.0.0.6)
409 </para>
410 </listitem>
411 </itemizedlist>
412 </sect3>
413
414 <sect3>
415 <title>old-time</title>
416 <itemizedlist>
417 <listitem>
418 <para>
419 Version number XXXXX (was 1.1.0.2)
420 </para>
421 </listitem>
422 </itemizedlist>
423 </sect3>
424
425 <sect3>
426 <title>process</title>
427 <itemizedlist>
428 <listitem>
429 <para>
430 Version number XXXXX (was 1.2.0.0)
431 </para>
432 </listitem>
433 </itemizedlist>
434 </sect3>
435
436 <sect3>
437 <title>template-haskell</title>
438 <itemizedlist>
439 <listitem>
440 <para>
441 Version number XXXXX (was 2.9.0.0)
442 </para>
443 </listitem>
444 </itemizedlist>
445 </sect3>
446
447 <sect3>
448 <title>time</title>
449 <itemizedlist>
450 <listitem>
451 <para>
452 Version number XXXXX (was 1.4.1)
453 </para>
454 </listitem>
455 </itemizedlist>
456 </sect3>
457
458 <sect3>
459 <title>unix</title>
460 <itemizedlist>
461 <listitem>
462 <para>
463 Version number XXXXX (was 2.7.0.0)
464 </para>
465 </listitem>
466 </itemizedlist>
467 </sect3>
468
469 <sect3>
470 <title>Win32</title>
471 <itemizedlist>
472 <listitem>
473 <para>
474 Version number XXXXX (was 2.3.0.1)
475 </para>
476 </listitem>
477 </itemizedlist>
478 </sect3>
479 </sect2>
480
481 <sect2>
482 <title>Known bugs</title>
483 <itemizedlist>
484 <listitem>
485 <para>
486 TODO FIXME
487 </para>
488 </listitem>
489 </itemizedlist>
490 </sect2>
491 </sect1>