users-guide: Add libraries section to 8.10.1 release notes
[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 Compiler
58 ~~~~~~~~
59
60 - Add new flags :ghc-flag:`-Wunused-record-wildcards` and
61   :ghc-flag:`-Wredundant-record-wildcards`  which warn users when they have
62   redundant or unused uses of a record wildcard match.
63
64 - Calls to `memset` and `memcpy` are now unrolled more aggressively
65   and the produced code is more efficient on `x86_64` with added
66   support for 64-bit `MOV`s. In particular, `setByteArray#` and
67   `copyByteArray#` calls that were not optimized before, now will
68   be. See :ghc-ticket:`16052`.
69
70 Runtime system
71 ~~~~~~~~~~~~~~
72
73 Template Haskell
74 ~~~~~~~~~~~~~~~~
75
76 - The ``Lift`` typeclass is now levity-polymorphic and has a ``liftTyped``
77   method. Previously disallowed instances for unboxed tuples, unboxed sums, an
78   primitive unboxed types have also been added. Finally, the code generated by
79   :ghc-flags:`-XDeriveLift` has been simplified to take advantage of expression
80   quotations.
81
82 ``ghc-prim`` library
83 ~~~~~~~~~~~~~~~~~~~~
84
85 - Add new `bitReverse#` primops that, for a `Word` of 8, 16, 32 or 64 bits,
86   reverse the order of its bits e.g. `0b110001` becomes `0b100011`.
87   These primitives use optimized machine instructions when available.
88
89 ``ghc`` library
90 ~~~~~~~~~~~~~~~
91
92 ``base`` library
93 ~~~~~~~~~~~~~~~~
94
95 Build system
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:   Dependency 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-boot-th/ghc-boot-th.cabal: Internal compiler library
120     libraries/ghc-compact/ghc-compact.cabal: Core library
121     libraries/ghc-heap/ghc-heap.cabal:       GHC heap-walking library
122     libraries/ghc-prim/ghc-prim.cabal:       Core library
123     libraries/haskeline/haskeline.cabal:     Dependency of ``ghci`` executable
124     libraries/hpc/hpc.cabal:                 Dependency of ``hpc`` executable
125     libraries/integer-gmp/integer-gmp.cabal: Core library
126     libraries/libiserv/libiserv.cabal:       Internal compiler library
127     libraries/mtl/mtl.cabal:                 Dependency of ``Cabal`` library
128     libraries/parsec/parsec.cabal:           Dependency of ``Cabal`` library
129     libraries/pretty/pretty.cabal:           Dependency of ``ghc`` library
130     libraries/process/process.cabal:         Dependency of ``ghc`` library
131     libraries/stm/stm.cabal:                 Dependency of ``haskeline`` library
132     libraries/template-haskell/template-haskell.cabal:     Core library
133     libraries/terminfo/terminfo.cabal:       Dependency of ``haskeline`` library
134     libraries/text/text.cabal:               Dependency of ``Cabal`` library
135     libraries/time/time.cabal:               Dependency of ``ghc`` library
136     libraries/transformers/transformers.cabal: Dependency of ``ghc`` library
137     libraries/unix/unix.cabal:               Dependency of ``ghc`` library
138     libraries/Win32/Win32.cabal:             Dependency of ``ghc`` library
139     libraries/xhtml/xhtml.cabal:             Dependency of ``haddock`` executable