GHC Status Report, October 2015

GHC development spurs on, with an exciting new announcement - the next release will be a super-major one, culminating in GHC 8.0. There are many reasons for this change, but one of the most exciting is that GHC is getting a completely new core language. While this adds a bit of complexity to the compiler, it paves the way to implement Dependent Haskell over the course of the next few years.

On top of that, we've also done a ton of other work over the past half year, including...

Major changes in GHC 8.0.1

  • Support for simple, implicit callstacks with source locations [ImplicitCallstacks] implicit parameters providing callstacks/source locations], allowing you to have a light-weight means of getting a call-stack in a Haskell application. (Phab:D861)
  • Improved optimization diagnostics. The compiler is now more liberal about issues warnings of potentially non-firing rewrite rules and other potential gotchas.
  • Support for wildcards in data and type family instances (Phab:D1092)
  • Injective type families [InjectiveTypeFamilies]. Injective TFs allow you to specify type families which are injective, i.e. have a one-to-one relationship. (Phab:D202).
  • Applicative do notation [ApplicativeDo]. With the new -XApplicativeDo, GHC tries to desugar do-notation to Applicative where possible, giving a more convenient sugar for many common Applicative expressions. (Phab:D729)
  • Support for deriving the Lift typeclass - a very common need when working with Template Haskell. (Phab:D1168)
  • A PowerPC 64bit code generator. The new native codegen supports Linux/ppc64 in both big endian and little endian mode. (Phab:D629).
  • A beautiful new users guide. Now rewritten in reStructured Text, and with significantly improved output and documentation.
  • Visible type application - [ExplicitTypeApplication]. This allows you to say, for example id @Bool to specialize id to Bool -> Bool. With this feature, proxies are never needed.
  • Kind Equalities, which form the first step to building Dependent Haskell. This feature enables promotion of GADTs to kinds, kind families, heterogeneous equality (kind-indexed GADTs), and * :: *. (Phab:D808)
  • Strict Haskell support. This includes new -XStrictData and -XStrict language extensions.
  • Implement phase 1 of the MonadFail proposal. (#10751)
  • Overloaded record fields [OverloadedRecordFields]. At long last, ORF will finally be available in GHC 8.0, allowing multiple uses of the same field name and a form of type-directed name resolution.
  • A huge improvement to pattern matching (including much better coverage of GADTs), based on the work of Simon PJ and Georgios Karachalias. For more details, see their paper.
  • More Backpack improvements. There's a new user-facing syntax which allows multiple modules to be defined a single file, and we're hoping to release at least the ability to publish multiple "units" in a single Cabal file.
  • Support for DWARF based stacktraces [DWARF]. from Peter Wortmann, Arash Rouhani, and Ben Gamari with backtraces from Haskell code.
  • A better LLVM backend [ImprovedLLVMBackend]. We're planning on a major build system change that will ship GHC 8.0 with a pre-baked copy of LLVM 3.7.0, that ships with every major Tier 1 platform.

Upcoming post-8.0 plans

Naturally, there were several things we didn't get around to this cycle, or things which are still in flight and being worked on. (And you can always try to join us if you want something done!)

Libraries, source language, type system

  • A new, type-indexed type representation, data TTypeRep (a :: k). See TypeableT.
  • Support for Type Signature Sections, allowing you to write (:: ty) as a shorthand for (\x -> x :: ty).
  • A (possible) overhaul of GHC's build system to use Shake instead of Make.
  • A DEPRECATED pragma for exports (#4879)

Back-end and runtime system

Lorem ipsum...

Frontend, build system and miscellaneous changes

Lorem ipsum...

Development updates and "Thank You"s

Lorem ipsum...


Last modified 2 years ago Last modified on Nov 4, 2015 3:23:35 AM