1 Release~0.22 is the fourth public release of Glasgow Haskell.
2 It incorporates our new work for the first half of 1994.
4 The announcement for this release is distributed as \tr{ANNOUNCE-0.22}
5 in the top-level directory.
7 %************************************************************************
9 \subsection[0-22-ports]{What machines GHC~0.22 runs on}
11 %************************************************************************
13 We use Sun4s running SunOS~4.1.3 and DEC~Alphas running OSF/1~V2.0, so
14 those are the ``fully-supported'' platforms, unsurprisingly. For
15 Sun4s, we have a native-code generator, which makes for somewhat
16 quicker compilations. (We actually produce better code by compiling
17 intermediate C with GCC.)
19 The GHC hierarchy of Porting Goodness: (a)~Best is a native-code
20 generator [only for Sun4s, now]; (b)~next best is a ``registerised''
21 port; (c)~the bare minimum is an ``unregisterised'' port.
22 ``Unregisterised'' Haskell programs are much bigger and slower,
23 but the port is much easier to get going.
25 Here's everything that's known about GHC ports, as of 0.22:
27 %-------------------------------------------------------------------
28 \item[Sun4 running SunOS~4.1.3:]
29 Fully supported, including native-code generator.
31 %-------------------------------------------------------------------
32 \item[DEC Alpha running OSF/1 V2.0:]
33 Fully supported, but no native-code generator (none planned).
35 %-------------------------------------------------------------------
36 \item[Sun3 running SunOS~4.1.3:]
37 GHC~0.22 should work, registerised. (0.21 did work.)
39 %-------------------------------------------------------------------
40 \item[Sun4 running Solaris 2.x:]
41 We expect to finish a ``registerised'' port ourselves, in the
42 foreseeable future. Feel free to ask about it, if interested. Not
43 sure about native-code...
45 %-------------------------------------------------------------------
46 \item[HP-PA box running HP/UX 9.x:]
47 An unregisterised port of 0.21 (last ``internal'' release before 0.22)
48 seems to work, except that floating-point is definitely busted.
49 0.22~should be the same.
51 %-------------------------------------------------------------------
52 \item[Silicon Graphics box running IRIX 5.x:]
53 An unregisterised port of 0.21
54 seemed to work. 0.22~should be the same.
56 %-------------------------------------------------------------------
57 \item[DECstation (MIPS-based):]
58 An unregisterised port back around the time of 0.17 seemed to work;
59 0.22~should be the same, modulo a little bit-rot.
61 %-------------------------------------------------------------------
62 \item[x86 PCs running Linux/NetBSD/FreeBSD:]
63 This really needs a native-code generator to be viable. No
66 %-------------------------------------------------------------------
67 \item[GRIP multiprocessor:]
68 GRIP is a 68020-based multiprocessor for running parallel Haskell
69 programs; too bad we have the only machine! We run GHC~0.16 on it,
70 with no plans to upgrade.
72 We are working on other parallel stuff. Stay tuned.
74 %-------------------------------------------------------------------
75 \item[NeXT box running whatever NeXTs run:]
76 Carsten Schultz succeeded with a ``registerised'' port of GHC~0.19.
77 There's probably a little bit-rot since then, but otherwise it should
80 %-------------------------------------------------------------------
81 \item[Macintosh, using MPW:]
82 As mind-blowing at it may seem, David Wright in Tasmania has actually
83 gotten GHC to run on a Macintosh. Ditto James Thomson here at Glasgow.
84 You may be able to get Thomson's from here. (Not sure that it will
85 excite you to death, but...)
88 %************************************************************************
90 \subsection[0-22-user-visible]{User-visible changes in 0.22, including incompatibilities}
92 %************************************************************************
94 You'll need to recompile everything if you're switching from a
95 previous version of GHC. (If you don't, you'll get ``consistency
98 Lazy pattern-matching (e.g., \tr{let (x,y) = ... in ...}) no longer
99 carries with it the threat of a space leak. (It used to be that, as
100 long as {\em either} of \tr{x} or \tr{y} was ``live,'' the storage
101 manager would hang onto {\em both} chunks of graph.) No longer.
103 We've done a complete overhaul of the state-transformer stuff which
104 underlies our array, I/O, and C-calling support. The ``state
105 interface document,'' distributed in \tr{ghc/docs/state-interface.dvi}
106 defines what we have done. You may wish to check our abstracts
107 (\tr{ghc/docs/abstracts/}) to find papers about this stuff. If you've
108 written code that grovels around in GHC innards (e.g., uses
109 ``primitive operations'' directly), it will probably need updating.
111 We do {\em not} support Haskell~1.3 monadic I/O (any draft version),
112 but we will once the dust settles. We still support the
113 \tr{PreludeGlaIO} interface that we have had for some time.
115 You can now build GHC to support ``threaded'' execution. (Configure
116 \tr{--with-threads=yes}, then use GHC with a \tr{-threads} option.)
117 Using the \tr{_seq_} and \tr{_par_} constructs,
119 GHC does a better job of not stealing from the user's name space (for
120 its own extensions, etc.). For example, the ``set cost-centre''
121 keyword is now \tr{_scc_}, rather than \tr{scc} (though the latter
122 will continue to be accepted for a while). With the
123 \tr{-fglasgow-exts} flag on, names may begin with an underscore
126 We have friendly interaction between ``Haskell land'' and ``C land''
127 via (a)~{\em stable pointers} (pass Haskell pointers to C and have the
128 garbage-collector not forget about them); and (b)~{\em malloc
129 pointers} (return C pointers to Haskell and tell Haskell ``throw this
130 away when you're finished with it''). See the User's Guide for more
133 %************************************************************************
135 \subsection[0-22-support]{New in support tools (e.g., profiling)}
137 %************************************************************************
139 The profiling system of GHC has been improved in version~0.22 in the
142 \item[Now uses the ``hybrid scheme'':] (Rather than pure ``lexical
143 scoping'') What this means for you: ``CAF'' cost-centres will no
144 longer be blamed for gigantic chunks of the time in your program.
146 \item[Uses the generational garbage-collector:] (At least when doing
147 time profiling) It used to use a two-space copying GC; it still does
148 when space profiling. You should be able to profile larger programs.
151 %************************************************************************
153 \subsection[0-22-new-in-compiler]{New in the compiler proper}
155 %************************************************************************
157 The ``simplifier''---the program-transformation engine in the middle
158 of the compiler---has settled down (at least until Simon has another
159 Brain Wave). We've made ``per-simplification'' flags, so that each
160 run of the simplifier can be controlled separately---this allows very
161 precise control. (But makes it pretty hard to exercise any control
162 from the command-line.) More in the docs.
164 Related to simplifier stuff was a revision of the ``unfoldery''
165 machinery. We try very hard to find and exploit unfolding (or
166 inlining), including across module boundaries.
168 %************************************************************************
170 \subsection[0-22-new-in-libraries]{In the prelude and runtime support}
172 %************************************************************************
174 We've introduced a ``GHC system library,'' similar to the ``HBC system
175 library'' which we have supported for some time. Just say
176 \tr{-syslib ghc} and the GHC library stuff is at your fingertips.
177 See the User's Guide for exactly what's on offer (not a lot right now,
178 but more will show up).
180 The @PackedString@ module that comes with the system is even beefier
181 than before; see the User's Guide. (This module really should be
184 %************************************************************************
186 \subsection[0-22-new-elsewhere]{Other new stuff}
188 %************************************************************************
190 We have two new mailing lists about Glasgow Haskell.
192 \item[glasgow-haskell-users:]
193 This list is for GHC users to chat among themselves. Subscribe by
194 sending mail to \tr{glasgow-haskell-users-request@dcs.glasgow.ac.uk}.
195 Messages for the list go to \tr{glasgow-haskell-users}.
197 \item[glasgow-haskell-bugs:]
198 This used to be an address for some lonely person who received bug
199 reports. It is now a mailing list for the sort of people who discuss,
200 well, bug reports when they go to a party.
202 Subscribe via \tr{glasgow-haskell-bugs-request@dcs.glasgow.ac.uk};
203 send bug reports and rumination thereupon go to
204 \tr{glasgow-haskell-bugs}.