wiki:Status/Oct18
# GHC Status Report (November 2018)

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), 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.


### Compiler

 * 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.

### Runtime system

 * Significantly improved Windows support with a new I/O manager (Tamar Christina).

## GHC proposals

Since the launch of the GHC proposals process
(<https://github.com/ghc-proposals/ghc-proposals>), over 171 proposals have
been opened for discussion, 49 have been submitted to the committee and 38 have
been accepted. Recently 

 * Lower precedence for `\{-# UNPACK #-\}`

 * Make rebindable fail work with `OverloadedStrings`

 * Replace `atomicModifyMutVar#`
 
 * Remove the `*` kind syntax (PR #143)

 * Module export deprecation pragmas (PR #134)

 * Allow ScopedTypeVariables to refer to types (PR #128)

 * Type applications in patterns (PR #126)

 * Add more array resizing primitives (PR #121)

 * Deriving Via (PR #120)

 * `UnliftedArray#` (PR #112)

At the time of writing,
10 proposals are under active discussion by the community
(<https://github.com/ghc-proposals/ghc-proposals/pulls?q=is\%3Aopen+is\%3Apr+no\%3Alabel>)
and
9 proposals
(<https://github.com/ghc-proposals/ghc-proposals/pulls?q=is\%3Aopen+is\%3Apr+label\%3A\%22Pending+committee+review\%22>)
are under review by the committee.

## Looking forward: What's hot

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
   fields.

 * 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
   real-world libraries.
   
 * 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
   benchmark suuite.
   
 * 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
   performance.

 * 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
   Dependent Haskell.

 * 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
   REPL.

 * Peter Trommler has been working on improving GHC's portability to non-x86
   platforms.

 * 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 `ghc-devs@haskell.org`. Happy Haskelling!


\FurtherReading

  * GHC website:

    <https://haskell.org/ghc/>

  * GHC users guide:

    <https://downloads.haskell.org/~ghc/master/users_guide/>

  * `ghc-devs` mailing list:

    <https://mail.haskell.org/mailman/listinfo/ghc-devs>

Last modified 5 weeks ago Last modified on Nov 12, 2018 10:13:39 AM