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