1 <sect1 id="release-4-07">
2 <title>Release notes for version 4.07 (May 2000)</title>
5 <title>User-visible compiler changes</title>
9 <para>New profiling subsystem, based on cost-centre stacks.
10 See <xref linkend="profiling">.</para>
14 <para>The x86 native code generator has been reworked
15 considerably, and now works reliably. Using the NCG rather
16 than compiling via C reduces compilation times by roughly a
17 half while having minimal effect on the run-time of the
18 compiled program (about 2-4% slower, worse for floating-point
19 intensive programs).</para>
21 <para>Add the <option>-fasm-x86</option> flag to GHC's command
22 line to enable it.</para>
26 <para>Implicit parameters. This Haskell extension gives a
27 statically-typed version of dynamic scoping that avoids the
28 worst problems of dynamic scoping in lisp. See the
29 <ulink url="http://www.cse.ogi.ed/~jlewis/implicit.ps.gz">POPL paper</ulink>
30 for more details. It is enabled by <option>-fglasgow-exts</option>.
35 <para>New <literal>DEPRECATED</literal> pragma for marking
36 outdated interfaces as deprecated.</para>
40 <para>New flag: <option>-fdump-minimal-imports</option>, which
41 dumps a file <literal>M.imports</literal> that contains the
42 (allegedly) minimal bunch of imports needed by the current
47 <para>New “package” system for libraries. See
48 <xref linkend="packages"> for the details.</para>
52 <para>The long-standing bug that caused some programs which
53 used <link linkend="trace"><literal>trace</literal></link> to
54 exit with a deadlock error has been fixed.</para>
58 <para>Trying to put into a full <link
59 linkend="sec-MVars"><literal>MVar</literal></link> will now
61 linkend="PutFullMVar"><literal>PutFullMVar</literal></link>
66 <para>If a thread is about to be garbage collected, because it
67 is waiting on an <literal>MVar</literal> that no other thread
68 has access to, then it will now be sent the <link
69 linkend="BlockedOnDeadMVar"><literal>BlockedOnDeadMVar</literal></link>
74 <para>A thread that is found to be blocked against itself
75 (i.e. is black holed) is now sent a
76 <literal>NonTermination</literal> exception.</para>
80 <para>Operations which may <emphasis>block</emphasis>, such as
81 <literal>takeMVar</literal>, <literal>raiseInThread</literal>,
82 and several I/O operations, may now receive asynchronous
83 exceptions even in the scope of a
84 <literal>blockAsyncExceptions</literal>. These are called
85 <firstterm>interruptible</firstterm> operations. See <xref
86 linkend="interruptible-operations"> for more details.</para>
90 <para>Result type signatures now work.</para>
94 <para>A truckload of bugfixes.</para>
101 <title>User-visible library changes</title>
105 <para>The FFI has been revised and expanded; see <xref
106 linkend="sec-Foreign"> and <xref linkend="sec-CTypes">.</para>
110 <para>HaXml, a library for parsing and generating XML, has
111 been added to the <literal>text</literal> package (<xref
112 linkend="sec-haxml">).</para>
116 <para>The <literal>QuickCheck</literal> library for performing
117 functional testing has been added to the
118 <literal>util</literal> package.</para>
122 <para>Two new experimental interfaces to arrays:
123 <literal>IArray</literal> for immutable arrays (<xref
124 linkend="sec-iarray">), and <literal>MArray</literal> for
125 mutable arrays (<xref linkend="sec-marray">).</para>
127 <para>Comments on these interfaces are welcome; eventually
128 we'd like them to replace <literal>ByteArray</literal>,
129 <literal>STArray</literal> and
130 <literal>IOArray</literal>.</para>
134 <para>New function: <link
135 linkend="tryTakeMVar"><literal>tryTakeMVar</literal></link>.</para>
139 <para><literal>MutableArray</literal> has gone away, use
140 <literal>STArray</literal> (see <xref linkend="sec-ST">)
145 <para><literal>hPutBuf</literal>,
146 <literal>hPutBufBA</literal>, <literal>hGetBuf</literal>, and
147 <literal>hGetBufBA</literal>, have been renamed to
148 <literal>hPutBufFull</literal>,
149 <literal>hPutBufBAFull</literal>,
150 <literal>hGetBufFull</literal>, and
151 <literal>hGetBufBAFull</literal>. Functions with the old
152 names still exist, but have slightly different semantics. See
153 <xref linkend="sec-bulk-transfers"> for more details.</para>
159 <title>Internal changes</title>
163 <para><literal>Con</literal> is gone; the
164 <literal>CoreExpr</literal> type is simpler.</para>
168 <para><literal>NoRepLits</literal> have gone.</para>
172 <para>Better usage info in interface files, which means less
173 recompilation.</para>
177 <para>CCall primop is tidied up.</para>
181 <para>Constant folding now done by Rules.</para>
185 <para>Lots of hackery in the simplifier.</para>
189 <para>Improvements in CPR and strictness analysis.</para>
199 ;;; Local Variables: ***
201 ;;; sgml-parent-document: ("users_guide.sgml" "book" "chapter" "sect1") ***