The main README file is attached. These are the files available on
ftp.dcs.glasgow.ac.uk, in pub/haskell/glasgow/working:
ghc-0.21-src.tar.gz main sources
ghc-0.21-src.tar.gz.a? same, split for easier ftp'ing
ghc-0.21-hc-files.tar.gz intermediate C (.hc) files
ghc-0.21-hc-files.tar.gz.a? ditto, split
ghc-0.21-bin-alpha.tar.gz ready-to-run, DEC Alphas
ghc-0.21-bin-alpha.tar.gz.a? ditto, split
ghc-0.21-bin-sun4.tar.gz ready-to-run, SunOS4 SPARCs
ghc-0.21-bin-sun4.tar.gz.a? ditto, split
Will
=== ghc-0.21/ghc/README ==============================================
This is version 0.21 of the Glorious Glasgow Haskell compilation
system (GHC).
Version 0.21 is an "internal" release, intended for enthusiastic GHC
hackers. We *hope* for a new "public" release in early July, and 0.21
gives them a chance to try things out before then. So, they can,
um..., send us stuff to put in the release...
Version 0.19 was the last public release. It has held up pretty well
and should be available wherever you got 0.21 from. I commend 0.19 to
all sane people.
Changes since 0.20 (also an "internal" release):
* There are certainly bugs in 0.21, though it does compile and run
most programs, including itself.
* Profiling is essentially unchanged since 0.19.
* Documentation is untouched since 0.19.
* 0.21-produced objects/interfaces are not compatible with earlier
versions; you'll need to re-compile; please do not mix-and-match...
* GHC-compiled programs will no longer space-leak because of a naive
implementation of lazy "tuple" matching. (You may recall that HBC
has a -fpbu option to avoid this problem.) No special flag is
required to get the desired behaviour from GHC.
A relevant reference is: PL Wadler, "Fixing a space leak with a
garbage collector", Software - Practice and Experience, 17,9, 1987,
pages 595--608.
* GHC works on Alphas -- including "registerised", but no native-code
generator. We will distribute Alpha binaries once we've built them.
NOTE: msub.c won't compile w/ gcc 2.5.8 on Alphas; just compile it
by hand w/ cc.
NOTE: The OSF1 linker does emit uninformative messages of the
form... "Linking some objects which contain exception information
sections and some which do not. [...etc...]" Your program should
still work.
* Faster native-code generator for SPARC boxes. (Not sure exactly
*how much* faster...)
* Greater reliance on "configure" script to set up for host/target
platforms. The info it figures out is stored in
ghc/includes/platform.h (among other places) and then consulted
throughout the system.
* (Cross-module) Unfolding machinery revised. Normally, the compiler
(silently) throws away cross-module unfoldings if it cannot make
sense of them -- e.g., if an unfolding mentions a name that is not
visible. If you would prefer that these naming "errors" *were*
reported (so you can get "better" results from your pragmas), then
throw in a "-fshow-pragma-name-errs" option.
* If you would prefer that a module export only those instances that
it defines itself, i.e., that it *not export* any instances that it
learned about from other modules, you can toss in a
"-fomit-reexported-instances" option.
This option *totally violates* the Haskell language definition (!),
but it is fabulously wonderful in the presence of a very-recursive
module structure (such as that of the compiler itself).
* Several of the compiler's "utility" module are available in a system
library. The module included are "Bag", FiniteMap", "ListSetOps",
"Maybes", "Set", and "Util". Things may change here...
You use the library by giving a "-syslib ghc" command-line option.
Note: not tested (except in the compiler).
* [internal] Per-simplification flags: Each run of the Core-to-Core
"simplifier" now gets its very own set of "SimplifierSwitches".
This increases the likelihood that you can make it do exactly what
you want.
* [internal] The compiler is now built with "splittable unique
supplies" (not standard Hsakell, but both GHC and HBC supply them --
see the HBC "NameSupply" library module). Buys some Very Useful
Laziness.
* [internal] The compiler's "environments" (a functional-programming
word for "lookup tables") and "sets" now use balanced binary trees
-- see ghc/compiler/utils/FiniteMap.lhs. ("map" is another f-p word
for "lookup table"...)
* New stuff roughed in... Alastair Reid's stuff for "stable pointers"
and "malloc pointers"... Mattson on "threads"... Andy Gill and
"foldr/build"... You'll no doubt hear more about all of this...
* Another 2--3MB or so of internal changes (as measured by diff -c2)...
Configuring 0.21 is a little different than 0.19:
% cd <very-top>
% ./configure --with-boot=c
% ./STARTUP-ghc std
% cd ghc; make all # plain "make" doesn't work on the Alphas
If you are going to proceed by hacking on the compiler.... Once you
have the booted-from-.hc-files version going and *installed* (and
invokable as "ghc-0.21", say):
% cd <very-top>
% ./configure --with-boot=ghc-0.21 --with-hsc-built-via-C=no
% ./STARTUP-ghc std
% cd ghc; make all
The post-0.21 thing you then create will be compiled with "ghc-0.21"
and (if applicable) will not compile via C.
See the "configure" script if you want to know what other options are
-- there is no other documentation at this time!
Please ask [EMAIL PROTECTED] if you are about to
try something w/ 0.21 and are unsure....
Jim Mattson & Will Partain, Slaves of AQUA
{mattson,partain}@dcs.glasgow.ac.uk