1 The Glasgow Haskell Compiler
2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 Version 0.06 --- Hackers' release
5 As many of you know, we have been working hard at Glasgow on a modular
6 Haskell compiler. We are proud to announce its first public release.
8 We are calling it a "Hackers' release" because it is not yet suitable
9 for Haskell *programmers*. It is intended for *implementors* who are
10 interested in using our compiler as a substrate for their own work.
11 (A later version will indeed be a "Programmers' release".) We also
12 hope that some *porters*, people who would like to see Haskell running
13 on their system, will help us debug any Sun dependencies in our
14 generated C files. Finally, the *curious* may simply want to see the
15 World's Largest Haskell Program (40,000 lines?)!
17 The compiler has the following characteristics:
19 * It is written in Haskell.
21 * It generates C as its target code.
23 * It is specifically designed to be modular, so that others can
24 use it as a "motherboard" into which they can "plug in" their
25 latest whizzy strictness analyser, profiler, or whatever.
27 * Internally, it uses the polymorphic second-order lambda calculus
28 as a way to preserve correct type information in the face of
29 substantial program transformations.
31 * It implements unboxed values as described in [1]. In
32 particular, the implementation of arithmetic and the exploitation
33 of strictness analysis is handled just as described there.
35 * Its back end is based on the Spineless Tagless G-machine, an
36 abstract machine for non-strict functional languages. There is a
37 detailed paper describing this work [2].
39 * It plants code to gather quite a lot of simple profiling
42 * Its runtime system is heavily configurable. For example, it
43 comes complete with three different garbage collectors: two-space,
44 one-space compacting, and Appel-style generational. Adding extra
45 fields to heap objects (for debugging or profiling for example) is
46 just a question of altering C macros; the Haskell source doesn't
47 need to be recompiled. (Caveat: you have to alter them *right*!)
49 The compiler also suffers its fair share of deficiencies:
51 * The compiler itself is large and slow.
53 * The code it generates is very, very unoptimised. Any
54 comparisons you make of runtime speed with good existing compilers
55 will be deeply unflattering. (Our next priority is optimisation.)
57 * Several language features aren't dealt with. This has not
58 prevented us from compiling and running several quite large
61 Please follow the pointers in the top-level README file to find all of
62 the documentation in and about this release. Distribution info
65 We hope you enjoy this system, and we look forward to hearing about
66 your successes with it! Please report bugs to
67 glasgow-haskell-bugs@dcs.glasgow.ac.uk and direct general queries to
68 glasgow-haskell-request@<same>.
71 (and his GRASPing colleagues)
72 ......................................................................
76 [1] Simon L Peyton Jones and John Launchbury, "Unboxed values as first
77 class citizens", Functional Programming Languages and Computer
78 Architecture, Boston, ed Hughes, LNCS 523, Springer Verlag, Sept 1991.
80 [2] Simon L Peyton Jones, "Implementing lazy functional languages on
81 stock hardware: the Spineless Tagless G-machine", Journal of
82 Functional Programming (to appear). Also obtainable by anonymous FTP
83 from ftp.dcs.glasgow.ac.uk:pub/glasgow-fp/stg.dvi.
87 This release is available, in whole or in part, from the usual Haskell
88 anonymous FTP sites, in the directory pub/haskell/glasgow:
90 nebula.cs.yale.edu (128.36.13.1)
91 ftp.dcs.glasgow.ac.uk (130.209.240.50)
92 animal.cs.chalmers.se (129.16.225.66)
94 (Beleaguered NIFTP users within the UK can get the same files by using
95 a <FP>/haskell/glasgow prefix, instead of pub/haskell/glasgow.)
97 These are the available files (for the ON DEMAND ones, please ask):
99 ghc-0.06-src.tar.Z the basic source distribution; assumes you
100 will compile it with Chalmers HBC, version
103 ghc-0.06-proto-hi-files.tar.Z
104 An "overlay" of .hi interface files, to be
105 used when compiling with the *prototype*
106 Glasgow Haskell compiler (version 0.411 or
109 ghc-0.06-hc-files.tar.Z An "overlay" of .hc generated-C files; used
110 either to save you the trouble of compiling
111 the prelude, or because your only interest is
114 ghc-0.06-tests.tar.Z Some of our test files we have used in getting
115 this beast going. We hope to grow them into a
116 semi-respectable benchmark suite.