2.1. Version 8.12.1

The significant changes to the various parts of the compiler are listed in the following sections.

2.1.1. Highlights

  • TODO

2.1.2. Full details

2.1.2.1. Language

  • In obscure scenarios, GHC now rejects programs it previously accepted, but with unhelpful types. For example, if (with -XPartialTypeSignatures) you were to write x :: forall (f :: forall a (b :: a -> Type). b _). f _, GHC previously would have accepted x, but its type would have involved the mysterious Any internal type family. Now, GHC rejects, explaining the situation.

2.1.2.2. Compiler

2.1.2.3. GHCi

2.1.2.4. Runtime system

2.1.2.5. Template Haskell

  • Implement the Overloaded Quotations proposal (#246). The type of all quotation forms have now been generalised in terms of a minimal interface necessary for the implementation rather than the overapproximation of the Q monad.
  • Template Haskell quotes now handle fixity declarations in let and where bindings properly. Previously, such fixity declarations would be dropped when quoted due to a Template Haskell bug.
  • The -XTemplateHaskellQuotes extension now allows nested splices as nested splices do not lead directly to compile-time evaluation. (!2288)

2.1.2.6. ghc-prim library

2.1.2.7. ghc library

  • The type of the getAnnotations function has changed to better reflect the fact that it returns two different kinds of annotations, those on names and those on modules:

    getAnnotations :: Typeable a
                   => ([Word8] -> a) -> ModGuts
                   -> CoreM (ModuleEnv [a], NameEnv [a])
    
  • The meaning of the hs_fixds field of HsGroup has changed slightly. It now only contains fixity signatures defined for top-level declarations and class methods defined outside of the class itself. Previously, hs_fixds would also contain fixity signatures for class methods defined inside the class, such as the fixity signature for m in the following example:

    class C a where
      infixl 4 `m`
      m :: a -> a -> a
    

    If you wish to attain the previous behavior of hs_fixds, use the new hsGroupTopLevelFixitySigs function, which collects all top-level fixity signatures, including those for class methods defined inside classes.

2.1.2.8. base library

2.1.2.9. Build system

2.1.3. Included libraries

The package database provided with this distribution also contains a number of packages other than GHC itself. See the changelogs provided with these packages for further change information.

Package Version Reason for inclusion
ghc 8.11.0.20200211 The compiler itself
Cabal 3.2.0.0 Dependency of ghc-pkg utility
Win32 2.6.1.0 Dependency of ghc library
array 0.5.4.0 Dependency of ghc library
base 4.14.0.0 Core library
binary 0.8.7.0 Dependency of ghc library
bytestring 0.10.9.0 Dependency of ghc library
containers 0.6.2.1 Dependency of ghc library
deepseq 1.4.4.0 Dependency of ghc library
directory 1.3.4.0 Dependency of ghc library
filepath 1.4.2.1 Dependency of ghc library
ghc-boot-th 8.11.0.20200211 Internal compiler library
ghc-boot 8.11.0.20200211 Internal compiler library
ghc-compact 0.1.0.0 Core library
ghc-heap 8.11.0.20200211 GHC heap-walking library
ghc-prim 0.6.1 Core library
ghci 8.11.0.20200211 The REPL interface
haskeline 0.8.0.1 Dependency of ghci executable
hpc 0.6.1.0 Dependency of hpc executable
integer-gmp 1.0.2.0 Core library
libiserv 8.11.0.20200211 Internal compiler library
mtl 2.2.2 Dependency of Cabal library
parsec 3.1.14.0 Dependency of Cabal library
pretty 1.1.3.6 Dependency of ghc library
process 1.6.7.0 Dependency of ghc library
stm 2.5.0.0 Dependency of haskeline library
template-haskell 2.16.0.0 Core library
terminfo 0.4.1.4 Dependency of haskeline library
text 1.2.3.1 Dependency of Cabal library
time 1.9.3 Dependency of ghc library
transformers 0.5.6.2 Dependency of ghc library
unix 2.7.2.2 Dependency of ghc library
xhtml 3000.2.2.1 Dependency of haddock executable