.. _release-8-12-1: Version 8.12.1 ============== The significant changes to the various parts of the compiler are listed in the following sections. Highlights ---------- - TODO Full details ------------ 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. Compiler ~~~~~~~~ GHCi ~~~~ Runtime system ~~~~~~~~~~~~~~ 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) ``ghc-prim`` library ~~~~~~~~~~~~~~~~~~~~ ``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. ``base`` library ~~~~~~~~~~~~~~~~ Build system ~~~~~~~~~~~~ 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. .. ghc-package-list:: libraries/array/array.cabal: Dependency of ``ghc`` library libraries/base/base.cabal: Core library libraries/binary/binary.cabal: Dependency of ``ghc`` library libraries/bytestring/bytestring.cabal: Dependency of ``ghc`` library libraries/Cabal/Cabal/Cabal.cabal: Dependency of ``ghc-pkg`` utility libraries/containers/containers/containers.cabal: Dependency of ``ghc`` library libraries/deepseq/deepseq.cabal: Dependency of ``ghc`` library libraries/directory/directory.cabal: Dependency of ``ghc`` library libraries/filepath/filepath.cabal: Dependency of ``ghc`` library compiler/ghc.cabal: The compiler itself libraries/ghci/ghci.cabal: The REPL interface libraries/ghc-boot/ghc-boot.cabal: Internal compiler library libraries/ghc-boot-th/ghc-boot-th.cabal: Internal compiler library libraries/ghc-compact/ghc-compact.cabal: Core library libraries/ghc-heap/ghc-heap.cabal: GHC heap-walking library libraries/ghc-prim/ghc-prim.cabal: Core library libraries/haskeline/haskeline.cabal: Dependency of ``ghci`` executable libraries/hpc/hpc.cabal: Dependency of ``hpc`` executable libraries/integer-gmp/integer-gmp.cabal: Core library libraries/libiserv/libiserv.cabal: Internal compiler library libraries/mtl/mtl.cabal: Dependency of ``Cabal`` library libraries/parsec/parsec.cabal: Dependency of ``Cabal`` library libraries/pretty/pretty.cabal: Dependency of ``ghc`` library libraries/process/process.cabal: Dependency of ``ghc`` library libraries/stm/stm.cabal: Dependency of ``haskeline`` library libraries/template-haskell/template-haskell.cabal: Core library libraries/terminfo/terminfo.cabal: Dependency of ``haskeline`` library libraries/text/text.cabal: Dependency of ``Cabal`` library libraries/time/time.cabal: Dependency of ``ghc`` library libraries/transformers/transformers.cabal: Dependency of ``ghc`` library libraries/unix/unix.cabal: Dependency of ``ghc`` library libraries/Win32/Win32.cabal: Dependency of ``ghc`` library libraries/xhtml/xhtml.cabal: Dependency of ``haddock`` executable