==============================================================
The (Interactive) Glasgow Haskell Compiler -- version 6.12.1
==============================================================
The GHC Team is pleased to announce a new major release of GHC. There
have been a number of significant changes since the last major release,
including:
* Considerably improved support for parallel execution. GHC 6.10 would
execute parallel Haskell programs, but performance was often not very
good. Simon Marlow has done lots of performance tuning in 6.12,
removing many of the accidental (and largely invisible) gotchas that
made parallel programs run slowly.
* As part of this parallel-performance tuning, Satnam Singh and Simon
Marlow have developed ThreadScope, a GUI that lets you see what is
going on inside your parallel program. It's a huge step forward from
"It takes 4 seconds with 1 processor, and 3 seconds with 8 processors;
now what?". ThreadScope will be released separately from GHC, but at
more or less the same time as GHC 6.12.
* Dynamic linking is now supported on Linux, and support for other
platforms will follow. Thanks for this most recently go to the
Industrial Haskell Group who pushed it into a fully-working state;
dynamic linking is the culmination of the work of several people over
recent years. One effect of dynamic linking is that binaries shrink
dramatically, because the run-time system and libraries are shared.
Perhaps more importantly, it is possible to make dynamic plugins from
Haskell code that can be used from other applications.
* The I/O libraries are now Unicode-aware, so your Haskell programs
should now handle text files containing non-ascii characters, without
special effort.
* The package system has been made more robust, by associating each
installed package with a unique identifier based on its exposed ABI.
Now, cases where the user re-installs a package without recompiling
packages that depend on it will be detected, and the packages with
broken dependencies will be disabled. Previously, this would lead to
obscure compilation errors, or worse, segfaulting programs.
This change involved a lot of internal restructuring, but it paves the
way for future improvements to the way packages are handled. For
instance, in the future we expect to track profiled packages
independently of non-profiled ones, and we hope to make it possible to
upgrade a package in an ABI-compatible way, without recompiling the
packages that depend on it. This latter facility will be especially
important as we move towards using more shared libraries.
* There are a variety of small language changes, including
* Some improvements to data types: record punning, declaring
constructors with class constraints, GADT syntax for type families
etc.
* You can omit the "$" in a top-level Template Haskell splice, which
makes the TH call look more like an ordinary top-level declaration
with a new keyword.
* We're are deprecating mdo for recursive do-notation, in favour of
the more expressive rec statement.
* We've concluded that the implementation of impredicative polymorphism
is unsustainably complicated, so we are re-trenching. It'll be
deprecated in 6.12 (but will still work), and will be either removed
or replaced with something simpler in 6.14.
The full release notes are here:
http://haskell.org/ghc/docs/6.12.1/html/users_guide/release-6-12-1.html
How to get it
~~~~~~~~~~~~~
The easy way is to go to the web page, which should be self-explanatory:
http://www.haskell.org/ghc/
We supply binary builds in the native package format for many
platforms, and the source distribution is available from the same
place.
Packages will appear as they are built - if the package for your
system isn't available yet, please try again later.
Background
~~~~~~~~~~
Haskell is a standard lazy functional programming language; the
current language version is Haskell 98, agreed in December 1998 and
revised December 2002.
GHC is a state-of-the-art programming suite for Haskell. Included is
an optimising compiler generating good code for a variety of
platforms, together with an interactive system for convenient, quick
development. The distribution includes space and time profiling
facilities, a large collection of libraries, and support for various
language extensions, including concurrency, exceptions, and foreign
language interfaces (C, whatever). GHC is distributed under a
BSD-style open source license.
A wide variety of Haskell related resources (tutorials, libraries,
specifications, documentation, compilers, interpreters, references,
contact information, links to research groups) are available from the
Haskell home page (see below).
On-line GHC-related resources
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Relevant URLs on the World-Wide Web:
GHC home page http://www.haskell.org/ghc/
GHC developers' home page http://hackage.haskell.org/trac/ghc/
Haskell home page http://www.haskell.org/
Supported Platforms
~~~~~~~~~~~~~~~~~~~
The list of platforms we support, and the people responsible for them,
is here:
http://hackage.haskell.org/trac/ghc/wiki/Contributors
Ports to other platforms are possible with varying degrees of
difficulty. The Building Guide describes how to go about porting to a
new platform:
http://hackage.haskell.org/trac/ghc/wiki/Building
Developers
~~~~~~~~~~
We welcome new contributors. Instructions on accessing our source
code repository, and getting started with hacking on GHC, are
available from the GHC's developer's site run by Trac:
http://hackage.haskell.org/trac/ghc/
Mailing lists
~~~~~~~~~~~~~
We run mailing lists for GHC users and bug reports; to subscribe, use
the web interfaces at
http://www.haskell.org/mailman/listinfo/glasgow-haskell-usershttp://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
There are several other haskell and ghc-related mailing lists on
www.haskell.org; for the full list, see
http://www.haskell.org/mailman/listinfo/
Some GHC developers hang out on #haskell on IRC, too:
http://www.haskell.org/haskellwiki/IRC_channel
Please report bugs using our bug tracking system. Instructions on
reporting bugs can be found here:
http://www.haskell.org/ghc/reportabug