[project @ 1996-07-19 18:36:04 by partain]
[ghc-hetmet.git] / ghc / docs / release_notes / 0-19-notes.lit
1 Release~0.19 was the third public release of this compilation system.
2 It incorporates our new work for the last half of 1993.
3
4 The announcement for this release is distributed as \tr{ANNOUNCE-0.19}
5 in the top-level directory.
6
7 %************************************************************************
8 %*                                                                      *
9 \subsection[0-19-user-visible]{User-visible changes in 0.19, including incompatibilities}
10 %*                                                                      *
11 %************************************************************************
12
13 You'll need to recompile everything if you're switching from a
14 previous version of GHC.  (If you don't, you'll get ``consistency
15 errors''.)
16
17 Default declarations: in.
18
19 Derived instances of \tr{Ix} and \tr{readsPrec} (\tr{Text} class): in.
20 (Random Prelude instances of weird things: in.)  You can avoid the
21 \tr{readsPrec} methods by using the \tr{-fomit-derived-read} option.
22
23 Should be {\em faster}, for two reasons: (1)~A native-code generator
24 for the SPARC architecture (avoids C compilation time); (2)~an
25 array-based [vs naive list-based...] substitution mechanism in the
26 typechecker.  Using \tr{-O2} or \tr{-fvia-C} avoids the native-code
27 generator.
28
29 (Shouldn't be too much faster, because we spent a lot of the winnings
30 :-()
31
32 \tr{MkInt} and friends {\em renamed}: \tr{MkInt}, \tr{MkChar},
33 \tr{MkFloat}, \tr{MkDouble}, and \tr{MkInteger} are now \tr{I#},
34 \tr{C#}, \tr{F#}, \tr{D#}, and \tr{J#}, respectively.
35 We won't change them again, we promise.
36
37 \tr{-i}/\tr{-I} flags changed: You used to specify directories to
38 search for interface files with \tr{-I <dir>}; now you do it with
39 \tr{-i<dir>} [{\em no space after the \tr{-i}}] (same as HBC).
40 \tr{-I} is reserved for when doing \tr{-cpp} and for the C compiler,
41 when it is run.
42
43 Renaming, feature horribilis that it is, is more-or-less fully
44 implemented.  The User's Guide lists one or two exceptions.
45
46 Specialised versions of overloaded functions: these are created
47 automagically with \tr{-O}, and also when you ask for them with
48 \tr{SPECIALIZE} pragmas.  See the User's Guide for how to do this
49 (same as HBC).  (We don't have specialised instance declarations yet.)
50
51 GHC tries hard to do inlining (or ``unfolding'') across module
52 boundaries; just look at \tr{-O}-produced interface files.  You can
53 enliven this process with \tr{INLINE} pragmas.
54
55 The \tr{__GLASGOW_HASKELL__} CPP directive is only set when
56 pre-processing Haskell source (and not when pre-processing generated
57 C).
58
59 Revised scheme for using system-provided libraries (e.g., the HBC
60 library).  Just use a \tr{-syslib <name>} option when compiling and
61 linking.  See the User's Guide for details.
62
63 %************************************************************************
64 %*                                                                      *
65 \subsection[0-19-new-docs]{New documentation}
66 %*                                                                      *
67 %************************************************************************
68
69 See \tr{ghc/docs/README} for a full list of documentation.
70
71 The updated User's Guide has new sections including: (a)~advice for
72 creating smaller and faster programs more quickly, and (b)~about the
73 HBC library [stolen documentation].
74
75 We've dropped papers from the distribution (they're big, and you can
76 get them easily anyway); instead, we provide abstracts of all
77 documents about all relevant work at Glasgow; see
78 \tr{ghc/docs/abstracts}.
79
80 New: ``A Simple Country Boy's Guide to Monadic-Style Programming'' (Will
81 Partain).  In \tr{ghc/docs/simple-monad.lhs}.
82
83 %************************************************************************
84 %*                                                                      *
85 \subsection[0-19-new-in-compiler]{New in the compiler proper}
86 %*                                                                      *
87 %************************************************************************
88
89 Strictness analyser: produces/handles ``nested'' strictness -- e.g.,
90 \tr{U(SLL)} means ``this single-constructor argument is strict, and it
91 is also strict in its first component.''  There's also ``absence
92 analysis'' in there: \tr{U(ASA)} means ``strict in the second
93 component, and the first/third are not used at all.''
94
95 New simplifier: the program-transformation engine in the middle of the
96 compiler.  The ``old simplifier,'' primarily the work of Andr\'e
97 Santos, has retired to an Old Simplifier's Home on the coast of
98 Brazil, where it is collecting a well-deserved monadic pension.
99
100 %************************************************************************
101 %*                                                                      *
102 \subsection[0-19-new-in-libraries]{In the prelude and runtime support}
103 %*                                                                      *
104 %************************************************************************
105
106 A couple of new functions in the @PackedString@ module that comes with
107 the system.  Mentioned in the User's Guide.
108
109 The HBC library has been upgraded to match the latest HBC release
110 (0.999.5).  We now support the \tr{Native} and \tr{NameSupply}
111 modules, which we didn't before.
112
113 Alastair Reid's implementation of ``stable pointers,'' which he uses
114 to do callbacks with the X Window System (yow!), is in.  I (WDP) don't
115 know about documentation.... send mail if you need to know.
116
117 %************************************************************************
118 %*                                                                      *
119 \subsection[0-19-new-ports]{In the porting department}
120 %*                                                                      *
121 %************************************************************************
122
123 We use Sun4s running SunOS~4.1.3, so those are the best-supported
124 machines.  For these, we have a native-code generator (the best); next
125 best is a ``registerised'' port; the bare minimum is an
126 ``unregisterised'' port.
127
128 The 0.19 infrastructure for ``stealing'' registers for a registerised port
129 (using a GCC extension) is much more robust---take note, brave porters.
130
131 Here's everying that's known about the porting world:
132 \begin{description}
133 %-------------------------------------------------------------------
134 \item[Sun3 running SunOS~4.1.3:]
135 A registerised port is done; could be made available.
136
137 %-------------------------------------------------------------------
138 \item[GRIP multiprocessor:]
139 68020-based multiprocessor for running parallel Haskell programs.
140 A registerised port is done; too bad we have the only machine!
141 If you have something parallel you {\em really} wanted to run on it,
142 please get in touch with us.
143
144 %-------------------------------------------------------------------
145 \item[HP-PA box running HP/UX:]
146 An unregisterised port of 0.17 (0.16+portability fixes) seems to
147 work, except that floating-point is definitely busted.  0.19~should be
148 no worse.
149
150 %-------------------------------------------------------------------
151 \item[DECstation (MIPS-based):]
152 An unregisterised port of 0.17 works; 0.19~should be the same.
153
154 %-------------------------------------------------------------------
155 \item[DEC Alpha running OSF/1:]
156 We've done an unregisterised port (unreleased), and a registerised
157 port is not far off.
158
159 %-------------------------------------------------------------------
160 \item[Sun running Solaris 2.x:]
161 We've started on this ourselves and foresee no obstacle to a
162 ``registerised'' port.  Not sure about native-code...
163
164 %-------------------------------------------------------------------
165 \item[x86 PCs running Linux:]
166 This really needs a native-code generator to be viable.  We hope the
167 elves will give us one for Christmas!
168
169 %-------------------------------------------------------------------
170 \item[Macintosh, using MPW:]
171 As mind-blowing at it may seem, David Wright in Tasmania has actually
172 gotten GHC to run on a Macintosh.  I believe it's still in the ``you
173 can do it, but you don't want to'' stage.
174 \end{description}
175
176 %************************************************************************
177 %*                                                                      *
178 \subsection[0-19-new-elsewhere]{New elsewhere}
179 %*                                                                      *
180 %************************************************************************
181
182 In the ``literate programming'' stuff that happens to come with GHC: a
183 few bug fixes, plus a significant contribution from Chris Toshok
184 (\tr{toshok@cs.uidaho.edu}) of ``lit2html'' stuff; i.e., to convert
185 your literate programs into HTML, the Hypertext Markup Language used
186 on the World-Wide Web.  I (WDP) am not sure it's completely finished,
187 or exactly what you invoke to do what, but it seems Way Cool.