GHC development continues with the release of 8.6.2, continued improvement in
testing infrastructure, and a slew of new features.
Major changes in GHC 8.8
With GHC 8.6 behind us, we have started to focus on what will be GHC 8.8, which
should ship with a number of great features.
Libraries, source language, and type system
Syntax for visible dependent quantification (Proposal #81 (closed)), allowing
users to express types with visible, dependent quantifiers more directly.
Top-level kind signatures, allowing users to add kind signatures alongside
their type declarations.
The next phase of Trees That Grow, refactoring GHC's treatment of source
spans in the Haskell AST.
TypeInType was a major increment, and we are still refactoring type
inference to account for it in a robust, modular way. GHC 8.8 has a
lot of consolidation in this area, especially of kind inference for
type and class declarations.
Continued work on compiler performance
Support for SIMD operations in the native code generator
Support for sub-word sized values in the code generator and libraries
Further improvements to runtime performance:
A late-lambda lifting pass to further improve
A new code layout algorithm, significantly improving the
Many, many bug fixes.
Significantly improved Windows support with a new I/O manager (Tamar Christina).
GHC is lucky to have a large number of volunteer contributors. Many of these
features will be present in the up-coming 8.8 release.
Matth'ias P'all Gissurarson has been adding support for significantly
improved diagnostics messages for typed holes, including making the feature
easier to integrate into IDE tooling.
Ryan Scott has been busily triaging and fixing bugs on a daily basis, and
generally helps to keep things running smoothly.
Michal Terepeta has been performing a variety of refactoring and
optimization in the backend as well as introducing support for sub-word-sized
Abhiroop Sarkar has been working on introducing support for x86 SIMD
instructions into GHC's native code generator, making these primitives
applicable over a significantly wider range of settings.
Andreas Klebinger has been working on improving the code layout algorithms
used by GHC's backend code generator. The result of his Google Summer of Code
project resulted in speed-ups of between 1% and 5% on a variety of tested
Tamar Christina has continued his work on making GHC run great on
Windows. Recently he has been working to finish up a patchset enabling
dynamic linking support on Windows. Tamar is also working on a rework
of GHC's Windows IO manager implementation. The new implementation
will take full advantage of Windows' asynchronous I/O interfaces and
should solve dozens of long-standing tickets.
Sebastian Graf has been working on rekindling the late lambda-lifting work
started by Nicholas Frisby some time ago. This transformation optimizes
runtime allocations by turning free variables into call arguments.
His explorations into performance this transformation on STG has
resulted in extremely impressive allocations reductions on the nofib
Andrey Mokhov, David Eichmann, and Alp Mestanogullari have been working on the
finishing the last mile of the switch to GHC's new Shake-based build system,
Hadrian, which has now been merged into the GHC tree.
One of the larger projects in the pipeline for 8.6 is Alan Zimmerman
and Shayan Najd's refactoring of GHC to use the extensible Trees That
Grow AST structure.
Ben Gamari has been working on improving compilation time for programs
making heavy use of type families. His patch fixes a long-standing performance
cliff (#8095) of GHC's compilation pipeline and should significantly improve
compilation times of programs with lots of fancy types.
Tobias Dammers and Ömer Sinan Ağacan have been working on too many
projects to name, including fixing numerous bugs and improving compiler
Kavon Farvardin has been working on numerous projects around the LLVM code
generator, including working with the LLVM developers to teach LLVM about
GHC's notion of proc points.
Ningning Xie and Richard Eisenberg have been chipping away at realizing
Vladislav Zavialov, in addition to contributing a variety patches, has been
invaluable in helping with code review and advising contributors.
Zubin Duggal has been working on a mechanism for exporting large swaths of
GHC's typechecked representation for consumption by IDE tooling.
Simon Jakobi introduced support in GHCi for the :doc command,
allowing users to view (currently unformatted) Haddock documentation from the
Peter Trommler has been working on improving GHC's portability to non-x86
Alec Theriault has also been doing a variety of work around Template
Haskell, and the numerous projects in GHC's frontend,
As always, if you are interested in contributing to any facet of GHC, be
it the runtime system, type-checker, documentation, simplifier, or
anything in between, please come speak to us either on IRC (#ghc on
irc.freeenode.net}) or email@example.com. Happy Haskelling!