04ff09c88840133c707c872e07163f87f5f3ec25
[ghc.git] / docs / users_guide / 8.6.1-notes.rst
1 .. _release-8-6-1:
2
3 Release notes for version 8.6.1
4 ===============================
5
6 The significant changes to the various parts of the compiler are listed in the
7 following sections. There have also been numerous bug fixes and performance
8 improvements over the 8.4.1 release.
9
10
11 Highlights
12 ----------
13
14 The highlights, since the 8.4.1 release, are:
15
16 - Many, many bug fixes.
17
18
19 Full details
20 ------------
21
22 Language
23 ~~~~~~~~
24 - GHC now permits the use of a wildcard type as the context of a standalone
25   ``deriving`` declaration with the use of the
26   :extension:`PartialTypeSignatures` language extension. For instance, this
27   declaration: ::
28
29     deriving instance _ => Eq (Foo a)
30
31   Denotes a derived ``Eq (Foo a)`` instance, where the context is inferred in
32   much the same way as ordinary ``deriving`` clauses do.
33   See :ref:`partial-type-signatures`.
34
35 - Data declarations with empty ``where`` clauses are no longer valid without the
36   extension :extension:`GADTSyntax` enabled. For instance, consider the
37   following, ::
38
39       data T where
40
41   The grammar is invalid in Haskell2010. Previously it could be compiled successfully
42   without ``GADTs``. As of GHC 8.6.1, this is a parse error.
43
44 - Incomplete patterns warning :ghc-flag:`-Wincomplete-patterns` is extended to
45   guards in pattern bindings and ``if`` alternatives of :extension:`MultiWayIf`.
46   For instance, consider the following, ::
47
48       foo :: Bool -> Int
49       foo b = if | b -> 1
50
51   In GHC 8.6.1, it will raise the warning: ::
52
53       <interactive>:2:12: warning: [-Wincomplete-patterns]
54           Pattern match(es) are non-exhaustive
55           In a multi-way if alternative:
56               Guards do not cover entire pattern space
57
58   See :ghc-ticket:`14773`.
59
60 Compiler
61 ~~~~~~~~
62
63 - GHC now no longer adds the current file's directory as a general include path
64   calling the C compiler. Instead we use :ghc-flag:`-iquote` to only add it as
65   an include path for `#include ""`. See :ghc-ticket:`14312`.
66
67 - GHC now supports British spelling of :extension:`GeneralizedNewtypeDeriving`.
68
69 - The code-generation effects of :ghc-flag:`-dynamic` can now be
70   enabled independently by the flag
71   :ghc-flag:`-fexternal-dynamic-refs`. If you don't know why you might
72   need this, you don't need it.
73
74 Runtime system
75 ~~~~~~~~~~~~~~
76
77 - The GHC runtime linker now prefers user shared libraries above system ones.
78   When extra search directories are specified these are searched before anything
79   else. This fixes ``iuuc`` on Windows given the proper search directories (e.g
80   ``-L/mingw64/lib``).
81
82         - The GHC runtime linker now uses ``LIBRARY_PATH`` and the runtime loader now also
83           searches ``LD_LIBRARY_PATH``.
84
85 Template Haskell
86 ~~~~~~~~~~~~~~~~
87
88
89 ``ghc`` library
90 ~~~~~~~~~~~~~~~
91
92
93 ``base`` library
94 ~~~~~~~~~~~~~~~~
95
96 - ``($!)`` is now representation-polymorphic like ``($)``.
97
98 - The module ``Data.Functor.Contravariant`` has been moved from the
99   ``contravariant`` package into base. All the other modules in
100   ``contravariant`` (``Data.Functor.Contravariant.Divisible``, etc.)
101   have not been moved to ``base``, and they still reside in ``contravariant``.
102
103
104 Build system
105 ~~~~~~~~~~~~
106
107
108 Included libraries
109 ------------------
110
111 The package database provided with this distribution also contains a number of
112 packages other than GHC itself. See the changelogs provided with these packages
113 for further change information.
114
115 .. ghc-package-list::
116
117     libraries/array/array.cabal:             Dependency of ``ghc`` library
118     libraries/base/base.cabal:               Core library
119     libraries/binary/binary.cabal:           Dependency of ``ghc`` library
120     libraries/bytestring/bytestring.cabal:   Deppendency of ``ghc`` library
121     libraries/Cabal/Cabal/Cabal.cabal:       Dependency of ``ghc-pkg`` utility
122     libraries/containers/containers.cabal:   Dependency of ``ghc`` library
123     libraries/deepseq/deepseq.cabal:         Dependency of ``ghc`` library
124     libraries/directory/directory.cabal:     Dependency of ``ghc`` library
125     libraries/filepath/filepath.cabal:       Dependency of ``ghc`` library
126     compiler/ghc.cabal:                      The compiler itself
127     libraries/ghci/ghci.cabal:               The REPL interface
128     libraries/ghc-boot/ghc-boot.cabal:       Internal compiler library
129     libraries/ghc-compact/ghc-compact.cabal: Core library
130     libraries/ghc-prim/ghc-prim.cabal:       Core library
131     libraries/haskeline/haskeline.cabal:     Dependency of ``ghci`` executable
132     libraries/hpc/hpc.cabal:                 Dependency of ``hpc`` executable
133     libraries/integer-gmp/integer-gmp.cabal: Core library
134     libraries/mtl/mtl.cabal:                 Dependency of ``Cabal`` library
135     libraries/parsec/parsec.cabal:           Dependency of ``Cabal`` library
136     libraries/process/process.cabal:         Dependency of ``ghc`` library
137     libraries/template-haskell/template-haskell.cabal:     Core library
138     libraries/text/text.cabal:               Dependency of ``Cabal`` library
139     libraries/time/time.cabal:               Dependency of ``ghc`` library
140     libraries/transformers/transformers.cabal: Dependency of ``ghc`` library
141     libraries/unix/unix.cabal:               Dependency of ``ghc`` library
142     libraries/Win32/Win32.cabal:             Dependency of ``ghc`` library
143     libraries/xhtml/xhtml.cabal:             Dependency of ``haddock`` executable