[project @ 2000-05-11 16:16:32 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>The FFI has been revised and expanded; see <xref
105         linkend="sec-Foreign"> and <xref linkend="sec-CTypes">.</para>
106       </listitem>
107
108       <listitem>
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>
112       </listitem>
113
114       <listitem>
115         <para>The <literal>QuickCheck</literal> library for performing
116         functional testing has been added to the
117         <literal>util</literal> package.</para>
118       </listitem>
119
120       <listitem>
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> 
125
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>
130       </listitem>
131
132       <listitem>
133         <para>New function: <link
134         linkend="tryTakeMVar"><literal>tryTakeMVar</literal></link>.</para>
135       </listitem>
136
137       <listitem>
138         <para><literal>MutableArray</literal> has gone away, use
139         <literal>STArray</literal> (see <xref linkend="sec-ST">)
140         instead.</para>
141       </listitem>
142
143       <listitem>
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>
153       </listitem>
154     </itemizedlist>
155   </sect2>
156
157   <sect2>
158     <title>Internal changes</title>
159
160     <itemizedlist>
161       <listitem>
162         <para><literal>Con</literal> is gone; the
163         <literal>CoreExpr</literal> type is simpler.</para>
164       </listitem>
165
166       <listitem>
167         <para><literal>NoRepLits</literal> have gone.</para>
168       </listitem>
169
170       <listitem>
171         <para>Better usage info in interface files, which means less
172         recompilation.</para>
173       </listitem>
174
175       <listitem>
176         <para>CCall primop is tidied up.</para>
177       </listitem>
178
179       <listitem>
180         <para>Constant folding now done by Rules.</para>
181       </listitem>
182
183       <listitem>
184         <para>Lots of hackery in the simplifier.</para>
185       </listitem>
186
187       <listitem>
188         <para>Improvements in CPR and strictness analysis.</para>
189       </listitem>
190   
191     </itemizedlist>
192
193   </sect2>
194
195 </sect1>
196
197 <!-- Emacs stuff:
198      ;;; Local Variables: ***
199      ;;; mode: sgml ***
200      ;;; sgml-parent-document: ("users_guide.sgml" "book" "chapter" "sect1") ***
201      ;;; End: ***
202  -->