... | ... | @@ -16,15 +16,15 @@ When we shipped GHC 7.10, we incorporated some major new features - but not with |
|
|
|
|
|
- **Distributed programming, `static` values, and reflection** [\[StaticPointers](static-pointers)\]. Mathieu Boespflug and Facundo Dom nguez at TweagIO completely reimplemented their old proposal for `static` values, primarily intended to support Cloud Haskell, and it was merged into GHC 7.10. The support as it stands should be experimental, but the new implementation is much simpler and easier to understand. This is part of a larger project involving runtime reflection [\[Typeable](typeable)\] and distributed progmraming [\[DistributedHaskell](distributed-haskell)\],
|
|
|
|
|
|
- **Binary literals** ([\#9224](https://gitlab.haskell.org/ghc/ghc/issues/9224)) - Herbert Valerio Riedel implemented the `-XBinaryLiterals` language extension which finally closes the syntax gap relative to other languages which allow to write base-2 literals such as `0b11001001`.
|
|
|
- **Binary literals** (#9224) - Herbert Valerio Riedel implemented the `-XBinaryLiterals` language extension which finally closes the syntax gap relative to other languages which allow to write base-2 literals such as `0b11001001`.
|
|
|
|
|
|
- **Partial type signatures** [\[PartialTypeSignatures](partial-type-signatures)\]. Thomas Winant and Dominique Devriese implemented partial type signatures for GHC. A partial type signature is a type signature that can contain *wildcards*, written as underscores. These wildcards can be types unknown to the programmer or types he doesn't care to annotate. The type checker will use the annotated parts of the partial type signature to type check the program, and infer the types for the wildcards. A wildcard can also occur at the end of the constraints part of a type signature, which indicates that an arbitrary number of extra constraints may be inferred. Whereas `-XTypedHoles` allow holes in your terms, `-XPartialTypeSignatures` allow holes in your types!
|
|
|
|
|
|
- **Preliminary backpack support** - Edward Yang has been working tirelessly on support for Backpack features in GHC. GHC 7.10 shipped with some preliminary code to support it, including signature file support and some Cabal support, but we have a new plan for GHC 7.12, with new syntax and a new implementation strategy. You can find out more by checking out the algorithm specification [https://github.com/ghc/ghc/blob/master/docs/backpack/algorithm.pdf](https://github.com/ghc/ghc/blob/master/docs/backpack/algorithm.pdf) . Work is currently proceeding on the ghc-backpack branch [ https://github.com/ezyang/ghc/tree/ghc-backpack](https://github.com/ezyang/ghc/tree/ghc-backpack) \[Backpack\]
|
|
|
|
|
|
- **Reimplemented GMP-based `Integer` backend ([\#9281](https://gitlab.haskell.org/ghc/ghc/issues/9281))** - Herbert Valerio Riedel completely reimplemented the `integer-gmp` backend, and is now shipping it on all Tier 1 platforms. This should make interoperation with GMP (and C libraries that depend on GMP) radically simpler, while being easier to maintain.
|
|
|
- **Reimplemented GMP-based `Integer` backend (#9281)** - Herbert Valerio Riedel completely reimplemented the `integer-gmp` backend, and is now shipping it on all Tier 1 platforms. This should make interoperation with GMP (and C libraries that depend on GMP) radically simpler, while being easier to maintain.
|
|
|
|
|
|
- **DWARF support for debugging symbols** [\[DWARF](dwarf)\]. Peter Wortmann has gotten the first piece of his long-term work in place: support for GHC to emit DWARF symbols to object files, so debuggers can utilize it. The preliminary support works for simple cases, but is very experimental! (Case in point: it was broken in 7.10.1 due to [\#10236](https://gitlab.haskell.org/ghc/ghc/issues/10236).) \[DWARF\]
|
|
|
- **DWARF support for debugging symbols** [\[DWARF](dwarf)\]. Peter Wortmann has gotten the first piece of his long-term work in place: support for GHC to emit DWARF symbols to object files, so debuggers can utilize it. The preliminary support works for simple cases, but is very experimental! (Case in point: it was broken in 7.10.1 due to #10236.) \[DWARF\]
|
|
|
|
|
|
- **API Annotations and other GHC API changes** [\[ApiAnnotations](api-annotations)\]. Alan Zimmerman has added API Annotations to the AST, so that the precise layout of the original source code can be regenerated. An initial library making use of these to fully round trip Haskell source code is here [https://github.com/alanz/ghc-exactprint](https://github.com/alanz/ghc-exactprint). This will be updated shortly after 7.10.2 comes out, and then used by HaRe to handle the low level AST manipulation. Also, the landmines have been removed from the AST, so that traversals over it no longer need to tiptoe around embedded `panic` values. Andrew Gibiansky has added more parser entry points, so that tools can now parse fragments of source code [\[GhcApi](ghc-api)\]
|
|
|
|
... | ... | @@ -61,13 +61,13 @@ The current plan is to steam forward to the end of the year, and begin to get re |
|
|
|
|
|
- **CPU-specific optimizations** - Austin Seipp is currently investigating the implementation of CPU-specific optimisations for GHC, including new `-march` and `-mcpu` flags to adjust tuning for a particular processor. Right now, there is some preliminary work towards optimizing copies on later Intel machines. There's interest in expanding this further as well.
|
|
|
|
|
|
- **Changes to static closures for faster garbage collection** - Edward Yang is working on an overhaul of how static closures represented at runtime to eliminate some expensive memory dereferences in the GC hotpath. The initial results are encouraging: these changes can result in an up to 8% in the runtime of some GC heavy benchmarks, see [\#8199](https://gitlab.haskell.org/ghc/ghc/issues/8199).
|
|
|
- **Changes to static closures for faster garbage collection** - Edward Yang is working on an overhaul of how static closures represented at runtime to eliminate some expensive memory dereferences in the GC hotpath. The initial results are encouraging: these changes can result in an up to 8% in the runtime of some GC heavy benchmarks, see #8199.
|
|
|
|
|
|
- **DWARF-based stack tracing** [\[DWARF](dwarf)\]. Peter Wortmann and Arash Rouhani (with support from the Simons) are working on enabling GHC to now use the DWARF debugging information it generates. This should allow us to obtain stack traces and do profiling without the need for instrumentation, directly from Haskell executables.
|
|
|
|
|
|
- **An Improved LLVM Backend** [\[ImprovedLLVMBackend](improved-llvm-backend)\] that ships with every major Tier 1 platform.
|
|
|
|
|
|
- **Native code generator for PowerPC 64-bit** [\[PPC64-NCG](https://phabricator.haskell.org/D629)\]. Peter Trommler has been working on an extension of the PowerPC native code backend to support 64-bit Linux systems. There are two 64-bit ELF ABI versions. The implementation of ABI version 1, which is mostly used by big endian systems, is fairly stable and support for ABI version 2, which is used by systems with POWER8 processors running in little endian mode, is currently under testing. See [\#9863](https://gitlab.haskell.org/ghc/ghc/issues/9863).
|
|
|
- **Native code generator for PowerPC 64-bit** [\[PPC64-NCG](https://phabricator.haskell.org/D629)\]. Peter Trommler has been working on an extension of the PowerPC native code backend to support 64-bit Linux systems. There are two 64-bit ELF ABI versions. The implementation of ABI version 1, which is mostly used by big endian systems, is fairly stable and support for ABI version 2, which is used by systems with POWER8 processors running in little endian mode, is currently under testing. See #9863.
|
|
|
|
|
|
## Frontend, build-system, and miscellaneous changes
|
|
|
|
... | ... | |