1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
|
<?xml version="1.0" encoding="iso-8859-1"?>
<sect1 id="release-6-0">
<title>Release notes for version 6.0</title>
<sect2>
<title>User-visible compiler changes</title>
<itemizedlist>
<listitem>
<para>Template Haskell, a new feature for compile-time
metaprogramming has been introduced. See <xref
linkend="template-haskell"/>.</para>
</listitem>
<listitem>
<para>INLINE pragmas on methods in class or instance
declarations now work properly.</para>
</listitem>
<listitem>
<para>Recursive do-notation (aka <literal>mdo</literal>) is
now supported. See <xref linkend="mdo-notation"/>.</para>
</listitem>
<listitem>
<para>There is now a native code generator for PowerPC
platforms.</para>
</listitem>
<listitem>
<para>Profiling: the <option>-xt</option> RTS option enables
inclusion of thread stacks in a heap profile. See <xref
linkend="rts-options-heap-prof"/>.</para>
</listitem>
<listitem>
<para>Non-blocking I/O is now supported on Windows.</para>
</listitem>
<listitem>
<para>The <ulink url="../libraries/base/Data.Dynamic.html#Typeable"><literal>Typeable</literal></ulink> class can now be
derived, and the implementation of <literal>Typeable</literal>
is now more efficient.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>User-visible interpreter (GHCi) changes</title>
<itemizedlist>
<listitem>
<para>Loading a <literal>Main</literal> module that does not
define <literal>main</literal> is no longer an error, although
GHCi will still emit a warning in this case.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>User-visible library changes</title>
<itemizedlist>
<listitem>
<para>Hierarchical libraries are now available without needing
to specify an explicit <option>-package</option> flag. There
are some exceptions to this rule (see <xref
linkend="using-packages"/>), but if you stick to GHCi and
<option>--make</option> mode then there will normally be no
need to specify <option>-package</option> options at
all.</para>
<para>Non-hierarchical libraries
(i.e. <literal>hslibs</literal> libraries) still need to be
explicitly requested with <option>-package</option>
options.</para>
</listitem>
<listitem>
<para>The <literal>Posix</literal> library has been rewritten.
It is now a hierarchical library rooted at
<literal>System.Posix</literal>, and has some additions aimed
at supporting the latest revision of the POSIX standard (IEEE
Std 1003.1-2001). See the <ulink
url="../libraries/unix/index.html"><literal>unix</literal>
package</ulink> for details.</para>
<para>The old <literal>posix</literal> package is still
available for backwards compatibility, but is deprecated and
will be removed in a future release.</para>
</listitem>
<listitem>
<para><ulink url="../libraries/base/Data.IORef.html"><literal>Data.IORef</literal></ulink>: Added <literal>atomicModifyIORef</literal>.</para>
</listitem>
<listitem>
<para><ulink url="../libraries/base/System.Cmd.html"><literal>System.Cmd</literal></ulink>: Added <literal>rawSystem</literal>.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/System.Environment.html"><literal>System.Environment</literal></ulink>:
Added <literal>withArgs</literal> and <literal>withProgName</literal>.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/network/Network.Socket.html"><literal>Network.Socket</literal></ulink>:
Added <literal>sendFd</literal> and <literal>recvFd</literal>.</para>
</listitem>
<listitem>
<para>The <literal>Readline</literal> library has moved to
<ulink
url="../libraries/readline/System.Console.Readline.html"><literal>System.Console.Readline</literal></ulink>,
and is in a package of its own
(<literal>readline</literal>).</para>
</listitem>
<listitem>
<para>The non-hierarchical versions of the FFI libraries are
now all available without needing to specify <literal>-package
lang</literal> (they are actually now in the
<literal>haskell98</literal> package, which is available by
default).</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/network/Network.BSD.html"><literal>Network.BSD</literal></ulink>:
<literal>symlink</literal> and <literal>readline</literal> are
now deprecated; use
<literal>System.Posix.createSymbolicLink</literal> and
<literal>System.Posix.readSymbolicLink</literal>
respectively.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/Control.Exception.html"><literal>Control.Exception</literal></ulink>:
Added <literal>mapException</literal>.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/Data.Dynamic.html"><literal>Data.Dynamic</literal></ulink>:
various changes to make the implementation of
<literal>Typeable</literal> more efficient. This entails some
changes to the interface, and affects how instances of
<literal>Typeable</literal> are defined.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/Data.Tree.html"><literal>Data.Tree</literal></ulink>
is a new library for trees.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/Data.Graph.html"><literal>Data.Graph</literal></ulink>
is a new library for graphs.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/System.IO.html"><literal>System.IO</literal></ulink>:
Removed <literal>bracket</literal> and
<literal>bracket_</literal> (use the versions from
<literal>Control.Exception</literal> instead).</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/System.IO.html"><literal>System.IO</literal></ulink>:
The <literal>IOError</literal> type is now a synonym for
<literal>IOException</literal>, whereas previously it was a
synonym for <literal>Exception</literal>. This has various
consequences, one of which is that the types of
<literal>System.IO.catch</literal> and
<literal>Control.Exception.catch</literal> are now different
(useful, because they do different things).</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/System.IO.Error.html"><literal>System.IO.Error</literal></ulink>:
added <literal>annotateIOError</literal>,
<literal>modifyIOError</literal>, and <literal>ioeSet{ErrorType,ErrorString,Handle,FileName}</literal>.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/Text.ParserCombinators.ReadP.html"><literal>Text.ParserCombinators.ReadP</literal></ulink>:
lots of updates.</para>
</listitem>
<listitem>
<para><literal>Control.Monad.Monoid</literal> is now <ulink url="../libraries/base/Data.Monoid.html"><literal>Data.Monoid</literal></ulink>.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/Data.PackedString.html"><literal>Data.PackedString</literal></ulink>:
added <literal>joinPS</literal>, <literal>unwordsPS</literal>
and <literal>unlinesPS</literal>.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/Data.HashTable.html"><literal>Data.HashTable</literal></ulink>
is a new dynamic hash-table implementation.</para>
</listitem>
<listitem>
<para>Added <ulink
url="../libraries/unix/System.Sendfile.html"><literal>System.Sendfile</literal></ulink>.</para>
</listitem>
<listitem>
<para>Added <ulink
url="../libraries/base/Foreign.Marshal.Pool.html"><literal>Foreign.Marshal.Pool</literal></ulink>.</para>
</listitem>
<listitem>
<para><ulink
url="../libraries/base/Data.Bits.html"><literal>Data.Bits</literal></ulink>:
<literal>shiftL</literal>, <literal>shiftR</literal>,
<literal>rotateL</literal>, and <literal>rotateR</literal> are
now methods of the <literal>Bite</literal> class.</para>
</listitem>
<listitem>
<para>The FFI libraries now conform to the latest version of
the FFI spec:</para>
<itemizedlist>
<listitem>
<para>Added <ulink
url="../libraries/base/Foreign.ForeignPtr.html#mallocForeignPtr"><literal>Foreign.ForeignPtr.mallocForeignPtr</literal></ulink>
and friends.</para>
</listitem>
<listitem>
<para>Finalizers added to a <literal>ForeignPtr</literal>
with <literal>addForeignPtrFinalizer</literal> are now run
in strict order; namely the reverse of the order they were
added.</para>
</listitem>
<listitem>
<para><literal>Foreign.C.TypesISO</literal> has been
merged into <ulink
url="../libraries/base/Foreign.C.Types.html"><literal>Foreign.C.Types</literal></ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Experimental features</title>
<itemizedlist>
<listitem>
<para>The <literal>Data</literal> class provides for generic
data traversals and folds; see <ulink
url="../libraries/base/Data.Generics.html"><literal>Data.Generics</literal></ulink>.
<literal>Data</literal> can be derived for arbitrary
datatypes. The <literal>Data</literal> class is still
experimental, so its contents may change in the future.</para>
</listitem>
<listitem>
<para>Several bugs have been fixed in the threaded RTS, and it
should now be rather more robust (it should still be
considered experimental, however).</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Internal changes</title>
<itemizedlist>
<listitem>
<para>Sweeping changes to the compiler and runtime system to
change the evaluation model from <quote>push/enter</quote> to
<quote>eval/apply</quote>. The bottom line is that the
compiler is now more portable and some of the complexity is
now more centralised, while performance and binary sizes
remain about the same.</para>
<para>A paper describing these changes can be found <ulink
url="http://research.microsoft.com/~simonpj/papers/eval-apply">here</ulink>.</para>
</listitem>
<listitem>
<para>The test suite is now driven by a Python script and is
rather more flexible and robust. It now supports building
tests several different "ways", and as a result we now run
each test with optimisation, profiling, native code
generation, and GHCi in addition to the vanilla way.</para>
</listitem>
<listitem>
<para>The build system now supports bootstrapping the compiler
in a single build tree. By default, typing
<literal>make</literal> at the top level will bootstrap the
compiler once to create a stage-2 compiler. See the Building
Guide for more details.</para>
</listitem>
<listitem>
<para>The RTS debugging flags are no longer represented by a
bitfield and now have single-character names. For example, to
turn on scheduler debugging output, use <literal>-Ds</literal>
rather than <literal>-D1</literal>.</para>
</listitem>
<listitem>
<para>The compiler no longer requires any packages from
<literal>hslibs</literal> to bootstrap. It is enough to
compile <literal>fptools/libraries</literal> before building
the stage 2 compiler.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<!-- Emacs stuff:
;;; Local Variables: ***
;;; mode: xml ***
;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") ***
;;; End: ***
-->
|