[project @ 1996-01-08 20:28:12 by partain]
[ghc.git] / ghc / docs / ANNOUNCE-0.10
1                   The Glasgow Haskell Compiler
2                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
4 We are happy to announce the first full release of the Glasgow Haskell
5 Compiler (GHC, version 0.10).  It is freely available by FTP; details
6 appear below.
7
8 To run this release, you need a Sun4, probably with 16+MB memory, and
9 GNU C (gcc), version 2.1 or greater, and "perl".  If building from
10 source, you will need Chalmers HBC, version 0.998.x.
11
12 We hope you enjoy this system, and we look forward to hearing about
13 your successes with it!  Please report bugs to
14 glasgow-haskell-bugs@dcs.glasgow.ac.uk and direct general queries to
15 glasgow-haskell-request@<same>.
16
17 Simon Peyton Jones
18 (and his GRASPing colleagues)
19
20 Why a Haskell programmer might want to use GHC
21 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22 * Almost all of Haskell is implemented.  In particular, the full range
23   of data types is supported: arbitrary precision integers, rationals,
24   double-precision floats, and "real" arrays with O(1) access time.
25   (The release notes list all unimplemented language features.)
26
27 * An extensible I/O system is provided, based on a "monad" [1]. (The
28   standard Haskell I/O system is built on this foundation.)
29
30 * A number of significant language extensions are implemented:
31         - Fully fledged unboxed data types [2].
32         - Ability to write arbitrary in-line C-language code, using
33           the I/O monad to retain referential transparency.
34         - Incrementally-updatable arrays, also embedded in a monad.
35         - Mutable reference types.
36
37 * By default, the system uses a generational garbage collector which
38   lets you run programs whose live data is significantly larger than
39   the physical memory size before thrashing occurs.  (Conventional
40   2-space GC starts thrashing when the live data gets to about half
41   the physical memory size.)
42
43 * A new profiling system is supplied, which enables you to find out which
44   bits of your program are eating both *time* and the *space* [3].
45
46 * Good error messages.  Well, fairly good error messages.  Line
47   numbers are pretty accurate, and during type checking you get
48   several (accurate) error reports rather than just one.
49
50 * Performance: programs compiled with GHC "usually" beat
51   Chalmers-HBC-compiled ones.  If you find programs where HBC wins,
52   send them to us :-).
53
54 * We have a pretty good test suite, and this version passes
55   practically all of it.  (Yes, it can compile itself, too.) We hope
56   you will find the system to be robust.
57
58 Why a functional-language implementor might want to use GHC
59 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60 * We have tried very hard to write the compiler in a modular and
61   well-documented way, so that other researchers can modify and extend
62   it.  One of our goals is specifically to provide a framework to
63   support others' work.  Several people are already using it in this
64   way.
65
66 * Highly configurable runtime system.  Heavy use of C macros means
67   that you can modify much of the storage representation without
68   telling the compiler.  For example, the system comes with 4
69   different garbage collectors! (all working)
70
71 * Internals: extensive use of the second-order lambda calculus as an
72   intermediate code; the Spineless Tagless G-machine as evaluation
73   model [4].
74
75 * Various performance-measurement hooks.
76
77 Main shortcomings
78 ~~~~~~~~~~~~~~~~~
79 * No interactive system.  This is a batch compiler only.  (Any
80   volunteers?)
81
82 * Compiler is greedy on resources.  Going via C doesn't help here.
83
84 * This system should run on any Unix box.  We haven't had time to do
85   any non-Sun4 ports.  Help or prodding welcome.
86
87 References
88 ~~~~~~~~~~
89 All these papers come with the distribution [in ghc/docs/papers].
90
91 [1] "Imperative functional programming", Peyton Jones & Wadler, POPL '93
92
93 [2] "Unboxed data types as first-class citizens", Peyton Jones &
94     Launchbury, FPCA '91
95
96 [3] "Profiling lazy functional languages", Sansom & Peyton Jones,
97     Glasgow workshop '92
98
99 [4] "Implementing lazy functional languages on stock hardware", Peyton
100     Jones, Journal of Functional Programming, Apr 1992
101
102 How to get it
103 ~~~~~~~~~~~~~
104 This release is available, in whole or in part, from the usual Haskell
105 anonymous FTP sites, in the directory pub/haskell/glasgow:
106
107         nebula.cs.yale.edu     (128.36.13.1)
108         ftp.dcs.glasgow.ac.uk  (130.209.240.50)
109         animal.cs.chalmers.se  (129.16.225.66)          
110
111 (Beleaguered NIFTP users within the UK can get the same files from
112 Glasgow by using a <FP>/haskell/glasgow prefix, instead of
113 pub/haskell/glasgow.  Also, we are mirrored by src.doc.ic.ac.uk, in
114 languages/haskell/glasgow, and you can get files from there by every
115 means known to humanity.)
116
117 These are the available files:
118
119 ghc-0.10-src.tar.Z      The basic source distribution; assumes you
120                         will compile it with Chalmers HBC, version
121                         0.998.n, on a Sun4, for which you have GNU C
122                         (gcc) version 2.1 or greater.  About 3MB.
123
124 ghc-0.10-bin-sun4.tar.Z A binary distribution -- avoid compiling
125                         altogether!  For SunOS 4.1.x; assumes you
126                         have GNU C (gcc) version 2.x around...
127
128 ghc-0.10-patch-*        Patches to the original distribution.  There
129                         are none to start with, of course, but there
130                         might be by the time you grab the files.
131                         Please check for them.
132
133 Once you have the distribution, please follow the pointers in the
134 ghc/README file to find all of the documentation in and about this
135 release.