[project @ 1999-07-14 11:33:10 by simonmar]
[ghc-hetmet.git] / ghc / docs / users_guide / 4-04-notes.vsgml
1 <sect1>Release notes for version~4.04---7/99
2 <label id="release-4-04">
3 <p>
4
5 <itemize>
6 <item> <tt/Weak/ library changes:
7         <itemize>
8         <item> Finalise is now spelt finalize in all function names.
9         <item> <tt/finalize/ now runs the finalizer immediately, and
10                waits for it to complete before returning.
11         <item> <tt/mkWeak/ now takes a <tt/Maybe (IO ())/ for the finalizer,
12                and <tt/mkWeakNoFinalizer/ is removed.
13         <item> A weak pointer whose key is itself a weak pointer will now do
14                 the right thing.
15         </itemize>
16
17 <item> Changed representation of <tt/Integer/ type to speed up
18 computations on small integers.  The performance of <tt/Integer/ is now
19 only slightly slower than <tt/Int/ for values between <tt/minBound::Int/
20 and <tt/maxBound::Int/.
21
22 <item> On Win32 platforms, added support for using (and producing) dynamic
23 link libraries (DLLs) containing ghc-compiled code.
24
25 <item> Added @-funbox-strict-fields@ for unboxing/unpacking strict
26 constructor fields.
27
28 <item> GHC now has a license!  Check out <tt>fptools/ghc/LICENSE/</tt>.
29
30 <item> Added CPR analysis, which reduces allocation by unboxing
31 function results (thanks to Kevin Glynn <tt>&lt;keving@@cs.mu.OZ.AU&gt;</tt>).
32
33 <item> UsageSP analysis added, but not yet functional.
34
35 <item> Added a simple common sub-expression analysis pass.
36
37 <item> Implemented update-in-place for certain very restricted cases.
38
39 <item> Replaced GHC's old and worn yacc/lex parser with a new one
40 based on Happy.  Fixed several Haskell 98 non-conformance issues in
41 the process.
42
43 <item> Added <tt>Concurrent.yield :: IO ()</tt>.
44
45 <item> Added RULES pragms - transformation rules for Haskell source.
46 This is used for list fusion: now intermediate lists between map,
47 foldr, list comprehensions are removed automatically.
48
49 <item> Unregisterised/unmangled builds now work.
50
51 <item> Much performance tuning: GHC 4.04 produces faster code than all
52 previous compilers.
53
54 <item> GHC now defines <tt/__HASKELL98__/ when compiling files with
55 <tt/-cpp/.
56
57 <item> <tt/hppa1.1-hp-hpux/ port reinstated.
58
59 <item> New operations for unsafely thawing byte arrays:
60 <tt/unsafeThaw{Byte,ST,IO}Array/.
61
62 <item> <tt/mkdependHS/ now lives in GHC's lib directory, not the
63 binary directory.  It isn't intended to be run standalone, only via
64 <tt/ghc -M/.
65
66 <item> Asynchronous exceptions are now supported (see Section <ref name="The Concurrent Library" id="concurrent-interface">).  New operations:
67
68   <itemize> <item> <tt/Exception.killThread/ now raises an exception 
69         (<tt/AsyncException.KilledThread/) in the killed thread.
70        <item> <tt/Exception.raiseInThread/ allows a thread to raise an
71         exception in another thread.
72        <item> <tt/Concurrent.myThreadId/ returns the <tt/ThreadId/ of the 
73         calling thread.
74        <item> Stack overflow results in <tt/AsyncException.StackOverflow/
75         being raised in the offending thread.
76   </itemize>
77
78 <item> Assertion failures now raise an <tt/AssertionFailed/ exception.
79
80 <item> Added simple high-level interface to the Regex library, see
81 Section <ref name="The RegexString Library" id="RegexString">.
82
83 <item> <tt/forkIO/ now handles any uncaught exceptions cleanly.
84
85 <item> <tt/integer2Int#/ isn't sign preserving any longer, but modulo
86 <tt/(maxBound::Int + 1) * 2/.
87
88 <item> <tt/-ddump-rdr/ is now called <tt/-ddump-parsed/.
89
90 <item> Signal handling with the <tt/Posix/ library now works.
91
92 <item> Many, many bugs fixed.
93
94 </itemize>