[project @ 2000-05-11 16:07:37 by simonmar]
[ghc-hetmet.git] / ghc / docs / users_guide / 4-07-notes.sgml
1 <sect1 id="release-4-07">
2   <title>Release notes for version 4.07 (May 2000)</title>
3
4   <sect2>
5     <title>User-visible compiler changes</title>
6
7     <itemizedlist>
8       <listitem>
9         <para>New profiling subsystem, based on cost-centre stacks.
10         See <xref linkend="profiling">.</para>
11       </listitem>
12
13       <listitem>
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>
20
21         <para>Add the <option>-fasm-x86</option> flag to GHC's command
22         line to enable it.</para>
23       </listitem>
24
25       <listitem>
26         <para>Implicit parameters.</para>
27       </listitem>
28
29       <listitem>
30         <para>Functional dependencies.</para>
31       </listitem>
32
33       <listitem>
34         <para>New <literal>DEPRECATED</literal> pragma for marking
35         outdated interfaces as deprecated.</para>
36       </listitem>
37
38       <listitem>
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
42         module.</para>
43       </listitem>
44
45       <listitem>
46         <para>New &ldquo;package&rdquo; system for libraries.  See
47         <xref linkend="packages"> for the details.</para>
48       </listitem>
49
50       <listitem>
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>
54       </listitem>
55
56       <listitem>
57         <para>Trying to put into a full <link
58         linkend="sec-MVars"><literal>MVar</literal></link> will now
59         raise a <link
60         linkend="PutFullMVar"><literal>PutFullMVar</literal></link>
61         exception.</para>
62       </listitem>
63
64       <listitem>
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>
69         exception.</para>
70       </listitem>
71
72       <listitem>
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>
76       </listitem>
77
78       <listitem>
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>
86       </listitem>
87
88       <listitem>
89         <para>Result type signatures now work.</para>
90       </listitem>
91
92       <listitem>
93         <para>A truckload of bugfixes.</para>
94       </listitem>
95       
96     </itemizedlist>
97   </sect2>
98
99   <sect2>
100     <title>User-visible library changes</title>
101
102     <itemizedlist>
103       <listitem>
104         <para>FFI.</para>
105       </listitem>
106
107       <listitem>
108         <para>HaXml, a library for parsing and generating XML, has
109         been added to the <literal>text</literal> package (<xref
110         linkend="sec-haxml">).</para>
111       </listitem>
112
113       <listitem>
114         <para>The <literal>QuickCheck</literal> library for performing
115         functional testing has been added to the
116         <literal>util</literal> package.</para>
117       </listitem>
118
119       <listitem>
120         <para>Two new experimental interfaces to arrays:
121         <literal>IArray</literal> for immutable arrays (<xref
122         linkend="sec-iarray">), and <literal>MArray</literal> for
123         mutable arrays (<xref linkend="sec-marray">).</para> 
124
125         <para>Comments on these interfaces are welcome; eventually
126         we'd like them to replace <literal>ByteArray</literal>,
127         <literal>STArray</literal> and
128         <literal>IOArray</literal>.</para>
129       </listitem>
130
131       <listitem>
132         <para>New function: <link
133         linkend="tryTakeMVar"><literal>tryTakeMVar</literal></link>.</para>
134       </listitem>
135
136       <listitem>
137         <para><literal>MutableArray</literal> has gone away, use
138         <literal>STArray</literal> (see <xref linkend="sec-ST">)
139         instead.</para>
140       </listitem>
141
142       <listitem>
143         <para><literal>hPutBuf</literal>,
144         <literal>hPutBufBA</literal>, <literal>hGetBuf</literal>, and
145         <literal>hGetBufBA</literal>, have been renamed to
146         <literal>hPutBufFull</literal>,
147         <literal>hPutBufBAFull</literal>,
148         <literal>hGetBufFull</literal>, and
149         <literal>hGetBufBAFull</literal>.  Functions with the old
150         names still exist, but have slightly different semantics.  See
151         <xref linkend="sec-bulk-transfers"> for more details.</para>
152       </listitem>
153     </itemizedlist>
154   </sect2>
155
156   <sect2>
157     <title>Internal changes</title>
158
159     <itemizedlist>
160       <listitem>
161         <para><literal>Con</literal> is gone; the
162         <literal>CoreExpr</literal> type is simpler.</para>
163       </listitem>
164
165       <listitem>
166         <para><literal>NoRepLits</literal> have gone.</para>
167       </listitem>
168
169       <listitem>
170         <para>Better usage info in interface files, which means less
171         recompilation.</para>
172       </listitem>
173
174       <listitem>
175         <para>CCall primop is tidied up.</para>
176       </listitem>
177
178       <listitem>
179         <para>Constant folding now done by Rules.</para>
180       </listitem>
181
182       <listitem>
183         <para>Lots of hackery in the simplifier.</para>
184       </listitem>
185
186       <listitem>
187         <para>Improvements in CPR and strictness analysis.</para>
188       </listitem>
189   
190     </itemizedlist>
191
192   </sect2>
193
194 </sect1>
195
196 <!-- Emacs stuff:
197      ;;; Local Variables: ***
198      ;;; mode: sgml ***
199      ;;; sgml-parent-document: ("users_guide.sgml" "book" "chapter" "sect1") ***
200      ;;; End: ***
201  -->