cc9dd37dbbde88d8dfa954c4c2ab3fe867aca5d7
[ghc.git] / docs / users_guide / 7.12.1-notes.xml
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-7-12-1">
3 <title>Release notes for version 7.12.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.10 branch.
9 </para>
10
11 <sect2>
12 <title>Highlights</title>
13
14 <para>
15 The highlights, since the 7.10 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 TODO FIXME.
35 </para>
36 </listitem>
37 <listitem>
38 <para>
39 Implicit parameters of the new base type
40 <literal>GHC.Stack.CallStack</literal> are treated
41 specially, and automatically solved for the current source
42 location. For example
43 <programlisting>
44 f = print (?stk :: CallStack)
45 </programlisting>
46 will print the singleton stack containing the occurrence of
47 <literal>?stk</literal>. If there is another
48 <literal>CallStack</literal> implicit in-scope, the new location
49 will be appended to the existing stack, e.g.
50 <programlisting>
51 f :: (?stk :: CallStack) => IO ()
52 f = print (?stk :: CallStack)
53 </programlisting>
54 will print the occurrence of <literal>?stk</literal> and the
55 call-site of <literal>f</literal>. The name of the implicit
56 parameter does not matter.
57 </para>
58 <para>
59 See the release notes for base for a description of the
60 <literal>CallStack</literal> type.
61 </para>
62 </listitem>
63 <listitem>
64 <para>
65 To conform to the common case, the default role assigned to parameters
66 of datatypes declared in <literal>hs-boot</literal> files is
67 <literal>representational</literal>. However, if the constructor(s)
68 for the datatype are given, it makes sense to do normal role inference.
69 This is now implemented, effectively making the default role for
70 non-abstract datatypes in <literal>hs-boot</literal> files to be
71 <literal>phantom</literal>, like it is in regular Haskell code.
72 </para>
73 </listitem>
74 </itemizedlist>
75 </sect3>
76
77 <sect3>
78 <title>Compiler</title>
79 <itemizedlist>
80 <listitem>
81 <para>
82 Added the option <option>-dth-dec-file</option>.
83
84 This dumps out a .th.hs file of all Template Haskell declarations in a corresponding .hs file. The idea is that application developers can check this into their repository so that they can grep for identifiers used elsewhere that were defined in Template Haskell.
85 This is similar to using <option>-ddump-to-file</option> with <option>-ddump-splices</option> but it always generates a file instead of being coupled to <option>-ddump-to-file</option> and only outputs code that does not exist in the .hs file and a comment for the splice location in the original file.
86 </para>
87 </listitem>
88 <listitem>
89 <para>
90 Added the option <option>-fprint-expanded-types</option>.
91
92 When enabled, GHC also prints type-synonym-expanded types in
93 type errors.
94 </para>
95 </listitem>
96 </itemizedlist>
97 </sect3>
98
99 <sect3>
100 <title>GHCi</title>
101 <itemizedlist>
102 <listitem>
103 <para>
104 <literal>Main</literal> with an explicit module header but
105 without <literal>main</literal> is now an error (#7765).
106 </para>
107 <para>
108 The <literal>:back</literal> and <literal>:forward</literal>
109 commands now take an optional count allowing the user to move forward or
110 backward in history several steps at a time.
111 </para>
112 <para>
113 Added commands <literal>:load!</literal> and <literal>:reload!</literal>,
114 effectively setting "-fdefer-type-errors" before loading a module and
115 unsetting it after loading if it has not been set before (#8353).
116 </para>
117 </listitem>
118 </itemizedlist>
119 </sect3>
120
121 <sect3>
122 <title>Template Haskell</title>
123 <itemizedlist>
124 <listitem>
125 <para>
126 The <literal>TemplateHaskell</literal> now no longer automatically
127 errors when used with a stage 1 compiler (i.e. GHC without
128 interpreter support); in particular, plain
129 Haskell quotes (not quasi-quotes) can now be compiled without erroring.
130 Splices and quasi-quotes continue to only be supported by a
131 stage 2 compiler.
132 </para>
133 </listitem>
134 </itemizedlist>
135 </sect3>
136
137 <sect3>
138 <title>Runtime system</title>
139 <itemizedlist>
140 <listitem>
141 <para>
142 TODO FIXME.
143 </para>
144 </listitem>
145 </itemizedlist>
146 </sect3>
147
148 <sect3>
149 <title>Build system</title>
150 <itemizedlist>
151 <listitem>
152 <para>
153 TODO FIXME.
154 </para>
155 </listitem>
156 </itemizedlist>
157 </sect3>
158
159 <sect3>
160 <title>Package system</title>
161 <itemizedlist>
162 <listitem>
163 <para>
164 TODO FIXME.
165 </para>
166 </listitem>
167 </itemizedlist>
168 </sect3>
169 </sect2>
170
171 <sect2>
172 <title>Libraries</title>
173
174 <sect3>
175 <title>array</title>
176 <itemizedlist>
177 <listitem>
178 <para>
179 Version number XXXXX (was 0.5.0.0)
180 </para>
181 </listitem>
182 </itemizedlist>
183 </sect3>
184
185 <sect3>
186 <title>base</title>
187 <itemizedlist>
188 <listitem>
189 <para>
190 Version number XXXXX (was 4.7.0.0)
191 </para>
192 </listitem>
193 <listitem>
194 <para>
195 A new module <literal>GHC.SrcLoc</literal> was added,
196 exporting a new type <literal>SrcLoc</literal>. A
197 <literal>SrcLoc</literal> contains package, module,
198 and file names, as well as start and end positions.
199 </para>
200 </listitem>
201 <listitem>
202 <para>
203 A new type <literal>CallStack</literal> was added for use
204 with the new implicit callstack parameters. A
205 <literal>CallStack</literal> is a
206 <literal>[(String, SrcLoc)]</literal>, sorted by most-recent
207 call.
208 </para>
209 </listitem>
210 </itemizedlist>
211 </sect3>
212
213 <sect3>
214 <title>bin-package-db</title>
215 <itemizedlist>
216 <listitem>
217 <para>
218 This is an internal package, and should not be used.
219 </para>
220 </listitem>
221 </itemizedlist>
222 </sect3>
223
224 <sect3>
225 <title>binary</title>
226 <itemizedlist>
227 <listitem>
228 <para>
229 Version number XXXXX (was 0.7.1.0)
230 </para>
231 </listitem>
232 </itemizedlist>
233 </sect3>
234
235 <sect3>
236 <title>bytestring</title>
237 <itemizedlist>
238 <listitem>
239 <para>
240 Version number XXXXX (was 0.10.4.0)
241 </para>
242 </listitem>
243 </itemizedlist>
244 </sect3>
245
246 <sect3>
247 <title>Cabal</title>
248 <itemizedlist>
249 <listitem>
250 <para>
251 Version number XXXXX (was 1.18.1.3)
252 </para>
253 </listitem>
254 </itemizedlist>
255 </sect3>
256
257 <sect3>
258 <title>containers</title>
259 <itemizedlist>
260 <listitem>
261 <para>
262 Version number XXXXX (was 0.5.4.0)
263 </para>
264 </listitem>
265 </itemizedlist>
266 </sect3>
267
268 <sect3>
269 <title>deepseq</title>
270 <itemizedlist>
271 <listitem>
272 <para>
273 Version number XXXXX (was 1.3.0.2)
274 </para>
275 </listitem>
276 </itemizedlist>
277 </sect3>
278
279 <sect3>
280 <title>directory</title>
281 <itemizedlist>
282 <listitem>
283 <para>
284 Version number XXXXX (was 1.2.0.2)
285 </para>
286 </listitem>
287 </itemizedlist>
288 </sect3>
289
290 <sect3>
291 <title>filepath</title>
292 <itemizedlist>
293 <listitem>
294 <para>
295 Version number XXXXX (was 1.3.0.2)
296 </para>
297 </listitem>
298 </itemizedlist>
299 </sect3>
300
301 <sect3>
302 <title>ghc</title>
303 <itemizedlist>
304 <listitem>
305 <para>
306 TODO FIXME.
307 </para>
308 </listitem>
309 </itemizedlist>
310 </sect3>
311
312 <sect3>
313 <title>ghc-prim</title>
314 <itemizedlist>
315 <listitem>
316 <para>
317 Version number XXXXX (was 0.3.1.0)
318 </para>
319 </listitem>
320 </itemizedlist>
321 </sect3>
322
323 <sect3>
324 <title>haskell98</title>
325 <itemizedlist>
326 <listitem>
327 <para>
328 Version number XXXXX (was 2.0.0.3)
329 </para>
330 </listitem>
331 </itemizedlist>
332 </sect3>
333
334 <sect3>
335 <title>haskell2010</title>
336 <itemizedlist>
337 <listitem>
338 <para>
339 Version number XXXXX (was 1.1.1.1)
340 </para>
341 </listitem>
342 </itemizedlist>
343 </sect3>
344
345 <sect3>
346 <title>hoopl</title>
347 <itemizedlist>
348 <listitem>
349 <para>
350 Version number XXXXX (was 3.10.0.0)
351 </para>
352 </listitem>
353 </itemizedlist>
354 </sect3>
355
356 <sect3>
357 <title>hpc</title>
358 <itemizedlist>
359 <listitem>
360 <para>
361 Version number XXXXX (was 0.6.0.1)
362 </para>
363 </listitem>
364 </itemizedlist>
365 </sect3>
366
367 <sect3>
368 <title>integer-gmp</title>
369 <itemizedlist>
370 <listitem>
371 <para>
372 Version number XXXXX (was 0.5.1.0)
373 </para>
374 </listitem>
375 </itemizedlist>
376 </sect3>
377
378 <sect3>
379 <title>old-locale</title>
380 <itemizedlist>
381 <listitem>
382 <para>
383 Version number XXXXX (was 1.0.0.6)
384 </para>
385 </listitem>
386 </itemizedlist>
387 </sect3>
388
389 <sect3>
390 <title>old-time</title>
391 <itemizedlist>
392 <listitem>
393 <para>
394 Version number XXXXX (was 1.1.0.2)
395 </para>
396 </listitem>
397 </itemizedlist>
398 </sect3>
399
400 <sect3>
401 <title>process</title>
402 <itemizedlist>
403 <listitem>
404 <para>
405 Version number XXXXX (was 1.2.0.0)
406 </para>
407 </listitem>
408 </itemizedlist>
409 </sect3>
410
411 <sect3>
412 <title>template-haskell</title>
413 <itemizedlist>
414 <listitem>
415 <para>
416 Version number XXXXX (was 2.9.0.0)
417 </para>
418 </listitem>
419 <listitem>
420 <para>
421 The <literal>Lift</literal> type class for lifting values
422 into Template Haskell splices now has a default signature
423 <literal>lift :: Data a => a -> Q Exp</literal>, which means
424 that you do not have to provide an explicit implementation
425 of <literal>lift</literal> for types which have a <literal>Data</literal>
426 instance. To manually use this default implementation, you
427 can use the <literal>liftData</literal> function which is
428 now exported from <literal>Language.Haskell.TH.Syntax</literal>.
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>