1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
.. _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 <https://msdn.microsoft.com/en-us/library/ms235384.aspx>`_ . 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.
|