summaryrefslogtreecommitdiff
path: root/docs/users_guide/8.0.2-notes.rst
blob: c8e76ed456559663dec355046cd25e5da567d683 (plain)
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.