[project @ 2000-01-12 18:05:49 by rrt]
[ghc-hetmet.git] / ghc / docs / users_guide / 4-04-notes.sgml
1 <Sect1 id="release-4-04">
2 <Title>Release notes for version&nbsp;4.04&mdash;7/99
3 </Title>
4
5 <Para>
6
7 <ItemizedList>
8 <ListItem>
9
10 <Para>
11 <Literal>Weak</Literal> library changes:
12
13 <ItemizedList>
14 <ListItem>
15 <Para>
16 ``Finalise'' is now spelt ``finalize'' in all function names.
17 </Para>
18 </ListItem>
19
20 <ListItem>
21 <Para>
22 <Function>finalize</Function> now runs the finalizer immediately, and
23 waits for it to complete before returning.
24 </Para>
25 </ListItem>
26
27 <ListItem>
28 <Para>
29 <Function>mkWeak</Function> now takes a <Literal>Maybe (IO ())</Literal> for the finalizer,
30 and <Function>mkWeakNoFinalizer</Function> is removed.
31 </Para>
32 </ListItem>
33
34 <ListItem>
35 <Para>
36 A weak pointer whose key is itself a weak pointer will now do the right
37 thing.
38 </Para>
39 </ListItem>
40
41 </ItemizedList>
42 </Para>
43 </ListItem>
44
45 <ListItem>
46 <Para>
47 Changed representation of <Literal>Integer</Literal> type to speed up
48 computations on small integers.  The performance of <Literal>Integer</Literal> is now
49 only slightly slower than <Literal>Int</Literal> for values between <Constant>minBound::Int</Constant>
50 and <Constant>maxBound::Int</Constant>.
51 </Para>
52 </ListItem>
53
54 <ListItem>
55 <Para>
56 On Win32 platforms, added support for using (and producing) dynamic
57 link libraries (DLLs) containing ghc-compiled code.
58 </Para>
59 </ListItem>
60
61 <ListItem>
62 <Para>
63 Added <Option>-funbox-strict-fields</Option> for unboxing/unpacking strict
64 constructor fields.
65 </Para>
66 </ListItem>
67
68 <ListItem>
69 <Para>
70 GHC now has a license!  See <XRef LinkEnd="License">.
71 </Para>
72 </ListItem>
73
74 <ListItem>
75 <Para>
76 Added CPR analysis, which reduces allocation by unboxing function results
77 (thanks to Kevin Glynn <Email>keving@cs.mu.oz.au</Email>).
78 </Para>
79 </ListItem>
80
81 <ListItem>
82 <Para>
83 UsageSP analysis added, but not yet functional.
84 </Para>
85 </ListItem>
86
87 <ListItem>
88 <Para>
89 Added a simple common sub-expression analysis pass.
90 </Para>
91 </ListItem>
92
93 <ListItem>
94 <Para>
95 Implemented update-in-place for certain very restricted cases.
96 </Para>
97 </ListItem>
98
99 <ListItem>
100 <Para>
101 Replaced GHC's old and worn yacc/lex parser with a new one based on Happy. 
102 Fixed several Haskell 98 non-conformance issues in the process.
103 </Para>
104 </ListItem>
105
106 <ListItem>
107 <Para>
108 Added <Function>Concurrent.yield :: IO ()</Function>.
109 </Para>
110 </ListItem>
111
112 <ListItem>
113 <Para>
114 Added <Literal>RULES</Literal> pragma&mdash;transformation rules for Haskell source.
115 This is used for list fusion: now intermediate lists between map,
116 foldr, list comprehensions are removed automatically.
117 </Para>
118 </ListItem>
119
120 <ListItem>
121 <Para>
122 Unregisterised/unmangled builds now work.
123 </Para>
124 </ListItem>
125
126 <ListItem>
127 <Para>
128 Much performance tuning: GHC 4.04 produces faster code than all previous
129 compilers.
130 </Para>
131 </ListItem>
132
133 <ListItem>
134 <Para>
135 GHC now defines <Literal>&lowbar;&lowbar;HASKELL98&lowbar;&lowbar;</Literal> when compiling files with <Option>-cpp</Option>.
136 </Para>
137 </ListItem>
138
139 <ListItem>
140 <Para>
141 <Literal>hppa1.1-hp-hpux</Literal> port reinstated.
142 </Para>
143 </ListItem>
144
145 <ListItem>
146 <Para>
147 New operations for unsafely thawing byte arrays:
148 <Function>unsafeThaw&lcub;Byte,ST,IO&rcub;Array</Function>.
149 </Para>
150 </ListItem>
151
152 <ListItem>
153 <Para>
154 <Command>mkdependHS</Command> now lives in GHC's lib directory, not the
155 binary directory.  It isn't intended to be run standalone, only via
156 <Command>ghc -M</Command>.
157 </Para>
158 </ListItem>
159
160 <ListItem>
161 <Para>
162 Asynchronous exceptions are now supported (see the libary documentation for Concurrent Haskell).  New operations:
163 <!-- Want to add external ref here -->
164
165 <ItemizedList>
166
167 <ListItem>
168 <Para>
169 <Function>Exception.killThread</Function> now raises an exception 
170 (<Function>AsyncException.KilledThread</Function>) in the killed thread.
171 </Para>
172 </ListItem>
173
174 <ListItem>
175 <Para>
176 <Function>Exception.raiseInThread</Function> allows a thread to raise an
177 exception in another thread.
178 </Para>
179 </ListItem>
180
181 <ListItem>
182 <Para>
183 <Function>Concurrent.myThreadId</Function> returns the <Literal>ThreadId</Literal> of the calling thread.
184 </Para>
185 </ListItem>
186
187 <ListItem>
188 <Para>
189 Stack overflow results in <Constant>AsyncException.StackOverflow</Constant>
190 being raised in the offending thread.
191 </Para>
192 </ListItem>
193
194 </ItemizedList>
195
196 </Para>
197 </ListItem>
198
199 <ListItem>
200 <Para>
201 Assertion failures now raise an <Constant>AssertionFailed</Constant> exception.
202 </Para>
203 </ListItem>
204
205 <ListItem>
206 <Para>
207 Added simple high-level interface to the Regex library, see the libraries manual.
208 </Para>
209 </ListItem>
210
211 <ListItem>
212 <Para>
213 <Function>forkIO</Function> now handles any uncaught exceptions cleanly.
214 </Para>
215 </ListItem>
216
217 <ListItem>
218 <Para>
219 <Function>integer2Int&num;</Function> isn't sign preserving any longer, but modulo <Constant>(maxBound::Int + 1) * 2</Constant>.
220 </Para>
221 </ListItem>
222
223 <ListItem>
224 <Para>
225 <Option>-ddump-rdr</Option> is now called <Option>-ddump-parsed</Option>.
226 </Para>
227 </ListItem>
228
229 <ListItem>
230 <Para>
231 Signal handling with the <Literal>Posix</Literal> library now works.
232 </Para>
233 </ListItem>
234
235 <ListItem>
236 <Para>
237 Many, many bugs fixed.
238 </Para>
239 </ListItem>
240
241 </ItemizedList>
242 </Para>
243
244 </Sect1>