Add GHCi :instances command
[ghc.git] / docs / users_guide / 8.10.1-notes.rst
1 .. _release-8-10-1:
2
3 Release notes for version 8.10.1
4 ================================
5
6 The significant changes to the various parts of the compiler are listed in the
7 following sections.
8
9
10 Highlights
11 ----------
12
13 Full details
14 ------------
15
16 Language
17 ~~~~~~~~
18
19 - Kind variables are no longer implicitly quantified when an explicit ``forall`` is used, see
20   `GHC proposal #24
21   <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0024-no-kind-vars.rst>`__.
22   :ghc-flag:`-Wimplicit-kind-vars` is now obsolete.
23
24 - Kind variables are no longer implicitly quantified in constructor declarations: ::
25
26     data T a        = T1 (S (a :: k) | forall (b::k). T2 (S b)  -- no longer accepted
27     data T (a :: k) = T1 (S (a :: k) | forall (b::k). T2 (S b)  -- still accepted
28
29 - Implicitly quantified kind variables are no longer put in front of other variables: ::
30
31     f :: Proxy (a :: k) -> Proxy (b :: j)
32
33     ghci> :t +v f   -- old order:
34     f :: forall k j (a :: k) (b :: j). Proxy a -> Proxy b
35
36     ghci> :t +v f   -- new order:
37     f :: forall k (a :: k) j (b :: j). Proxy a -> Proxy b
38
39   This is a breaking change for users of :extension:`TypeApplications`.
40
41 - In type synonyms and type family equations, free variables on the RHS are no longer
42   implicitly quantified unless used in an outermost kind annotation: ::
43
44     type T = Just (Nothing :: Maybe a)         -- no longer accepted
45     type T = Just Nothing :: Maybe (Maybe a)   -- still accepted
46
47 - GHC now parses visible, dependent quantifiers (as proposed in
48   `GHC proposal 35
49   <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0035-forall-arrow.rst>`__),
50   such as the following: ::
51
52     data Proxy :: forall k -> k -> Type
53
54   See the `section on explicit kind quantification
55   <#explicit-kind-quantification>`__ for more details.
56
57 - Type variables in associated type family default declarations can now be
58   explicitly bound with a ``forall`` when :extension:`ExplicitForAll` is
59   enabled, as in the following example: ::
60
61     class C a where
62       type T a b
63       type forall a b. T a b = Either a b
64
65   This has a couple of knock-on consequences:
66
67   - Wildcard patterns are now permitted on the left-hand sides of default
68     declarations, whereas they were rejected by previous versions of GHC.
69
70   - It used to be the case that default declarations supported occurrences of
71     left-hand side arguments with higher-rank kinds, such as in the following
72     example: ::
73
74       class C a where
75         type T a (f :: forall k. k -> Type)
76         type T a (f :: forall k. k -> Type) = f Int
77
78     This will no longer work unless ``f`` is explicitly quantified with a
79     ``forall``, like so: ::
80
81       class C a where
82         type T a (f :: forall k. k -> Type)
83         type forall a (f :: forall k. k -> Type).
84              T a f = f Int
85
86 Compiler
87 ~~~~~~~~
88
89 - Add new flags :ghc-flag:`-Wunused-record-wildcards` and
90   :ghc-flag:`-Wredundant-record-wildcards`  which warn users when they have
91   redundant or unused uses of a record wildcard match.
92
93 - Calls to `memset` and `memcpy` are now unrolled more aggressively
94   and the produced code is more efficient on `x86_64` with added
95   support for 64-bit `MOV`s. In particular, `setByteArray#` and
96   `copyByteArray#` calls that were not optimized before, now will
97   be. See :ghc-ticket:`16052`.
98 - GHC's runtime linker no longer uses global state. This allows programs
99   that use the GHC API to safely use multiple GHC sessions in a single 
100   process, as long as there are no native dependencies that rely on
101   global state.
102
103 - When loading modules that use :extension:`UnboxedTuples` into GHCi,
104   it will now automatically enable `-fobject-code` for these modules
105   and all modules they depend on. Before this change, attempting to
106   load these modules into the interpreter would just fail, and the
107   only convenient workaround was to enable `-fobject-code` for all
108   modules.
109
110 GHCi
111 ~~~~
112
113 - Added a command `:instances` to show the class instances available for a type.
114
115 Runtime system
116 ~~~~~~~~~~~~~~
117
118 Template Haskell
119 ~~~~~~~~~~~~~~~~
120
121 - The ``Lift`` typeclass is now levity-polymorphic and has a ``liftTyped``
122   method. Previously disallowed instances for unboxed tuples, unboxed sums, an
123   primitive unboxed types have also been added. Finally, the code generated by
124   :ghc-flag:`-XDeriveLift` has been simplified to take advantage of expression
125   quotations.
126
127 ``ghc-prim`` library
128 ~~~~~~~~~~~~~~~~~~~~
129
130 - Add new `bitReverse#` primops that, for a `Word` of 8, 16, 32 or 64 bits,
131   reverse the order of its bits e.g. `0b110001` becomes `0b100011`.
132   These primitives use optimized machine instructions when available.
133
134 ``ghc`` library
135 ~~~~~~~~~~~~~~~
136
137 ``base`` library
138 ~~~~~~~~~~~~~~~~
139
140 Build system
141 ~~~~~~~~~~~~
142
143 Included libraries
144 ------------------
145
146 The package database provided with this distribution also contains a number of
147 packages other than GHC itself. See the changelogs provided with these packages
148 for further change information.
149
150 .. ghc-package-list::
151
152     libraries/array/array.cabal:             Dependency of ``ghc`` library
153     libraries/base/base.cabal:               Core library
154     libraries/binary/binary.cabal:           Dependency of ``ghc`` library
155     libraries/bytestring/bytestring.cabal:   Dependency of ``ghc`` library
156     libraries/Cabal/Cabal/Cabal.cabal:       Dependency of ``ghc-pkg`` utility
157     libraries/containers/containers.cabal:   Dependency of ``ghc`` library
158     libraries/deepseq/deepseq.cabal:         Dependency of ``ghc`` library
159     libraries/directory/directory.cabal:     Dependency of ``ghc`` library
160     libraries/filepath/filepath.cabal:       Dependency of ``ghc`` library
161     compiler/ghc.cabal:                      The compiler itself
162     libraries/ghci/ghci.cabal:               The REPL interface
163     libraries/ghc-boot/ghc-boot.cabal:       Internal compiler library
164     libraries/ghc-boot-th/ghc-boot-th.cabal: Internal compiler library
165     libraries/ghc-compact/ghc-compact.cabal: Core library
166     libraries/ghc-heap/ghc-heap.cabal:       GHC heap-walking library
167     libraries/ghc-prim/ghc-prim.cabal:       Core library
168     libraries/haskeline/haskeline.cabal:     Dependency of ``ghci`` executable
169     libraries/hpc/hpc.cabal:                 Dependency of ``hpc`` executable
170     libraries/integer-gmp/integer-gmp.cabal: Core library
171     libraries/libiserv/libiserv.cabal:       Internal compiler library
172     libraries/mtl/mtl.cabal:                 Dependency of ``Cabal`` library
173     libraries/parsec/parsec.cabal:           Dependency of ``Cabal`` library
174     libraries/pretty/pretty.cabal:           Dependency of ``ghc`` library
175     libraries/process/process.cabal:         Dependency of ``ghc`` library
176     libraries/stm/stm.cabal:                 Dependency of ``haskeline`` library
177     libraries/template-haskell/template-haskell.cabal:     Core library
178     libraries/terminfo/terminfo.cabal:       Dependency of ``haskeline`` library
179     libraries/text/text.cabal:               Dependency of ``Cabal`` library
180     libraries/time/time.cabal:               Dependency of ``ghc`` library
181     libraries/transformers/transformers.cabal: Dependency of ``ghc`` library
182     libraries/unix/unix.cabal:               Dependency of ``ghc`` library
183     libraries/Win32/Win32.cabal:             Dependency of ``ghc`` library
184     libraries/xhtml/xhtml.cabal:             Dependency of ``haddock`` executable