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