Add -fdefer-out-of-scope-variables flag (#12170).
[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 - Added :ghc-flag:`-fdefer-out-of-scope-variables`, which converts variable
42   out of scope variables errors into warnings.
43
44 GHCi
45 ~~~~
46
47 -  TODO FIXME.
48
49 - Added :ghc-flag:`-flocal-ghci-history` which uses current directory for `.ghci-history`.
50
51 Template Haskell
52 ~~~~~~~~~~~~~~~~
53
54 -  TODO FIXME.
55
56 - ``addModFinalizer`` now exposes the local typing environment at the splice
57   point. This allows ``reify`` to see local and top-level definitions in the
58   current declaration group when used as in
59
60   .. code-block:: none
61
62       f x = $(addModFinalizer (reify 'x >>= runIO . print) >> [| x |])
63
64 -  Reifying types that contain unboxed tuples now works correctly. (Previously,
65    Template Haskell reified unboxed tuples as boxed tuples with twice their
66    appropriate arity.)
67
68 -  Splicing singleton unboxed tuple types (e.g., ``(# Int #)``) now works
69    correctly. Previously, Template Haskell would implicitly remove the
70    parentheses when splicing, which would turn ``(# Int #)`` into ``Int``.
71
72 Runtime system
73 ~~~~~~~~~~~~~~
74
75 -  TODO FIXME.
76
77 - The :ref:`heap profiler <prof-heap>` can now emit heap census data to the GHC
78   event log, allowing heap profiles to be correlated with other tracing events
79   (see :ghc-ticket:`11094`).
80
81 Build system
82 ~~~~~~~~~~~~
83
84 -  TODO FIXME.
85
86 Package system
87 ~~~~~~~~~~~~~~
88
89 -  TODO FIXME.
90
91 hsc2hs
92 ~~~~~~
93
94 -  TODO FIXME.
95
96 Libraries
97 ---------
98
99 array
100 ~~~~~
101
102 -  Version number XXXXX (was 0.5.0.0)
103
104
105 .. _lib-base:
106
107 base
108 ~~~~
109
110 See ``changelog.md`` in the ``base`` package for full release notes.
111
112 -  Version number 4.10.0.0 (was 4.9.0.0)
113
114 - ``Data.Either`` now provides ``fromLeft`` and ``fromRight``
115
116 - ``Data.Type.Coercion`` now provides ``gcoerceWith``, which is analogous to
117   ``gcastWith`` from ``Data.Type.Equality``.
118
119 - The ``Read1`` and ``Read2`` classes in ``Data.Functor.Classes`` have new
120   methods, ``liftReadList(2)`` and ``liftReadListPrec(2)``, that are defined in
121   terms of ``ReadPrec`` instead of ``ReadS``. This matches the interface
122   provided in GHC's version of the ``Read`` class, and allows users to write
123   more efficient ``Read1`` and ``Read2`` instances.
124
125 binary
126 ~~~~~~
127
128 -  Version number XXXXX (was 0.7.1.0)
129
130 bytestring
131 ~~~~~~~~~~
132
133 -  Version number XXXXX (was 0.10.4.0)
134
135 Cabal
136 ~~~~~
137
138 -  Version number XXXXX (was 1.18.1.3)
139
140 containers
141 ~~~~~~~~~~
142
143 -  Version number XXXXX (was 0.5.4.0)
144
145 deepseq
146 ~~~~~~~
147
148 -  Version number XXXXX (was 1.3.0.2)
149
150 directory
151 ~~~~~~~~~
152
153 -  Version number XXXXX (was 1.2.0.2)
154
155 filepath
156 ~~~~~~~~
157
158 -  Version number XXXXX (was 1.3.0.2)
159
160 ghc
161 ~~~
162
163 -  The ``GHC.initGhcMonad`` function no longer installs signal handlers by
164    default. This means that the RTS won't attempt to handle Ctrl-C gracefully.
165    If you would like to use GHC's signal handlers, call
166    ``GHC.installSignalHandlers`` during initialization.
167
168 ghc-boot
169 ~~~~~~~~
170
171 -  This is an internal package. Use with caution.
172
173 -  TODO FIXME.
174
175 ghc-prim
176 ~~~~~~~~
177
178 -  Version number XXXXX (was 0.3.1.0)
179
180 -  Added new ``isByteArrayPinned#`` and ``isMutableByteArrayPinned#`` operation.
181
182 -  New function ``noinline`` in ``GHC.Magic`` lets you mark that a function
183    should not be inlined.  It is optimized away after the simplifier runs.
184
185 haskell98
186 ~~~~~~~~~
187
188 -  Version number XXXXX (was 2.0.0.3)
189
190 haskell2010
191 ~~~~~~~~~~~
192
193 -  Version number XXXXX (was 1.1.1.1)
194
195 hoopl
196 ~~~~~
197
198 -  Version number XXXXX (was 3.10.0.0)
199
200 hpc
201 ~~~
202
203 -  Version number XXXXX (was 0.6.0.1)
204
205 integer-gmp
206 ~~~~~~~~~~~
207
208 -  Version number XXXXX (was 0.5.1.0)
209
210 old-locale
211 ~~~~~~~~~~
212
213 -  Version number XXXXX (was 1.0.0.6)
214
215 old-time
216 ~~~~~~~~
217
218 -  Version number XXXXX (was 1.1.0.2)
219
220 process
221 ~~~~~~~
222
223 -  Version number XXXXX (was 1.2.0.0)
224
225 template-haskell
226 ~~~~~~~~~~~~~~~~
227
228 -  Version number XXXXX (was 2.9.0.0)
229
230 -  Added support for unboxed sums :ghc-ticket:`12478`.
231
232 -  Added support for visible type applications :ghc-ticket:`12530`.
233
234 time
235 ~~~~
236
237 -  Version number XXXXX (was 1.4.1)
238
239 unix
240 ~~~~
241
242 -  Version number XXXXX (was 2.7.0.0)
243
244 Win32
245 ~~~~~
246
247 -  Version number XXXXX (was 2.3.0.1)
248
249 Known bugs
250 ----------
251
252 -  TODO FIXME