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.</para>
30 <para>Functional dependencies.</para>
34 <para>New <literal>DEPRECATED</literal> pragma for marking
35 outdated interfaces as deprecated.</para>
39 <para>New flag: <option>-fdump-minimal-imports</option>, which
40 dumps a file <literal>M.imports</literal> that contains the
41 (allegedly) minimal bunch of imports needed by the current
46 <para>New “package” system for libraries. See
47 <xref linkend="packages"> for the details.</para>
51 <para>The long-standing bug that caused some programs which
52 used <link linkend="trace"><literal>trace</literal></link> to
53 exit with a deadlock error has been fixed.</para>
57 <para>Trying to put into a full <link
58 linkend="sec-MVars"><literal>MVar</literal></link> will now
60 linkend="PutFullMVar"><literal>PutFullMVar</literal></link>
65 <para>If a thread is about to be garbage collected, because it
66 is waiting on an <literal>MVar</literal> that no other thread
67 has access to, then it will now be sent the <link
68 linkend="BlockedOnDeadMVar"><literal>BlockedOnDeadMVar</literal></link>
73 <para>A thread that is found to be blocked against itself
74 (i.e. is black holed) is now sent a
75 <literal>NonTermination</literal> exception.</para>
79 <para>Operations which may <emphasis>block</emphasis>, such as
80 <literal>takeMVar</literal>, <literal>raiseInThread</literal>,
81 and several I/O operations, may now receive asynchronous
82 exceptions even in the scope of a
83 <literal>blockAsyncExceptions</literal>. These are called
84 <firstterm>interruptible</firstterm> operations. See <xref
85 linkend="interruptible-operations"> for more details.</para>
89 <para>Result type signatures now work.</para>
93 <para>A truckload of bugfixes.</para>
100 <title>User-visible library changes</title>
104 <para>The FFI has been revised and expanded; see <xref
105 linkend="sec-Foreign"> and <xref linkend="sec-CTypes">.</para>
109 <para>HaXml, a library for parsing and generating XML, has
110 been added to the <literal>text</literal> package (<xref
111 linkend="sec-haxml">).</para>
115 <para>The <literal>QuickCheck</literal> library for performing
116 functional testing has been added to the
117 <literal>util</literal> package.</para>
121 <para>Two new experimental interfaces to arrays:
122 <literal>IArray</literal> for immutable arrays (<xref
123 linkend="sec-iarray">), and <literal>MArray</literal> for
124 mutable arrays (<xref linkend="sec-marray">).</para>
126 <para>Comments on these interfaces are welcome; eventually
127 we'd like them to replace <literal>ByteArray</literal>,
128 <literal>STArray</literal> and
129 <literal>IOArray</literal>.</para>
133 <para>New function: <link
134 linkend="tryTakeMVar"><literal>tryTakeMVar</literal></link>.</para>
138 <para><literal>MutableArray</literal> has gone away, use
139 <literal>STArray</literal> (see <xref linkend="sec-ST">)
144 <para><literal>hPutBuf</literal>,
145 <literal>hPutBufBA</literal>, <literal>hGetBuf</literal>, and
146 <literal>hGetBufBA</literal>, have been renamed to
147 <literal>hPutBufFull</literal>,
148 <literal>hPutBufBAFull</literal>,
149 <literal>hGetBufFull</literal>, and
150 <literal>hGetBufBAFull</literal>. Functions with the old
151 names still exist, but have slightly different semantics. See
152 <xref linkend="sec-bulk-transfers"> for more details.</para>
158 <title>Internal changes</title>
162 <para><literal>Con</literal> is gone; the
163 <literal>CoreExpr</literal> type is simpler.</para>
167 <para><literal>NoRepLits</literal> have gone.</para>
171 <para>Better usage info in interface files, which means less
172 recompilation.</para>
176 <para>CCall primop is tidied up.</para>
180 <para>Constant folding now done by Rules.</para>
184 <para>Lots of hackery in the simplifier.</para>
188 <para>Improvements in CPR and strictness analysis.</para>
198 ;;; Local Variables: ***
200 ;;; sgml-parent-document: ("users_guide.sgml" "book" "chapter" "sect1") ***