Update release notes for type sigs in TH patterns patch
[ghc.git] / docs / users_guide / 8.2.1-notes.rst
1 .. _release-8-2-1:
2
3 Release notes for version 8.2.1
4 ===============================
5
6 The significant changes to the various parts of the compiler are listed
7 in the following sections. There have also been numerous bug fixes and
8 performance improvements over the 8.0 branch.
9
10 Highlights
11 ----------
12
13 The highlights since the 8.0 branch are:
14
15 - TODO FIXME
16 - SCC annotations can now be used for declarations.
17
18 Full details
19 ------------
20
21 Language
22 ~~~~~~~~
23
24 -  TODO FIXME.
25
26 - Pattern synonym signatures can now be applied to multiple patterns, just like
27   value-level binding signatures. See :ref:`patsyn-typing` for details.
28
29 Compiler
30 ~~~~~~~~
31
32 -  TODO FIXME.
33
34 - Old profiling flags ``-auto-all``, ``-auto``, and ``-caf-all`` are deprecated
35   and their usage provokes a compile-time warning.
36
37 - Support for adding cost centres to declarations is added. The same `SCC`
38   syntax can be used, in addition to a new form for specifying the cost centre
39   name. See :ref:`scc-pragma` for examples.
40
41 - It is now possible to explicitly pick a strategy to use when deriving a
42   class instance using the :ghc-flag:`-XDerivingStrategies` language extension
43   (see :ref:`deriving-strategies`).
44
45 - GHC now allows standalone deriving using :ghc-flag:`-XDeriveAnyClass` on
46   any data type, even if its data constructors are not in scope. This is
47   consistent with the fact that this code (in the presence of
48   :ghc-flag:`-XDeriveAnyClass`): ::
49
50       deriving instance C T
51
52   is exactly equivalent to: ::
53
54       instance C T
55
56   and the latter code has no restrictions about whether the data constructors
57   of ``T`` are in scope.
58
59 - Add warning flag :ghc-flag:`-Wcpp-undef` which passes ``-Wundef`` to the C
60   pre-processor causing the pre-processor to warn on uses of the ``#if``
61   directive on undefined identifiers.
62
63 GHCi
64 ~~~~
65
66 -  TODO FIXME.
67
68 - Added :ghc-flag:`-flocal-ghci-history` which uses current directory for `.ghci-history`.
69
70 Template Haskell
71 ~~~~~~~~~~~~~~~~
72
73 -  TODO FIXME.
74
75 -  Reifying types that contain unboxed tuples now works correctly. (Previously,
76    Template Haskell reified unboxed tuples as boxed tuples with twice their
77    appropriate arity.)
78
79 -  Splicing singleton unboxed tuple types (e.g., ``(# Int #)``) now works
80    correctly. Previously, Template Haskell would implicitly remove the
81    parentheses when splicing, which would turn ``(# Int #)`` into ``Int``.
82
83 -  Add support for type signatures in patterns. (:ghc-ticket:`12164`)
84
85 Runtime system
86 ~~~~~~~~~~~~~~
87
88 -  TODO FIXME.
89
90 - The :ref:`heap profiler <prof-heap>` can now emit heap census data to the GHC
91   event log, allowing heap profiles to be correlated with other tracing events
92   (see :ghc-ticket:`11094`).
93
94 - Added NUMA support to Windows.
95
96 - Added processor group support for Windows. This allows the runtime to allocate
97   threads to all cores in systems which have multiple processor groups.
98   (e.g. > 64 cores, see :ghc-ticket:`11054`)
99
100 Build system
101 ~~~~~~~~~~~~
102
103 -  TODO FIXME.
104
105 Package system
106 ~~~~~~~~~~~~~~
107
108 -  TODO FIXME.
109
110 hsc2hs
111 ~~~~~~
112
113 -  TODO FIXME.
114
115 Libraries
116 ---------
117
118 array
119 ~~~~~
120
121 -  Version number XXXXX (was 0.5.0.0)
122
123
124 .. _lib-base:
125
126 base
127 ~~~~
128
129 See ``changelog.md`` in the ``base`` package for full release notes.
130
131 -  Version number 4.10.0.0 (was 4.9.0.0)
132
133 - ``Data.Either`` now provides ``fromLeft`` and ``fromRight``
134
135 - ``Data.Type.Coercion`` now provides ``gcoerceWith``, which is analogous to
136   ``gcastWith`` from ``Data.Type.Equality``.
137
138 - The ``Read1`` and ``Read2`` classes in ``Data.Functor.Classes`` have new
139   methods, ``liftReadList(2)`` and ``liftReadListPrec(2)``, that are defined in
140   terms of ``ReadPrec`` instead of ``ReadS``. This matches the interface
141   provided in GHC's version of the ``Read`` class, and allows users to write
142   more efficient ``Read1`` and ``Read2`` instances.
143
144 binary
145 ~~~~~~
146
147 -  Version number XXXXX (was 0.7.1.0)
148
149 bytestring
150 ~~~~~~~~~~
151
152 -  Version number XXXXX (was 0.10.4.0)
153
154 Cabal
155 ~~~~~
156
157 -  Version number XXXXX (was 1.18.1.3)
158
159 containers
160 ~~~~~~~~~~
161
162 -  Version number XXXXX (was 0.5.4.0)
163
164 deepseq
165 ~~~~~~~
166
167 -  Version number XXXXX (was 1.3.0.2)
168
169 directory
170 ~~~~~~~~~
171
172 -  Version number XXXXX (was 1.2.0.2)
173
174 filepath
175 ~~~~~~~~
176
177 -  Version number XXXXX (was 1.3.0.2)
178
179 ghc
180 ~~~
181
182 -
183 ghc-boot
184 ~~~~~~~~
185
186 -  This is an internal package. Use with caution.
187
188 -  TODO FIXME.
189
190 ghc-prim
191 ~~~~~~~~
192
193 -  Version number XXXXX (was 0.3.1.0)
194
195 -  Added new ``isByteArrayPinned#`` and ``isMutableByteArrayPinned#`` operation.
196
197 -  New function ``noinline`` in ``GHC.Magic`` lets you mark that a function
198    should not be inlined.  It is optimized away after the simplifier runs.
199
200 haskell98
201 ~~~~~~~~~
202
203 -  Version number XXXXX (was 2.0.0.3)
204
205 haskell2010
206 ~~~~~~~~~~~
207
208 -  Version number XXXXX (was 1.1.1.1)
209
210 hoopl
211 ~~~~~
212
213 -  Version number XXXXX (was 3.10.0.0)
214
215 hpc
216 ~~~
217
218 -  Version number XXXXX (was 0.6.0.1)
219
220 integer-gmp
221 ~~~~~~~~~~~
222
223 -  Version number XXXXX (was 0.5.1.0)
224
225 old-locale
226 ~~~~~~~~~~
227
228 -  Version number XXXXX (was 1.0.0.6)
229
230 old-time
231 ~~~~~~~~
232
233 -  Version number XXXXX (was 1.1.0.2)
234
235 process
236 ~~~~~~~
237
238 -  Version number XXXXX (was 1.2.0.0)
239
240 template-haskell
241 ~~~~~~~~~~~~~~~~
242
243 -  Version number XXXXX (was 2.9.0.0)
244
245 -  Added support for unboxed sums :ghc-ticket:`12478`.
246
247 -  Added support for visible type applications :ghc-ticket:`12530`.
248
249 time
250 ~~~~
251
252 -  Version number XXXXX (was 1.4.1)
253
254 unix
255 ~~~~
256
257 -  Version number XXXXX (was 2.7.0.0)
258
259 Win32
260 ~~~~~
261
262 -  Version number XXXXX (was 2.3.0.1)
263
264 Known bugs
265 ----------
266
267 -  TODO FIXME