... | ... | @@ -24,7 +24,7 @@ consolidation, it also includes a number of new features. |
|
|
- **Indexed Typeable representations.** While GHC has long supported runtime type reflection through the `Typeable` typeclass, its current incarnation requires careful 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 many programs using type reflection. This allows facilities like `Data.Dynamic` to be implemented in a fully type-safe manner. See the [paper](https://research.microsoft.com/en-us/um/people/simonpj/papers/haskell-dynamic/)\] for a description of the proposed interface and the [Wiki](https://ghc.haskell.org/trac/ghc/wiki/Typeable/BenGamari) for current implementation status.
|
|
|
> GHC 8.2 will address this by introducing indexed type representations, leveraging the type-checker to verify many programs using type reflection. This allows facilities like `Data.Dynamic` to be implemented in a fully type-safe manner. See the [paper](https://research.microsoft.com/en-us/um/people/simonpj/papers/haskell-dynamic/)\] for a description of the proposed interface and the [Wiki](https://gitlab.haskell.org/trac/ghc/wiki/Typeable/BenGamari) for current implementation status.
|
|
|
|
|
|
- **Backpack.** Backpack has merged with GHC, Cabal and `cabal-install`, allowing you to write libraries which are parametrized by signatures, letting users decide how to instantiate them at a later point in time. If you want to just play around with the signature language, there is a new major mode `ghc –backpack`; at the Cabal syntax level, there are two new fields `signatures` and `mixins` which permit you to define parametrized packages, and instantiate them in a flexible way. More details are on the Backpack [Wiki page](backpack).
|
|
|
|
... | ... | @@ -33,11 +33,11 @@ consolidation, it also includes a number of new features. |
|
|
>
|
|
|
> While GHC’s current compilation model doesn’t allow arbitrary levity polymorphism, GHC 8.2 enables certain classes of polymorphism which were either disallowed or broken in 8.0. See the [paper](https://www.microsoft.com/en-us/research/publication/levity-polymorphism/) for details.
|
|
|
|
|
|
- **`deriving` strategies.** GHC now provides the programmer with a precise mechanism to distinguish between the three ways to derive typeclass instances: the usual way, the `GeneralizedNewtypeDeriving` way, and the `DeriveAnyClass` way. See the `DerivingStrategies`[Wiki page](https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/DerivingStrategies) for more details.
|
|
|
- **`deriving` strategies.** GHC now provides the programmer with a precise mechanism to distinguish between the three ways to derive typeclass instances: the usual way, the `GeneralizedNewtypeDeriving` way, and the `DeriveAnyClass` way. See the `DerivingStrategies`[Wiki page](https://gitlab.haskell.org/trac/ghc/wiki/Commentary/Compiler/DerivingStrategies) for more details.
|
|
|
|
|
|
- **New classes in `base`.** The `Bifoldable`, and `Bitraversable` typeclasses are now included in the `base` library.
|
|
|
|
|
|
- **Unboxed sums.** GHC 8.2 has a new language extension, `UnboxedSums`, that enables unboxed representation for non-recursive sum types. GHC 8.2 doesn’t use unboxed sums automatically, but the extension comes with new syntax, so users can manually unpack sums. More details can be found in the [Wiki page](https://ghc.haskell.org/trac/ghc/wiki/UnpackedSumTypes).
|
|
|
- **Unboxed sums.** GHC 8.2 has a new language extension, `UnboxedSums`, that enables unboxed representation for non-recursive sum types. GHC 8.2 doesn’t use unboxed sums automatically, but the extension comes with new syntax, so users can manually unpack sums. More details can be found in the [Wiki page](https://gitlab.haskell.org/trac/ghc/wiki/UnpackedSumTypes).
|
|
|
|
|
|
### Runtime system
|
|
|
|
... | ... | @@ -48,7 +48,7 @@ consolidation, it also includes a number of new features. |
|
|
- **More robust DWARF output.** GHC 8.2 will be the first release with reliable support for DWARF debugging information. A number of bugs leading to incorrect debug information for foreign calls have been fixed, meaning it should now be safe to enable debugging information in production builds.
|
|
|
|
|
|
>
|
|
|
> With stable DWARF support comes a number of opportunities for new performance analysis and debugging tools (e.g. statistical profiling, cheap execution stacks). As GHC’s debugging information improves, we expect to see tooling developed to support these applications. See the DWARF status page on the [GHC Wiki](https://ghc.haskell.org/trac/ghc/wiki/DWARF/Status) for further information.
|
|
|
> With stable DWARF support comes a number of opportunities for new performance analysis and debugging tools (e.g. statistical profiling, cheap execution stacks). As GHC’s debugging information improves, we expect to see tooling developed to support these applications. See the DWARF status page on the [GHC Wiki](https://gitlab.haskell.org/trac/ghc/wiki/DWARF/Status) for further information.
|
|
|
|
|
|
- **Better support for NUMA platforms.** Machines with non-uniform memory access costs are becoming more and more common as core counts continue to rise. The runtime system is now better equipped to efficiently run on such systems.
|
|
|
|
... | ... | @@ -60,7 +60,7 @@ consolidation, it also includes a number of new features. |
|
|
|
|
|
### Miscellaneous
|
|
|
|
|
|
- **Compiler Determinism.** GHC 8.0.2 is the first release of GHC which produces deterministic interface files. This helps consumers like Nix and caching build systems, and presents new opportunities for compile-time improvements. See the [Wiki](https://ghc.haskell.org/trac/ghc/wiki/DeterministicBuilds) for details.
|
|
|
- **Compiler Determinism.** GHC 8.0.2 is the first release of GHC which produces deterministic interface files. This helps consumers like Nix and caching build systems, and presents new opportunities for compile-time improvements. See the [Wiki](https://gitlab.haskell.org/trac/ghc/wiki/DeterministicBuilds) for details.
|
|
|
|
|
|
## Development updates and acknowledgments
|
|
|
|
... | ... | |