[project @ 1998-11-26 09:17:22 by sof]
[ghc-hetmet.git] / ghc / docs / users_guide / 2-02-notes.vsgml
1 <sect1>Release notes for version~2.02---3/97
2 <label id="release-2-02">
3 <p>
4
5 Release~2.02 is the first release of Glasgow Haskell for Haskell~1.4.
6
7 The announcement for this release is distributed as @ANNOUNCE-2.02@
8 in the top-level directory.  It contains very important caveats about
9 2.02, which we do not repeat here!
10
11 Information about ``what's ported to which machine'' is in the
12 Installation Guide.  Since 2.01, we've added support for Win32
13 (Windows NT and Windows 95).
14
15 %************************************************************************
16 %*                                                                      *
17 <sect1>New configuration things in 2.02
18 <label id="2-02-config">
19 <p>
20 %*                                                                      *
21 %************************************************************************
22
23 %************************************************************************
24 %*                                                                      *
25 <sect1>User-visible changes in 2.02, including incompatibilities
26 <label id="2-02-user-visible">
27 <p>
28 %*                                                                      *
29 %************************************************************************
30
31 GHC~2.02 is a compiler for Haskell~1.4 and, as such, introduces a
32 bunch of user-visible changes.  The GHC user's guide has a section to
33 help you upgrade your programs to Haskell~1.4 from 1.2; all
34 user-visible changes are described there (and not repeated here).
35
36 %************************************************************************
37 %*                                                                      *
38 <sect1>New or changed GHC command-line options
39 <label id="2-02-options">
40 <p>
41 %*                                                                      *
42 %************************************************************************
43
44 <itemize>
45 <item> GHC now warns of possibly-incomplete patterns in case expressions
46 and function bindings.  You can suppress these warnings with @-fno-warn-incomplete-patterns@.
47
48 GHC also warns of completely overlapped patterns.  You can't switch this off.
49
50 <item> GHC can warn of shadowed names, though it does not do so by default.  
51 Just occasionally this shows up 
52 an otherwise hard-to-find bug.  To warn of shadowed names use @-fwarn-name-shadowing@
53
54 <item> You can now generate `make' dependencies via the compiler
55 driver, use the option @-M@ together with the list source files to compute
56 the dependencies for. By default, the dependencies will be appended to
57 the file @Makefile@ in the current directory.
58
59 <item> For hackers, the flag @-dshow-rn-trace@ shows what the renamer is up to.
60 Sit back and marvel.
61
62 </itemize>
63
64
65 %************************************************************************
66 %*                                                                      *
67 <sect1>New in the compiler proper
68 <label id="2-02-new-in-compiler">
69 <p>
70 %*                                                                      *
71 %************************************************************************
72
73 <itemize>
74 <item>
75 Completely new ``make-world'' system, properly documented (at last) in the
76 installation guide.  No Jmakefiles; but you *need* Gnu make
77 (gmake). The more recent the better (v 3.70+).
78
79 <item>
80 The ``renamer''---the part of the compiler that implements
81 the Haskell module system---has been completely rewritten, again.
82
83 The format of interface files has changed significantly.  Interface files
84 generated by 2.01 will not work with 2.02.
85
86 <item>
87 Even less special pleading for the Prelude than in 2.01.  If you wanted
88 to write your own Prelude and drop it in, you would have
89 a really good chance now.
90 </itemize>
91
92
93 %************************************************************************
94 %*                                                                      *
95 <sect1>In the libraries
96 <label id="2-02-new-in-libraries">
97 <p>
98 %*                                                                      *
99 %************************************************************************
100
101 The libraries have been completely reorganised.  There's a description
102 in Section <ref name="System Libraries" id="syslibs">.
103
104
105 %************************************************************************
106 %*                                                                      *
107 <sect1>In ``hslibs'' libraries
108 <label id="2-02-new-in-syslibs">
109 <p>
110 %*                                                                      *
111 %************************************************************************
112
113
114 %************************************************************************
115 %*                                                                      *
116 <sect1>In the runtime system
117 <label id="2-02-new-in-rts">
118 <p>
119 %*                                                                      *
120 %************************************************************************
121
122 <itemize>
123 <item> @ForeignObjs@ are properly deallocated when execution halts, as well
124 as when the garbage collector spots the @ForeignObj@ as being unreferenced.
125 This is important if you are using a @ForeignObj@ to refer to
126 a @COM@ object or other remote resource. You want that resource to be relased
127 when the program terminates.
128
129 <item> Files handles in the IO prelude are implemented using
130 @ForeignObjs@, and closed when the file handle is unreferenced.  This
131 means that if you open zillions of files then just letting go of the
132 file handle is enough to close it. 
133 </itemize>
134
135 %************************************************************************
136 %*                                                                      *
137 <sect1>Other new stuff
138 <label id="2-02-new-elsewhere">
139 <p>
140 %*                                                                      *
141 %************************************************************************
142
143 2.02 is released together with Green Card, a foreign-language
144 interface generator for Haskell. More details elsewhere...
145
146
147 %************************************************************************
148 %*                                                                      *
149 <sect1>Known troublespots
150 <label id="2-02-troublespots">
151 <p>
152 %*                                                                      *
153 %************************************************************************
154
155 The 2.02 compiler has the following known deficiencies:
156
157 <descrip>
158 <tag>native code generator, x86:</tag>
159
160 The native code generator for x86 platforms is by default switched
161 off, as the code the compiler produces with it enabled was discovered
162 just before releaseing to be wonky. Rather than delay the release
163 further, GHC on x86 platforms rely on @GCC@ as their
164 backend for now. Hopefully fixed soon.
165
166 <tag>Simplifier looping:</tag>
167
168 The simplifier(Glasgow-speak for optimiser) has been observed to get
169 into a loop in one or two cases. If you should observe this, please
170 report it as a bug - the work around is to turn off optimisation.
171
172 <tag>Undefined @*_vap_info@ symbols:</tag>
173
174 If the linker complains about some undefined @*_vap_info@ symbols when
175 linking 2.02 compiled programs (very unlikely) - fix this by compiling
176 the module where the references are coming from with
177 @-fno-lambda-lifting@.
178
179 </descrip>