Plans for GHC 6.10
We expect to release GHC 6.10 around ICFP 2008.
Things that are done already
-
Several language extensions advertised in the November 2007 status report:
- Improvements to record syntax
- View patterns
- Quasiquotation
- Generalised list comprehensions
Done: these are all in the HEAD already.
-
Parallel garbage collection (see Parallel generational-copying garbage collection with a block-structured heap). Done.
-
External Core (output only) is working again, thanks to Tim Chevalier.
-
Better versioning to support separate compilation based on MD5 fingerprints. Already done (and documented! see Commentary/Compiler/RecompilationAvoidance.
-
GHC now uses libffi to implement parts of the FFI, replacing some of the home-grown and very architecture-specific code we had to do this. Amongst other benefits, this will ease the task of porting GHC in the future. Done; but maybe use it to solve the SE Linux paranoia problem?
-
Backwards compatibility: we've introduce "base3-compat", a backwards-compatible version of the base library that will provide essentially the same API as the base library that shipped with GHC 6.8.3, so that code depending on base-3 will continue to just work.
-
Haddock 2
- Build it with GHC (maybe ship it with GHC too)
- Documentation for GHC API done via Haddock 2
-
Extensible exceptions, along the lines of Simon's paper An Extensible Dynamically-Typed Hierarchy of Exceptions. This is mainly a library change.
-
Haddock 2 (see also #1964 (closed) (GHC.Prim)). (Ian Lynagh)
-
GHC API improvement: Thomas Schilling is doing a SoC project. Preserve comments and pragmas, generic traversals (#1467 (closed), #1886 (closed), GhcApiStatus). We'll ship whatever Thomas has committed by then.
-
Type families, fully working. Manuel Chakravarty and Simon PJ
-
Nested data parallelism, in some form. Roman Leshchinskiy, Gabriele Keller, Manuel Chakravarty, Simon PJ
-
More library reorg (#1338 (closed)). The goal here is to shift stuff out of boot-libs and into the Haskell Library Platform, which is independently upgradable. Not hugely urgent, nice to have.
-
^C
should raise an exception by default (also SIGPIPE, see #1619 (closed), #2301 (closed)). Nearly done! But not quite complete if you fork another process. This latter part is lower priority.
Things we plan to do for sure
- Ship the Haskell Library Platform instead of 'extralibs'. Don and Duncan are leading.
Beyond 6.10
This is a list of things that are floating about in our minds for what to do beyond 6.10. Nothing is decided, and these items vary wildly in their size.
-
Back-end revamp (see also #1501 (closed)). John Dias is in charge. For 6.10 we will make sure that the whole existing path still exists, so we can choose at a late date whether to rely on the new path or not.
-
Unicode support for text I/O. This means adding Unicode encoding/decoding for Text I/O handles. (Simon Marlow: a few days work.)
- Consensus was that Text I/O should always use the current locale encoding.
- You can elect to have no encoding by opening in binary mode, but that's all.
-
Shared libraries, as a result of Clemens Fruhwirth's Summer of Code project. (#1876 (closed)) Simon Marlow: about a week's work.
- Binaries get much smaller
- Compile a package on Windows to a DLL; it just works
- C program (or Excel) that calls multiple Haskell functions gets just one copy of the RTS, rather than one per DLL as now.
- Performance penalty, but too small to measure
-
Opaque interfaces (optionally), so you can upgrade a library without recompiling.
-
*Parallelism: better profiling tools.
-
Visual Haskell: a Visual Studio plugin. There is one, but it has suffered bit-rot.
-
GHC as a platform is the aspiration that it should be easy to plug extensions into GHC, and easy to use GHC to extend other software.
-
Static verification along the lines of Dana Xu's work.
-
Finish System.Process revamp (#2233 (closed))
-
Binary package DB, or at least make the one-file-per package work (#593 (closed), #723 (closed), #2089 (closed))