.. _release-8-0-2: Release notes for version 8.0.2 =============================== TODO FIXME Highlights ---------- TODO FIXME. Full details ------------ Language ~~~~~~~~ - TODO FIXME. - :ghc-flag:`-XStaticPointers` now allows the body of the ``static`` form to refer to closed local bindings. For instance, this is now permitted: ``f = static x where x = 'a'``. - A bug has been fixed that caused standalone derived ``Ix`` instances to fail for GADTs with exactly one constructor (:ghc-ticket:`12583`). - A bug has been fixed that caused derived ``Show`` instances to fail in the presence of :ghc-flag:`-XRebindableSyntax` and :ghc-flag:`-XOverloadedStrings` (:ghc-ticket:`12688`). Compiler ~~~~~~~~ - The :ghc-flag:`-Wredundant-constraints` flag has been removed from the :ghc-flag:`-Wall` flag set (see :ghc-ticket:`10635`). - The :ghc-flag:`-ddump-cmm` now dumps the result after C-- pipeline pass. Two more flags were added: :ghc-flag:`-ddump-cmm-from-stg` to allow to get the initial cmm from STG-to-C-- code generation and :ghc-flag:`-ddump-cmm-verbose` to obtain the intermediates from all C-- pipeline stages. - The RTS :ghc-flag: `-xb` now reads the base heap address in any base, defaulting to decimal, hexadecimal if the address starts with `0x`, and octal if the address starts with `0`. - Due to an oversight in GHC 8.0.1, the value of the preprocessor macro ``__GLASGOW_HASKELL_LLVM__``, which exposes the LLVM version used by GHC, was no longer an integer. This value is now turned into an integer again, but the formatting is changed to be in line with ``__GLASGOW_HASKELL__`` (:ghc-ticket:`12628`). Runtime system ~~~~~~~~~~~~~~ - The Runtime linker on Windows is once again recognizing POSIX functions under their "deprecated" name. e.g. "strdup" will now be recognizes and internally forwarded to "_strdup". If you have existing code already using the correct names (e.g. _strdup) then this will just continue to work and no change is needed. For more information about how the forwarding is done please see `MSDN `_ . This should now introduce the same behavior both compiled and interpreted. (see :ghc-ticket:`12497`). - Added :ghc-flag:`-fdefer-out-of-scope-variables`, which converts variable out of scope variables errors into warnings. Template Haskell ~~~~~~~~~~~~~~~~ - TODO FIXME. - ``addModFinalizer`` now exposes the local typing environment at the splice point. This allows ``reify`` to see local and top-level definitions in the current declaration group when used as in .. code-block:: none f x = $(addModFinalizer (reify 'x >>= runIO . print) >> [| x |]) TODO FIXME Heading title ~~~~~~~~~~~~~~~~~~~~~~~~ - GHCi now supports two new commands. :ghci-cmd:`:type` ``+d`` performs defaulting on the type before reporting it to the user, and :ghci-cmd:`:type` ``+v`` refrains from instantiating any variables before reporting, which is useful in concert with :ghc-flag:`-XTypeApplications`. .. code-block:: none *X> :type +d length length :: [a] -> Int *X> :set -fprint-explicit-foralls *X> :type length length :: forall {a} {t :: * -> *}. Foldable t => t a -> Int *X> :type +v length length :: forall (t :: * -> *). Foldable t => forall a. t a -> Int Libraries --------- ghc ~~~ - The ``GHC.initGhcMonad`` function no longer installs signal handlers by default. This means that the RTS won't attempt to handle Ctrl-C gracefully. If you would like to use GHC's signal handlers, call ``GHC.installSignalHandlers`` during initialization.