The Glasgow Haskell Compiler -- version 2.01 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ We are pleased to announce the first release of the Glasgow Haskell Compiler (GHC, version 2.01) for *Haskell 1.3*. Sources and binaries are freely available by anonymous FTP and on the World-Wide Web; details below. Haskell is "the" standard lazy functional programming language; the current language version is 1.3, agreed in May, 1996. The Haskell Report is online at http://haskell.cs.yale.edu/haskell-report/haskell-report.html. GHC 2.01 is a test-quality release, worth trying if you are a gung-ho Haskell user or if you are keen to try the new Haskell 1.3 features. We advise *AGAINST* relying on this compiler (2.01) in any way. We are releasing our current Haskell 1.2 compiler (GHC 0.29) at the same time; it should be pretty solid. If you want to hack on GHC itself, then 2.01 is for you. The release notes comment further on this point. What happens next? I'm on sabbatical for a year, and Will Partain (the one who really makes GHC go) is leaving at the end of July 96 for a Real Job. So you shouldn't expect rapid progress on 2.01 over the next 6-12 months. The Glasgow Haskell project seeks to bring the power and elegance of functional programming to bear on real-world problems. To that end, GHC lets you call C (including cross-system garbage collection), provides good profiling tools, and concurrency and parallelism. Our goal is to make it the "tool of choice for real-world applications". GHC 2.01 is substantially changed from 0.26 (July 1995), as the new version number suggests. (The 1.xx numbers are reserved for further spinoffs from the Haskell-1.2 compiler.) Changes worth noting include: * GHC is now a Haskell 1.3 compiler (only). Virtually all Haskell 1.2 modules need changing to go through GHC 2.01; the GHC documentation includes a ``crib sheet'' of conversion advice. * The Haskell compiler proper (ghc/compiler/ in the sources) has been substantially rewritten and is, of course, Much, Much, Better. The typechecker and the "renamer" (module-system support) are new. * Sadly, GHC 2.01 is currently slower than 0.26. It has taken all our cycles to get it correct. We fondly believe that the architectural changes we have made will end up making 2.0x *faster* than 0.2x, but we have yet to substantiate this belief; sorry. Still, 2.01 (built with 0.29) is quite usable. * GHC 2.01's optimisation (-O) is not nearly as good as 0.2x, mostly because we haven't taught it about cross-module information (arities, inlinings, etc.). For this reason, a 2.01-built-with-2.01 (bootstrapped) is no fun to use (too slow), and, sadly, that is where we would normally get .hc (intermediate C; used for porting) files from... (hence: none provided). * GHC 2.01 is much smarter than 0.26 about when to recompile. It will abort a compilation that "make" thought was necessary at a very early stage, if none of the imported types/classes/functions *that are actually used* have changed. This "recompilation checker" uses a completely different interface-file format than 0.26. (Interface files are a matter for the compilation system in Haskell 1.3, not part of the language.) * The 2.01 libraries are not "split" (yet), meaning you will end up with much larger binaries... * The not-mandated-by-the-language system libraries are now separate from GHC (though usually distributed with it). We hope they can take on a "life of their own", independent of GHC. * All the same cool extensions (e.g., unboxed values), system libraries (e.g., Posix), profiling, Concurrent Haskell, Parallel Haskell,... * New ports: Linux ELF (same as distributed as GHC 0.28). Please see the release notes for a complete discussion of What's New. To run this release, you need a machine with 16+MB memory (more if building from sources), GNU C (`gcc'), and `perl'. We have seen GHC 2.01 work on these platforms: alpha-dec-osf2, hppa1.1-hp-hpux9, sparc-sun-{sunos4,solaris2}, mips-sgi-irix5, and i386-unknown-{linux,solaris2,freebsd}. Similar platforms should work with minimal hacking effort. The installer's guide give a full what-ports-work report. Binaries are distributed in `bundles', e.g. a "profiling bundle" or a "concurrency bundle" for your platform. Just grab the ones you need. Once you have the distribution, please follow the pointers in ghc/README to find all of the documentation about this release. NB: preserve modification times when un-tarring the files (no `m' option for tar, please)! We run mailing lists for GHC users and bug reports; to subscribe, send mail to majordomo@dcs.gla.ac.uk; the msg body should be: subscribe glasgow-haskell- Your Name Please send bug reports about GHC to glasgow-haskell-bugs@dcs.gla.ac.uk. Simon Peyton Jones Dated: July '96 Relevant URLs on the World-Wide Web: GHC home page http://www.dcs.gla.ac.uk/fp/software/ghc/ Glasgow FP group page http://www.dcs.gla.ac.uk/fp/ comp.lang.functional FAQ http://www.cs.nott.ac.uk/Department/Staff/mpj/faq.html ====================================================================== How to get GHC 2.01: This release is available by anonymous FTP from the main Haskell archive sites, in the directory pub/haskell/glasgow: ftp.dcs.gla.ac.uk (130.209.240.50) ftp.cs.chalmers.se (129.16.227.140) haskell.cs.yale.edu (128.36.11.43) The Glasgow site is mirrored by src.doc.ic.ac.uk (146.169.43.1), in computing/programming/languages/haskell/glasgow. These are the available files (.gz files are gzipped) -- some are `on demand', ask if you don't see them: ghc-2.01-src.tar.gz The source distribution; about 3MB. ghc-2.01.ANNOUNCE This file. ghc-2.01.{README,RELEASE-NOTES} From the distribution; for those who want to peek before FTPing... ghc-2.01-ps-docs.tar.gz Main GHC documents in PostScript format; in case your TeX setup doesn't agree with our DVI files... ghc-2.01-.tar.gz Basic binary distribution for a particular . Unpack and go: you can compile and run Haskell programs with nothing but one of these files. NB: does *not* include profiling (see below). ==> alpha-dec-osf2 hppa1.1-hp-hpux9 i386-unknown-freebsd i386-unknown-linux i386-unknown-solaris2 m68k-sun-sunos4 mips-sgi-irix5 sparc-sun-sunos4 sparc-sun-solaris2 ghc-2.01--.tar.gz ==> as above ==> prof (profiling) conc (concurrent Haskell) par (parallel) gran (GranSim parallel simulator) ticky (`ticky-ticky' counts -- for implementors) prof-conc (profiling for "conc[urrent]") prof-ticky (ticky for "conc[urrent]") ghc-2.01-hc-files.tar.gz Basic set of intermediate C (.hc) files for the compiler proper, the prelude, and `Hello, world'. Used for bootstrapping the system. About 4MB. ghc-2.01--hc-files.tar.gz Further sets of .hc files, for building other "bundles", e.g., profiling. ghc-2.01-hi-files-.tar.gz Sometimes it's more convenient to use a different set of interface files than the ones in *-src.tar.gz. (The installation guide will advise you of this.)