[project @ 1996-07-19 18:36:04 by partain]
[ghc-hetmet.git] / ghc / docs / ANNOUNCE-0.16
1              The Glasgow Haskell Compiler -- version 0.16
2              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
4 The second public release of the Glasgow Haskell Compiler is now
5 available (GHC, version 0.16). Binaries (recommended) and source are
6 freely available by FTP; details appear below.
7
8 GHC 0.16 is still alpha-quality software.  This release in an interim
9 measure, not as solid as I would prefer.  However, a lot has gone in
10 since December.  The profiling system is Way Cool.  The compiler now
11 has a strictness analyser and an update analyser.  Compiled programs
12 tend to run faster.  Compilation speed is worse.  Bugs remain, but
13 they tend to be work-around-able.
14
15 To run this release, you need a Sun4 or Sun3, probably with 16+MB
16 memory, and GNU C (gcc), version 2.1 or greater, and "perl".
17
18 This system can be built from source using: itself (most likely to
19 succeed), the previous GHC release (0.10) [least likely], or the
20 Chalmers HBC compiler [in-between].  Please see the appropriate
21 documentation for details.
22
23 Please report bugs to glasgow-haskell-bugs@dcs.glasgow.ac.uk and
24 direct general queries to glasgow-haskell-request@<same>.
25
26 Will Partain
27 (typist for the AQUA [formerly GRASP] project)
28
29 ....................................................................
30
31 Why a Haskell programmer might want to use GHC
32 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33 * GHC provides an extensible I/O system, based on a "monad" [1]. (The
34   standard Haskell I/O system is built on this foundation.)
35
36 * A number of significant language extensions are implemented:
37         - Fully fledged unboxed data types [2].
38         - Ability to write arbitrary in-line C-language code, using
39           the I/O monad to retain referential transparency.
40         - Incrementally-updatable arrays, also embedded in a monad.
41         - Mutable reference types.
42
43 * A new profiling system is supplied, which enables you to find out
44   which bits of your program are eating both *time* and the *space* [3].
45
46 * By default, the system uses a generational garbage collector which
47   lets you run programs whose live data is significantly larger than
48   the physical memory size before thrashing occurs.  (Conventional
49   2-space GC starts thrashing when the live data gets to about half
50   the physical memory size.)
51
52 * Good error messages.  Well, fairly good error messages.  Line
53   numbers are pretty accurate, and during type checking you get
54   several (accurate) error reports rather than just one.
55
56 * Performance: programs compiled with GHC "often" beat
57   Chalmers-HBC-compiled ones.  If you find programs where HBC wins,
58   please report it to us, as a bug :-).
59
60 Why a functional-language implementor might want to use GHC
61 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62 * We have tried very hard to write the compiler in a modular and
63   well-documented way, so that other researchers can modify and extend
64   it.  One of our goals is specifically to provide a framework to
65   support others' work.  Several people are already using it in this
66   way.
67
68 * Highly configurable runtime system.  Heavy use of C macros means
69   that you can modify much of the storage representation without
70   telling the compiler.  For example, the system comes with 4
71   different garbage collectors! (all working)
72
73 * Internals: extensive use of the second-order lambda calculus as an
74   intermediate code; the Spineless Tagless G-machine as evaluation
75   model [4].
76
77 * Various performance-measurement hooks.
78
79 Main shortcomings
80 ~~~~~~~~~~~~~~~~~
81 * No interactive system.  This is a batch compiler only.  (Any
82   volunteers?)
83
84 * Compiler is greedy on resources.  Going via C doesn't help here.
85
86 * This system should run on any Unix box.  We haven't had time to do
87   any non-Sun ports.  Help or prodding welcome.
88
89 References
90 ~~~~~~~~~~
91 All these papers come with the distribution [in ghc/docs/papers].
92
93 [1] "Imperative functional programming", Peyton Jones & Wadler, POPL '93
94
95 [2] "Unboxed data types as first-class citizens", Peyton Jones &
96     Launchbury, FPCA '91
97
98 [3] "Profiling lazy functional languages", Sansom & Peyton Jones,
99     Glasgow workshop '92
100
101 [4] "Implementing lazy functional languages on stock hardware", Peyton
102     Jones, Journal of Functional Programming, Apr 1992
103
104 How to get it
105 ~~~~~~~~~~~~~
106 This release is available, in whole or in part, from the usual Haskell
107 anonymous FTP sites, in the directory pub/haskell/glasgow:
108
109         ftp.dcs.glasgow.ac.uk  (130.209.240.50)
110         ftp.cs.chalmers.se     (129.16.225.66)          
111         nebula.cs.yale.edu     (128.36.13.1)
112
113 We are mirrored by src.doc.ic.ac.uk, in
114 computing/programming/languages/haskell/glasgow, and you can get files
115 from there by every means known to humanity.
116
117 These are the available files (.Z for compressed, .gz for gzipped) --
118 some are `on demand', ask if you don't see them:
119
120 ghc-0.16-bin-sun4.tar.{Z,gz} A binary distribution -- avoid compiling
121                         altogether!  For SunOS 4.1.x; assumes you have
122                         GNU C (gcc) version 2.x around...
123
124 ghc-0.16-src.tar.gz     The basic source distribution; about 3MB.
125
126 ghc-0.16-hi-files-{hbc,ghc-0.10}.tar.gz
127                         Interface files for the compiler proper
128                         (ghc/compiler/*/*.hi), to be used if booting
129                         with either HBC or GHC version 0.10.  (The
130                         distributed .hi files assume GHC version
131                         0.16.)
132                         
133 ghc-0.16-hc-files.tar.gz The intermediate C files for the compiler
134                          proper, the prelude, and `Hello, world'.
135                          Used when porting.
136
137 ghc-0.16-patch-*        Patches to the original distribution.  There
138                         are none to start with, of course, but there
139                         might be by the time you grab the files.
140                         Please check for them.
141
142 There are no diffs from version 0.10, as they would be laughably huge.
143
144 Once you have the distribution, please follow the pointers in the
145 ghc/README file to find all of the documentation in and about this
146 release.