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