The Glasgow Haskell Compiler -- version 2.01

We are pleased to announce the first release of the Glasgow Haskell
Compiler (GHC, version 2.01) for *Haskell 1.3*.  Sources and binaries
are freely available by anonymous FTP and on the World-Wide Web;
details below.

Haskell is "the" standard lazy functional programming language; the
current language version is 1.3, agreed in May, 1996.  The Haskell
Report is online at

GHC 2.01 is a test-quality release, worth trying if you are a gung-ho
Haskell user or if you are keen to try the new Haskell 1.3 features.
We advise *AGAINST* relying on this compiler (2.01) in any way.  We
are releasing our current Haskell 1.2 compiler (GHC 0.29) at the same
time; it should be pretty solid.

If you want to hack on GHC itself, then 2.01 is for you.  The release
notes comment further on this point.

What happens next?  I'm on sabbatical for a year, and Will Partain
(the one who really makes GHC go) is leaving at the end of July 96 for
a Real Job.  So you shouldn't expect rapid progress on 2.01 over the
next 6-12 months.  

The Glasgow Haskell project seeks to bring the power and elegance of
functional programming to bear on real-world problems.  To that end,
GHC lets you call C (including cross-system garbage collection),
provides good profiling tools, and concurrency and parallelism.  Our
goal is to make it the "tool of choice for real-world applications".

GHC 2.01 is substantially changed from 0.26 (July 1995), as the new
version number suggests.  (The 1.xx numbers are reserved for further
spinoffs from the Haskell-1.2 compiler.)  Changes worth noting

  * GHC is now a Haskell 1.3 compiler (only).  Virtually all Haskell
    1.2 modules need changing to go through GHC 2.01; the GHC
    documentation includes a ``crib sheet'' of conversion advice.

  * The Haskell compiler proper (ghc/compiler/ in the sources) has
    been substantially rewritten and is, of course, Much, Much,
    Better.  The typechecker and the "renamer" (module-system support)
    are new.

  * Sadly, GHC 2.01 is currently slower than 0.26.  It has taken
    all our cycles to get it correct.  We fondly believe that the
    architectural changes we have made will end up making 2.0x
    *faster* than 0.2x, but we have yet to substantiate this belief;
    sorry.  Still, 2.01 (built with 0.29) is quite usable.

  * GHC 2.01's optimisation (-O) is not nearly as good as 0.2x, mostly
    because we haven't taught it about cross-module information
    (arities, inlinings, etc.).  For this reason, a
    2.01-built-with-2.01 (bootstrapped) is no fun to use (too slow),
    and, sadly, that is where we would normally get .hc (intermediate
    C; used for porting) files from... (hence: none provided).

  * GHC 2.01 is much smarter than 0.26 about when to recompile.  It
    will abort a compilation that "make" thought was necessary at a
    very early stage, if none of the imported types/classes/functions
    *that are actually used* have changed.  This "recompilation
    checker" uses a completely different interface-file format than
    0.26.  (Interface files are a matter for the compilation system in
    Haskell 1.3, not part of the language.)

  * The 2.01 libraries are not "split" (yet), meaning you will end up
    with much larger binaries...

  * The not-mandated-by-the-language system libraries are now separate
    from GHC (though usually distributed with it).  We hope they can
    take on a "life of their own", independent of GHC.

  * All the same cool extensions (e.g., unboxed values), system
    libraries (e.g., Posix), profiling, Concurrent Haskell, Parallel

  * New ports: Linux ELF (same as distributed as GHC 0.28).

Please see the release notes for a complete discussion of What's New.

To run this release, you need a machine with 16+MB memory (more if
building from sources), GNU C (`gcc'), and `perl'.  We have seen GHC
2.01 work on these platforms: alpha-dec-osf2, hppa1.1-hp-hpux9,
sparc-sun-{sunos4,solaris2}, mips-sgi-irix5, and
i386-unknown-{linux,solaris2,freebsd}.  Similar platforms should work
with minimal hacking effort.  The installer's guide give a full
what-ports-work report.

Binaries are distributed in `bundles', e.g. a "profiling bundle" or a
"concurrency bundle" for your platform.  Just grab the ones you need.

Once you have the distribution, please follow the pointers in
ghc/README to find all of the documentation about this release.  NB:
preserve modification times when un-tarring the files (no `m' option
for tar, please)!

We run mailing lists for GHC users and bug reports; to subscribe, send
mail to [EMAIL PROTECTED]; the msg body should be:

    subscribe glasgow-haskell-<which> Your Name <[EMAIL PROTECTED]>

Please send bug reports about GHC to [EMAIL PROTECTED]

Simon Peyton Jones

Dated: July '96

Relevant URLs on the World-Wide Web:

GHC home page   
Glasgow FP group page
comp.lang.functional FAQ

How to get GHC 2.01:

This release is available by anonymous FTP from the main Haskell
archive sites, in the directory pub/haskell/glasgow:   (  ( (

The Glasgow site is mirrored by (, in

These are the available files (.gz files are gzipped) -- some are `on
demand', ask if you don't see them:

ghc-2.01-src.tar.gz     The source distribution; about 3MB.

ghc-2.01.ANNOUNCE       This file.

ghc-2.01.{README,RELEASE-NOTES} From the distribution; for those who
                        want to peek before FTPing...

ghc-2.01-ps-docs.tar.gz Main GHC documents in PostScript format; in
                        case your TeX setup doesn't agree with our
                        DVI files...

ghc-2.01-<platform>.tar.gz Basic binary distribution for a particular
                        <platform>.  Unpack and go: you can compile
                        and run Haskell programs with nothing but one
                        of these files.  NB: does *not* include
                        profiling (see below).

        <platform> ==>  alpha-dec-osf2


        <platform> ==>  as above
        <bundle>   ==>  prof (profiling)
                        conc (concurrent Haskell)
                        par  (parallel)
                        gran (GranSim parallel simulator)
                        ticky (`ticky-ticky' counts -- for implementors)
                        prof-conc (profiling for "conc[urrent]")
                        prof-ticky (ticky for "conc[urrent]")

ghc-2.01-hc-files.tar.gz Basic set of intermediate C (.hc) files for the
                         compiler proper, the prelude, and `Hello,
                         world'.  Used for bootstrapping the system.
                         About 4MB.

ghc-2.01-<bundle>-hc-files.tar.gz Further sets of .hc files, for
                        building other "bundles", e.g., profiling.

ghc-2.01-hi-files-<blah>.tar.gz Sometimes it's more convenient to
                        use a different set of interface files than
                        the ones in *-src.tar.gz.  (The installation
                        guide will advise you of this.)

Reply via email to