8a1b6334c34333ad3bdcc7f3fbcd21617d408d96
[ghc-hetmet.git] / ghc / docs / ANNOUNCE-0.06
1                   The Glasgow Haskell Compiler
2                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3                 Version 0.06 --- Hackers' release
4
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.
7
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?)!
16
17 The compiler has the following characteristics:
18
19     * It is written in Haskell.
20
21     * It generates C as its target code.
22
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.
26
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.
30
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.
34
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].
38
39     * It plants code to gather quite a lot of simple profiling
40     information.
41
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*!)
48
49 The compiler also suffers its fair share of deficiencies:
50
51     * The compiler itself is large and slow.
52
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.)
56
57     * Several language features aren't dealt with.  This has not
58     prevented us from compiling and running several quite large
59     Haskell programs.
60
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
63 follows below.
64
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>.
69
70 Simon Peyton Jones
71 (and his GRASPing colleagues)
72 ......................................................................
73
74 References
75 ~~~~~~~~~~
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.
79
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.
84
85 Distribution 
86 ~~~~~~~~~~~~
87 This release is available, in whole or in part, from the usual Haskell
88 anonymous FTP sites, in the directory pub/haskell/glasgow:
89
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)          
93
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.)
96
97 These are the available files (for the ON DEMAND ones, please ask):
98
99 ghc-0.06-src.tar.Z      the basic source distribution; assumes you
100                         will compile it with Chalmers HBC, version
101                         0.997.3 or later.
102
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
107                         later).
108
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
112                         porting the C to
113
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.