wiki:Status/May11

Version 4 (modified by igloo, 3 years ago) (diff)

--

WORK IN PROGRESS

GHC Status May 2011

GHC is humming along. We are currently deep into the release cycle for GHC 7.0. We have finally bumped the major version number, because GHC 7.0 has quite a bit of new stuff

  • Simon PJ and Dimitrios complete rewrite of the constraint solver in the type inference engine: done? any correctness or performance regressions remaining?
  • David Terei LLVM; any news?

We are fortunate to have a growing team of people willing to roll up their sleeves and help us with GHC. Amongst those who have got involved recently are:

(The cross-compilation crew springs to mind. And some OS X / FBSD / Solaris / etc activity recently)

At GHC HQ we are having way too much fun; if you wait for us to do something you have to wait a long time. So don't wait; join in!

Release status: 7.0 closed, 7.2 imminent, 7.4 coming soon

Language developments, especially types

Any updates on the below?

GHC continues to act as an incubator for interesting new language developments. Here's a selection that we know about.

  • Stephanie Weirich and Steve Zdancewic had a great sabbatical year at Cambridge. One of the things we worked on, with Brent Yorgey who came as an intern, was to close the embarrassing hole in the type system concerning newtype deriving (see Trac bug #1496). I have delayed fixing until I could figure out a Decent Solution, but now we know; see our 2011 POPL paper http://www.cis.upenn.edu/~sweirich/newtypes.pdf Newtype. Brent is working on some infrastructal changes to GHC's Core language, and then we'll be ready to tackle the main issue.
  • Next after that is a mechanism for promoting types to become kinds, and data constructors to become types, so that you can do typed functional programming at the type level. Conor McBride's SHE prototype is the inspiration here http://personal.cis.strath.ac.uk/~conor/pub/she/ SHE. Currently it is, embarrassingly, essentially untyped.
  • Iavor Diatchki plans to add numeric types, so that you can have a type like Bus 8, and do simple arithmetic at the type level. You can encode this stuff, but it's easier to use and more powerful to do it directly.
  • David Mazieres at Stanford wants to implement Safe Haskell, a flag for GHC that will guarantee that your program does not use unsafePerformIO, foreign calls, RULES, and other stuff stuff.

7.0 also has support for the Haskell 2010 standard, and the libraries that it specifies.

Packages and the runtime system

  • Simon Marlow is working on a new garbage collector that is designed to improve scaling of parallel programs beyond small numbers of cores, by allowing each processor core to collect its own local heap independently of the other cores. Some encouraging preliminary results were reported in a blog post. Work on this continues; the complexity of the system and the number of interacting design choices means that achieving an implementation that works well in a broad variety of situations is proving to be quite a challenge.
  • The "new back end" is still under construction. This is a rewrite of the part of GHC that turns STG syntax into C--, i.e. the bit between the Core optimisation passes and the native code generator. The rewrite is based on http://research.microsoft.com/en-us/um/people/simonpj/papers/c--/dfopt.pdf Hoopl, a data-flow optimisation framework. Ultimately this rewrite should enable better code generation. The new code generator is already in GHC, but turned off by default; you get it with the flag -fuse-new-codegen. Don't expect to get better code with this flag yet!

The Parallel GHC Project

Microsoft Research is funding a 2-year project to develop the real-world use of parallel Haskell. The project is now underway with four industrial partners:

  • Dragonfly (New Zealand)
  • IIJ Innovation Institute Inc. (Japan)
  • Los Alamos National Laboratory (USA)
  • Willow Garage Inc. (USA)

with consulting and engineering support from Well-Typed. Each organisation is working on its own particular project making use of parallel Haskell. The overall goal is to demonstrate successful serious use of parallel Haskell, and along the way to apply engineering effort to any problems with the tools that the organisations might run into.

For more details, see the link:parallel GHC project entry.

Data Parallel Haskell

Manuel: Any status update? Previous entry below

Since the last report, we have continued to improve support for nested parallel divide-and-conquer algorithms. We started with http://darcs.haskell.org/packages/dph/dph-examples/spectral/QuickHull/dph/QuickHullVect.hs QuickHull and are now working on an implementation of the http://darcs.haskell.org/packages/dph/dph-examples/real/BarnesHut/Solver/NestedBH/Solver.hs Barnes-Hut n-body algorithm. The latter is not only significantly more complex, but also requires the vectorisation of recursive tree data-structures, going well beyond the capabilities of conventional parallel-array languages. In time for the stable branch of GHC 7.0, we replaced the old, per-core sequential array infrastructure (which was part of the sub-package dph-prim-seq) by the http://hackage.haskell.org/package/vector vector package — vector started its life as a next-generation spin off of dph-prim-seq, but now enjoys significant popularity independent of DPH.

The new handling of INLINE pragmas as well as other changes to the Simplifier improved the stability of DPH optimisations (and in particular, array stream fusion) substantially. However, the current candidate for GHC 7.0.1 still contains some performance regressions that affect the DPH and http://hackage.haskell.org/package/repa Repa libraries and to avoid holding up the 7.0.1 release, we decided to push fixing these regressions to GHC 7.0.2. More precisely, we are planning a release of DPH and Repa that is suitable for use with GHC 7.0 for the end of the year, to coincide with the release of GHC 7.0.2. From GHC 7.0 onwards, the library component of DPH will be shipped separately from GHC itself and will be available to download and install from Hackage as for other libraries.

To catch DPH performance regressions more quickly in the future, Ben Lippmeier implemented a performance regression testsuite that we run nightly on the HEAD. The results can be enjoyed on the GHC developer mailing list.

Sadly, Roman Leshchinskiy has given up his full-time engagement with DPH to advance the use of Haskell in the financial industry. We are looking forward to collaborating remotely with him.

Installers

The GHC installers have also received some attention for this release.

The Windows installer includes a much more up-to-date copy of the MinGW system, which in particular fixes a couple of issues on Windows 7. Thanks to Claus Reinke, the installer also allows more control over the registry associations etc.

Meanwhile, the Mac OS X installer has received some attention from Evan Laforge. Most notably, it is now possible to install different versions of GHC side-by-side.

Bibliography

TODO Remove redundant entries