Commit 39592c91 authored by sof's avatar sof

[project @ 1997-03-24 04:39:03 by sof]

Updated for 2.02
parent 45b5c5e8
The Glasgow Haskell Compiler -- version 2.02
We are pleased to announce the first release of the Glasgow Haskell
Compiler (GHC, version 2.02) for *Haskell 1.4*. 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.02 is a beta-quality release - some highlights:
* It is reliable.
It has been extensively tested against a large suite of Haskell 1.2
programs, but not so extensively tested against Haskell 1.4 programs
because we don't have a comprehensive set (Donations of Haskell 1.4
programs to our test suite are most welcome).
* It should generate good code.
All the optimisations that GHC 0.29 used to do are back in, with
the exception of specialisation. It ought to be the case that
GHC 2.02 outperforms GHC 0.29, because it has a much better
handle on cross-module inlining, but there's a good chance that
there are performance "holes" lurking. We have yet to make
a systematic comparison. (Please send us programs where 2.02
does noticeably worse than 0.29.)
* It is more expensive than it should be.
GHC 2.02 has received even less attention to its own performance.
At present it eats more space and time than GHC 0.29, especially
for very small programs. We're working on this.
* A couple of Haskell 1.4 features are incompletely supported,
notably polymorphic strictness annotations, and Unicode.
If you want to use Haskell 1.4, this is a good moment to switch. If
you don't need the Haskell 1.4 extensions, then stay with GHC 0.29.
If you want to hack on GHC itself, then 2.02 is definitely for you.
The release notes comment further on this point.
GHC 2.02 is substantially changed from 2.01. Changes worth noting
* The whole front end, which deals with the module system, has
been rewritten. The interface file format has changed.
* GHC 2.02 comes complete with Green Card, a C foreign language
interface for GHC. Green card is a pre-processor that
scans Haskell source files for Green Card directives, which
it expands into tons of "ccall" boilerplate that marshalls
your arguments to and from C.
* GHC 2.02 is available for Win32 platforms. From now on, Win32
(Windows NT and Windows 95) will be a fully supported platform
for GHC.
* GHC 2.02 supports full cross module inlining. Unlike 0.29 and
its predecessors, inlining can happen even if the inlined body
mentions a function or type that is not itself exported. This is
one place Haskell 1.4's new module system really pays off.
* Like 2.01, GHC 2.02 aborts a compilation if it decides that
nothing that the module imports *and acually uses* has changed.
This decision is now taken by the compiler itself, rather than
by a Perl script (as in 2.01) which sometimes got it wrong.
* The ghc/lib libraries are much more systematically organised.
* There's a completely new "make" system. This will mainly affect people
who want the source distribution, who will hopefully find it much, much,
easier than grappling with the old Jmakefiles. Even for binary
installation, the procedure is a little simpler, though.
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,cygwin32}. Similar platforms
should work with minimal hacking effort. The installer's guide give a
complete run-down of what-ports-work.
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 the
README file 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; the msg body should be:
subscribe glasgow-haskell-<which> Your Name <>
Please send bug reports about GHC to
Simon Peyton Jones
Dated: March 1997
Relevant URLs on the World-Wide Web:
GHC home page
Glasgow FP group page
comp.lang.functional FAQ
How to get GHC 2.02:
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:
README.html A WWW `front-end' to the contents of the glasgow
ghc-2.02-src.tar.gz The source distribution; about 3MB.
ghc-2.02.ANNOUNCE This file.
ghc-2.02.{README,RELEASE-NOTES} From the distribution; for those who
want to peek before FTPing...
ghc-2.02-ps-docs.tar.gz Main GHC documents in PostScript format; in
case your TeX setup doesn't agree with our
DVI files...
ghc-2.02-<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.02-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.02-<bundle>-hc-files.tar.gz Further sets of .hc files, for
building other "bundles", e.g., profiling.
ghc-2.02-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.)
This is version 2.01 of the Glorious Glasgow Haskell compilation
system (GHC). GHC 2.01 is a compiler for Haskell 1.3.
This is version 2.02 of the Glorious Glasgow Haskell compilation
system (GHC). GHC 2.02 is a compiler for Haskell 1.4.
2.01 is a full GHC release; however, as the first release of the 1.3
compiler, it is "test" quality; it very well may have serious bugs.
The top-level file "ANNOUNCE-2.01" says more.
2.02 is a full GHC release; however, as the first release of the 1.4
compiler, it is "beta" quality; it is reliable, but it may very well
have some bugs. The top-level file "ANNOUNCE-2.02" says more.
Haskell is "the" standard lazy functional programming language.
Haskell 1.3 is the current version of the language, released in
Haskell 1.4 is the current version of the language, released in
May. 1996. The language definition is on the Web at
GHC documentation of interest:
* docs/install_guide/installing.{dvi,info,html}: How to configure,
build, and install the system.
* docs/installing.{dvi,info,html}: How to configure, build, and
install the system.
The document, as with many others, is in TeX-produced DVI format
(.dvi suffix), or GNU Info format (.info); the latter is close to
plain ASCII, if that's what you want.
* docs/users_guide/user.{dvi,info,html}: How to use GHC; e.g., what
* ghc/docs/users_guide/user.{dvi,info,html}: How to use GHC; e.g., what
options are available, how to cope with common problems, how to use
the profiling facilities, etc.
* docs/release_notes/release{dvi,info,html}: Release notes for this
release (and all previous releases).
* ghc/docs/users_guide/release.{dvi,info,html}: Release notes for this
release (and earlier releases).
* docs/README: About the other documentation in this release.
* ghc/docs/README: About the other documentation in this release.
We welcome your comments and suggestions about this software! Please
do not suffer or grumble in silence. The "bug reports" section of the
......@@ -37,12 +37,11 @@ Current AQUA team (all
Sigbjorn Finne (sof) [PhD student]
Hans Wolfgang Loidl (hwloidl) [PhD student]
Simon Marlow (simonm) [PhD student]
Will Partain (partain) [hired hand, GRASP/AQUA]
Simon Marlow (simonm) [hired hand]
Thomas Nordin (nordin) [; Green Card Hero]
Simon Peyton Jones (simonpj) [our Fearless Leader]
Patrick Sansom (sansom) [hired hand, Bidirectional Analyses]
Phil Trinder (trinder) [hired hand, Parade]
David N Turner (dnt) [hired hand, Linear Types]
Past contributors and/or continuing advisors:
......@@ -52,22 +51,30 @@ Past contributors and/or continuing advisors:
John Launchbury (jl) [AQUA; at OGI]
Jim Mattson (mattson) [hired hand, AQUA; HP]
Darren Moffat (moffatd) [slave, summer '95; at MoD]
Will Partain (partain) [GRASP/AQUA; touring with Johnny Cash]
Bryan O'Sullivan (bos) [visiting slave, summer '94; at Sun]
Alastair Reid (areid) [GHCI god, at Yale]
Andr\'e Santos (andre) [PhD student; back in Brazil]
Phil Wadler (wadler) [GRASP; at Lucent soon]
David N Turner (dnt) [Linear Types; at An-Teallach]
Phil Wadler (wadler) [GRASP; at Lucent]
Cool people who've let us use their machines:
hppa1.1-hp-hpux Sam Nelson, Stirling University
powerpc-ibm-aix Walter Robinson, Mechanical Eng'g, Glasgow U.
sparc-sun-sunos{4,5} PacSoft, Oregon Graduate Institute
i386-unknown-linux Charles Krasic, Oregon Graduate Institute
i386-*-solaris2 Mark Fanty, CSLU, Oregon Graduate Institute
Also thanks to Conal Elliott, Microsoft Research for facilitating the work
on the Win32 port of GHC.
Simon's projects' acronyms:
GRIP ('87-'90): Graph reduction in parallel
GRASP ('90-'92): Graph reduction applications support project
AQUA ('93- ): Declarative systems architecture: a quantitative approach
Dated: 96/07
Dated: 97/03
GHC WWW page:
This is the pre-mangled text of the 2.02-specific part of the
GHC release notes.
Release~2.02 is the first release of Glasgow Haskell for Haskell~1.4.
The announcement for this release is distributed as \tr{ANNOUNCE-2.02}
in the top-level directory. It contains very important caveats about
2.02, which we do not repeat here!
Information about ``what's ported to which machine'' is in the
Installation Guide. Since 2.01, we've added support for Win32
(Windows NT and Windows 95).
%* *
\subsection[2-02-config]{New configuration things in 2.02}
%* *
%* *
\subsection[2-02-user-visible]{User-visible changes in 2.02, including incompatibilities}
%* *
GHC~2.02 is a compiler for Haskell~1.4 and, as such, introduces a
bunch of user-visible changes. The GHC user's guide has a section to
help you upgrade your programs to Haskell~1.4 from 1.2; all
user-visible changes are described there (and not repeated here).
%* *
\subsection[2-02-options]{New or changed GHC command-line options}
%* *
\item GHC now warns of possibly-incomplete patterns in case expressions
and function bindings. You can suppress these warnings with @-fno-warn-incomplete-patterns@.
GHC also warns of completely overlapped patterns. You can't switch this off.
\item GHC can warn of shadowed names, though it does not do so by default.
Just occasionally this shows up
an otherwise hard-to-find bug. To warn of shadowed names use @-fwarn-name-shadowing@
\item You can now generate `make' dependencies via the compiler
driver, use the option @-M@ together with the list source files to compute
the dependencies for. By default, the dependencies will be appended to
the file \tr{Makefile} in the current directory.
\item For hackers, the flag @-dshow-rn-trace@ shows what the renamer is up to.
Sit back and marvel.
%* *
\subsection[2-02-new-in-compiler]{New in the compiler proper}
%* *
Completely new ``make-world'' system, properly documented (at last) in the
installation guide. No Jmakefiles; but you *need* Gnu make
(gmake). The more recent the better (v 3.70+).
The ``renamer''---the part of the compiler that implements
the Haskell module system---has been completely rewritten, again.
The format of interface files has changed significantly. Interface files
generated by 2.01 will not work with 2.02.
Even less special pleading for the Prelude than in 2.01. If you wanted
to write your own Prelude and drop it in, you would have
a really good chance now.
%* *
\subsection[2-02-new-in-libraries]{In the libraries}
%* *
The libraries have been completely reorganised. There's a description in
%* *
\subsection[2-02-new-in-syslibs]{In ``hslibs'' libraries}
%* *
%* *
\subsection[2-02-new-in-rts]{In the runtime system}
%* *
\item @ForeignObjs@ are properly deallocated when execution halts, as well
as when the garbage collector spots the @ForeignObj@ as being unreferenced.
This is important if you are using a @ForeignObj@ to refer to
a @COM@ object or other remote resource. You want that resource to be relased
when the program terminates.
\item Files handles in the IO prelude are implemented using
@ForeignObjs@, and closed when the file handle is unreferenced. This
means that if you open zillions of files then just letting go of the
file handle is enough to close it.
%* *
\subsection[2-02-new-elsewhere]{Other new stuff}
%* *
2.02 is released together with Green Card, a foreign-language
interface generator for Haskell. More details elsewhere...
%* *
\subsection[2-02-troublespots]{Known troublespots}
%* *
The 2.02 compiler has the following known deficiencies:
\item[native code generator, x86:]
The native code generator for x86 platforms is by default switched
off, as the code the compiler produces with it enabled was discovered
just before releaseing to be wonky. Rather than delay the release
further, GHC on x86 platforms rely on \tr{GCC} as their
backend for now. Hopefully fixed soon.
\item[Simplifier looping:]
The simplifier(Glasgow-speak for optimiser) has been observed to get
into a loop in one or two cases. If you should observe this, please
report it as a bug - the work around is to turn off optimisation.
\item[Undefined @*_vap_info@ symbols:]
If the linker complains about some undefined @*_vap_info@ symbols when
linking 2.02 compiled programs (very unlikely) - fix this by compiling
the module where the references are coming from with
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment