... | ... | @@ -25,16 +25,16 @@ Very tentative: Release candidate by **mid-February 2017**. Release in **mid-Apr |
|
|
|
|
|
See [Libraries](status/ghc-8.2.1/libraries)
|
|
|
|
|
|
## Release highlights
|
|
|
## Release highlights (planned)
|
|
|
|
|
|
|
|
|
Below are the major highlights of 8.2.
|
|
|
|
|
|
### Compile time improvements
|
|
|
|
|
|
- Discard coercions [\#8095](https://gitlab.haskell.org//ghc/ghc/issues/8095)
|
|
|
- Discard coercions ([\#8095](https://gitlab.haskell.org//ghc/ghc/issues/8095))
|
|
|
|
|
|
### Front end changes
|
|
|
### Front-end changes
|
|
|
|
|
|
- **Indexed `Typeable` representations**[Typeable/BenGamari](typeable/ben-gamari) (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.
|
|
|
|
... | ... | @@ -43,12 +43,7 @@ Below are the major highlights of 8.2. |
|
|
|
|
|
- **Levity polymorphism**. Richard E is actively involved in consolidating the implementation of levity polymorphism; see [LevityPolymorphism](levity-polymorphism). This should include resolving the `Constraint` vs `*` debate [\#11715](https://gitlab.haskell.org//ghc/ghc/issues/11715).
|
|
|
|
|
|
- **Backpack** is targeting to be merged in GHC 8.2. More to come here. (Edward Z Yang)
|
|
|
|
|
|
- **Deriving**:
|
|
|
|
|
|
- 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](https://gitlab.haskell.org//ghc/ghc/issues/10598).
|
|
|
- **Backpack** (Edward Z Yang) is targeting to be merged in GHC 8.2. More to come here. See the tickets with the [ backpack](https://ghc.haskell.org/trac/ghc/query?status=!closed&keywords=~backpack) keyword for current status.
|
|
|
|
|
|
- **Exhaustiveness checking**
|
|
|
|
... | ... | @@ -61,40 +56,47 @@ Below are the major highlights of 8.2. |
|
|
|
|
|
### Back-end and runtime system
|
|
|
|
|
|
- **Compact regions** (Giovanni Campagna, Edward Yang, [ Phab:D1264](https://phabricator.haskell.org/D1264), [ paper](http://ezyang.com/papers/ezyang15-cnf.pdf)). 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. There is also a follow up patch by Simon Marlow, [ Phab:D2751](https://phabricator.haskell.org/D2751), which substantially improves over our original implementation.
|
|
|
|
|
|
- **Refactoring and improvements to the cost-center profiler** (Ben Gamari, [ Phab:D1722](https://phabricator.haskell.org/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.
|
|
|
- **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 - TODOinformation 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](https://ghc.haskell.org/trac/ghc/wiki/DWARF/80Status) for futher information.
|
|
|
|
|
|
- **Support for NUMA systems** (Simon Marlow, [ in-progress](https://github.com/simonmar/ghc/tree/numa)). The aim is to reduce the number of remote memory accesses for multi-socket systems that have a mixture of local and remote memory.
|
|
|
- The [improved LLVM backend plan](improved-llvm-backend) plan didn't make the cut for 8.0, but will for 8.2 (Austin Seipp)
|
|
|
|
|
|
- **Experimental changes to the scheduler** (Simon Marlow, [ in progress](https://github.com/simonmar/ghc/commit/7e05ec18b4eda8d97e37015d415e627353de6b50)) that enable the number of threads used for GC to be lower than the `-N` setting.
|
|
|
- **Live streaming of event-log data** ([ Phab:D2522](https://phabricator.haskell.org/D2522))
|
|
|
|
|
|
- **Improved idle CPU usage**: A long-standing regression ([\#11965](https://gitlab.haskell.org//ghc/ghc/issues/11965)) resulting in unnecessary wake-ups in an otherwise idle program was fixed. This should lower CPU utilization and improve power consumption for some programs.
|
|
|
### Build system and miscellaneous changes
|
|
|
|
|
|
- The [improved LLVM backend plan](improved-llvm-backend) plan didn't make the cut for 8.0, but will for 8.2 (Austin Seipp)
|
|
|
- Consolidate non-determinism changes (Bartosz).
|
|
|
|
|
|
- **Live streaming of event-log data** ([ Phab:D2522](https://phabricator.haskell.org/D2522))
|
|
|
### Landed in `master` branch
|
|
|
|
|
|
### Library changes
|
|
|
#### Front-end changes
|
|
|
|
|
|
- Merge `Bifoldable` and `Bitraversable` into `base`, addressing [\#10448](https://gitlab.haskell.org//ghc/ghc/issues/10448) (Edward Kmett, Ryan Scott)
|
|
|
- **Deriving**:
|
|
|
|
|
|
### Build system and miscellaneous changes
|
|
|
- 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](https://gitlab.haskell.org//ghc/ghc/issues/10598).
|
|
|
|
|
|
- ~~New Shake-based build system, `hadrian`, will be merged. (Andrey Mokhov)~~ (I, JMCT, spoke with Andrey and we’re now aiming for shortly after 8.2)
|
|
|
#### Back-end and runtime system
|
|
|
|
|
|
- Deterministic builds [DeterministicBuilds](deterministic-builds). Given the same environment, file and flags produce ABI compatible binaries. (Bartosz Nitka, in-progress)
|
|
|
- **Compact regions** (Giovanni Campagna, Edward Yang, [ Phab:D1264](https://phabricator.haskell.org/D1264), [ paper](http://ezyang.com/papers/ezyang15-cnf.pdf)). 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. There is also a follow up patch by Simon Marlow, [ Phab:D2751](https://phabricator.haskell.org/D2751), which substantially improves over our original implementation.
|
|
|
|
|
|
- Consolidate non-determinism changes (Bartosz).
|
|
|
- **Refactoring and improvements to the cost-center profiler** (Ben Gamari, [ Phab:D1722](https://phabricator.haskell.org/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.
|
|
|
|
|
|
### Landed in `master` branch
|
|
|
- **Support for NUMA systems** (Simon Marlow, [ in-progress](https://github.com/simonmar/ghc/tree/numa)). The aim is to reduce the number of remote memory accesses for multi-socket systems that have a mixture of local and remote memory.
|
|
|
|
|
|
- TODO
|
|
|
- **Experimental changes to the scheduler** (Simon Marlow, [ in progress](https://github.com/simonmar/ghc/commit/7e05ec18b4eda8d97e37015d415e627353de6b50)) that enable the number of threads used for GC to be lower than the `-N` setting.
|
|
|
|
|
|
- **Improved idle CPU usage**: A long-standing regression ([\#11965](https://gitlab.haskell.org//ghc/ghc/issues/11965)) resulting in unnecessary wake-ups in an otherwise idle program was fixed. This should lower CPU utilization and improve power consumption for some programs.
|
|
|
|
|
|
#### Library changes
|
|
|
|
|
|
- Merge `Bifoldable` and `Bitraversable` into `base`, addressing [\#10448](https://gitlab.haskell.org//ghc/ghc/issues/10448) (Edward Kmett, Ryan Scott)
|
|
|
|
|
|
#### Build system and miscellaneous changes ===
|
|
|
|
|
|
- Deterministic builds [DeterministicBuilds](deterministic-builds). Given the same environment, file and flags produce ABI compatible binaries. (Bartosz Nitka, in-progress)
|
|
|
|
|
|
## Tickets marked merge with no milestone
|
|
|
|
... | ... | |