wiki:Status/GHC-8.0.2

Version 2 (modified by bgamari, 4 years ago) (diff)

--

GHC plans for 8.0.2

This page is our road-map for what will be in 8.0.2.

  • We hope to incorporate all the "Landed" and "In-flight" stuff under "Release highlights" below.
  • We'll include (or at least review) all patches in tickets in "Status: patch" below.
  • We will address all the tickets under "Status: new" below with "highest" or "high" priority. We love help to do more, but there are far too many "normal" tickets to make any promises.

If you believe your favourite thing belongs in this list, but isn't there, please yell. If it's not in the road map, it probably won't get done. Without a lot of support, many things in the road map won't get done either, so we need your help!

Dates

Very tentative: Release candidate by mid-August 2016. Release candidate three available in early April 2016, release in mid-October 2016.

Libraries Status

See Libraries?

Release highlights

Below are the major highlights of 8.0.2.

  • Indexed Typeable representations Typeable/BenGamari (Ben Gamari, Simon Peyton Jones, et al). While GHC has long supported runtime type reflection through the Typeable typeclass, its current incarnation requires care to use, providing little in the way of type-safety. For this reason the implementation of types like Data.Dynamic must be implemented in terms of unsafeCoerce with no compiler verification.

GHC 8.2 will address this by introducing indexed type representations, leveraging the type-checker to verify programs using type reflection. This allows facilities like Data.Dynamic to be implemented in a fully type-safe manner. See the paper for an description of the proposal and the Wiki for the current status of the implementation.

  • Backpack is targeting to be merged in GHC 8.2. More to come here. (Edward Z Yang)
  • Merge Bifoldable and Bitraversable into base (Edward Kmett, Ryan Scott)
  • Generalize the deriving algorithms for Eq, Functor, etc. to be able to derive the data types in Data.Functor.Classes (Eq1, Eq2, etc.), Bifunctor, Bifoldable, and Bitraversable (Ryan Scott)
  • Deriving strategies (Ryan Scott): grant users the ability to choose explicitly how a class should be derived (using a built-in algorithm, GeneralizedNewtypeDeriving, DeriveAnyClass, or otherwise), addressing #10598.
  • Exhaustiveness checking for EmptyCases (Phab:D2105), addressing #10746.

Back-end and runtime system

  • Compact regions (Giovanni Campagna, Edward Yang, Phab:D1264, paper). This runtime system feature allows a referentially "closed" set of heap objects to be collected into a "compact region", allowing cheaper garbage collection, heap-object sharing between processes, and the possibility of inexpensive serialization.
  • Refactoring and improvements to the cost-center profiler (Ben Gamari, Phab:D1722): Allow heap profiler samples to be directed to the GHC eventlog, allowing correlation with other program events, enabling easier analysis by tooling and eventual removal of the old, rather crufty .hp profile format.
  • Further improvements to debugging information (Ben Gamari): There are still a number of outstanding issues with GHC's DWARF implementation, some of which even carry the potential to crash the runtime system during stacktrace collection. GHC 8.2 will hopefully have these issues resolved, allowing debugging information to be used by end-user code in production.

With stable stack unwinding support comes a number of opportunities for new serial and parallel performance analysis tools (e.g. statistical profiling) and debugging. As GHC's debugging information improves, we expect to see tooling developed to support these applications. See the DWARF status page for futher information.

  • Support for NUMA systems (Simon Marlow, in-progress). The aim is to reduce the number of remote memory accesses for multi-socket systems that have a mixture of local and remote memory.
  • Experimental changes to the scheduler (Simon Marlow, in progress) that enable the number of threads used for GC to be lower than the -N setting.

Frontend, build system and miscellaneous changes

  • New Shake-based build system, hadrian, will be merged. (Andrey Mokhov)
  • The improved LLVM backend plan plan didn't make the cut for 8.0, but will for 8.2 (Austin Seipp)
  • Deterministic builds DeterministicBuilds. Given the same environment, file and flags produce ABI compatible binaries. (Bartosz Nitka, in-progress)

Landed in ghc-8.0 branch

  • TODO

Tickets marked merge with no milestone

Ticket Type Summary Priority Owner
No tickets found

Tickets slated for 8.0.2

merge/patch/upstream

new

Ticket Type Summary Priority Owner
No tickets found

infoneeded

Ticket Type Summary Priority Owner
No tickets found