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