e328353291691548842bc779b2bf181bc9306425
[ghc-hetmet.git] / ghc / docs / users_guide / 4-06-notes.sgml
1 <Sect1 id="release-4-06">
2 <Title>Release notes for version&nbsp;4.06&mdash;1/00
3 </Title>
4
5 <Para>
6
7 <ItemizedList>
8 <ListItem>
9
10 <Para>
11 User visible changes
12
13 <ItemizedList>
14
15 <ListItem>
16 <Para>
17 Major library reorganisation.  The libraries are now split into 8
18 categories:
19
20 <VariableList>
21
22 <VarListEntry>
23 <Term><Literal>concurrent</Literal></Term>
24 <ListItem>
25 <Para>
26 Same as the old <literal>concurrent</literal> library
27 </Para>
28 </ListItem>
29 </VarListEntry>
30
31 <VarListEntry>
32 <Term><Literal>data</Literal></Term>
33 <ListItem>
34 <Para>
35 Datatypes.  Contains old <literal>FiniteMap</literal>
36 and <literal>Set</literal> modules, and Chris Okasaki's Edison
37 library.
38 </Para>
39 </ListItem>
40 </VarListEntry>
41
42 <VarListEntry>
43 <Term><Literal>lang</Literal></Term>
44 <ListItem>
45 <Para>
46 contains most of the contents of
47 the old <literal>exts</literal> library
48 </Para>
49 </ListItem>
50 </VarListEntry>
51
52 <VarListEntry>
53 <Term><Literal>net</Literal></Term>
54 <ListItem>
55 <Para>
56 networking-related libraries (Socket, SocketPrim, and
57 new URI library).
58 </Para>
59 </ListItem>
60 </VarListEntry>
61
62 <VarListEntry>
63 <Term><Literal>num</Literal></Term>
64 <ListItem>
65 <Para>
66 numerical-related libraries (currently empty).
67 </Para>
68 </ListItem>
69 </VarListEntry>
70
71 <VarListEntry>
72 <Term><Literal>posix</Literal></Term>
73 <ListItem>
74 <Para>
75 the old POSIX library
76 </Para>
77 </ListItem>
78 </VarListEntry>
79
80 <VarListEntry>
81 <Term><Literal>text</Literal></Term>
82 <ListItem>
83 <Para>
84 text-processing related libraries (including Andy Gill's
85 HTML library)
86 </Para>
87 </ListItem>
88 </VarListEntry>
89
90 <VarListEntry>
91 <Term><Literal>util</Literal></Term>
92 <ListItem>
93 <Para>
94 various miscellaneous libraries, including John Hughes'
95 and Koen Claessen's QuickCheck library.
96 </Para>
97 </ListItem>
98 </VarListEntry>
99
100 </VariableList>
101
102 See the accompanying libraries documentation for more details.
103 </Para>
104 </ListItem>
105
106 <ListItem>
107 <Para>
108 Cleanup of concurrent I/O system.  We now use non-blocking I/O on
109 all Handles, so that multiple threads can do I/O simultaneously.
110 We <Emphasis>don't</Emphasis> however do non-blocking I/O on <Constant>stdout</Constant>/<Constant>stderr</Constant>,
111 due to reports that some shells don't correctly restore
112 blocking mode on these file descriptors after running a program.
113 </Para>
114 </ListItem>
115
116 <ListItem id="exc-changes-406">
117 <Para>
118 Exception changes
119
120 <ItemizedList>
121 <ListItem>
122 <Para>
123 <Function>raiseInThread</Function> can now raise exceptions in threads blocked on I/O or time delays.
124 </Para>
125 </ListItem>
126
127 <ListItem>
128 <Para>
129 New functions in <literal>Exception</literal>
130
131 <ProgramListing>
132 blockAsyncExceptions   :: IO a -> IO a
133 unblockAsyncExceptions :: IO a -> IO a
134 </ProgramListing>
135
136 used to control the delivery of asynchronous exceptions to
137 a thread (including those raised via <Function>raiseInThread</Function>).
138 </Para>
139 </ListItem>
140
141 <ListItem>
142 <Para>
143 Asynchronous exceptions are now blocked by default inside
144 an exception handler.  Use <Function>unblockAsyncExceptions</Function> to
145 restore the previous behaviour.
146 </Para>
147 </ListItem>
148
149 </ItemizedList>
150
151 </Para>
152 </ListItem>
153
154 <ListItem>
155 <Para>
156 Add NetBSD/x86 support.
157 </Para>
158 </ListItem>
159
160 <ListItem>
161 <Para>
162 Added support for <Literal>foreign export dynamic</Literal>.
163 </Para>
164 </ListItem>
165
166 </ItemizedList>
167
168 </Para>
169 </ListItem>
170
171 <ListItem>
172 <Para>
173 Minor changes
174
175 <ItemizedList>
176
177 <ListItem>
178 <Para>
179 Build system cleanup&mdash;<Command>BIN_DIST=1</Command> is now needed in <Filename>build.mk</Filename> (before building!) to build binary dists.
180 </Para>
181 </ListItem>
182
183 <ListItem>
184 <Para>
185 New RTS option <Option>-xc</Option>, which prints the current cost-centre
186 stack to stderr whenever an exception is raised (only for
187 profiling builds).
188 </Para>  
189 </ListItem>
190
191 </ItemizedList>
192
193 </Para>
194 </ListItem>
195
196 <ListItem>
197 <Para>
198 Not-quite-ready-yet, but in there nontheless
199
200 <VariableList>
201
202 <VarListEntry>
203 <Term>
204 SMP support
205 </Term>
206 <ListItem>
207 <Para>
208 Building way '<Literal>s</Literal>' on a system with pthreads (only tested on
209 Linux so far) will include support for running multiple
210 Haskell threads on several pthreads simultaneously.  If
211 your system supports it, this will enable Haskell programs
212 to take advantage of multiprocessor SMP machines.
213 </Para>
214 </ListItem>
215 </VarListEntry>
216
217 <VarListEntry>
218 <Term>
219 GranSim and GUM
220 </Term>
221 <ListItem>
222 <Para>
223 Initial ports of GranSim and GUM to GHC 4 are in there.  Not quite
224 ready yet.
225 </Para>
226 </ListItem>
227 </VarListEntry>
228
229 <VarListEntry>
230 <Term>
231 Profiling
232 </Term>
233 <ListItem>
234 <Para>
235 Heap profiling sort-of works.  Only cost-centre heap
236 profiles are supported so far.
237 </Para>
238 </ListItem>
239 </VarListEntry>
240
241 </VariableList>
242
243 </Para>
244 </ListItem>
245
246 </ItemizedList>
247
248 </Para>
249
250 </Sect1>