Fix #11797.
[ghc.git] / docs / users_guide / 8.0.1-notes.rst
1 .. _release-8-0-1:
2
3 Release notes for version 8.0.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 7.10 branch.
9
10 .. warning::
11
12     Only Cabal versions 1.24 and newer will function properly with this release.
13     (see :ghc-ticket:`11558`). Consequently it will likely be necessary to
14     recompile ``cabal-install`` before installing new packages.
15
16     The reason for this is a change in how packages are identified in GHC
17     8.0. While previous versions of Cabal identified packages to GHC with a
18     package key (with GHC's :ghc-flag:`-this-package-key` argument), GHC 8.0 and
19     later uses installed package IDs in place of package keys.
20
21
22 Highlights
23 ----------
24
25 The highlights, since the 7.10 branch, are:
26
27 - TODO FIXME
28
29 - The new :ghc-flag:`-XTypeInType` allows promotion of all types into
30   kinds, allowing kind synonyms, kind families, promoted GADTs, and other
31   goodies.
32
33 - Support for :ref:`record pattern synonyms <record-patsyn>`
34
35 - The :ghc-flag:`-XDeriveAnyClass` extension learned to derive instances for
36   classes with associated types (see :ref:`derive-any-class`)
37
38 - More reliable DWARF debugging information
39
40 - Support for :ref:`injective type families <injective-ty-fams>`
41
42 - Applicative ``do`` notation (see :ref:`applicative-do`)
43
44 - Support for wildcards in data and type family instances
45
46 - :ghc-flag:`-XStrict` and :ghc-flag:`-XStrictData` extensions, allowing modules
47   to be compiled with strict-by-default bindings (see :ref:`strict-haskell`)
48
49 - :ghc-flag:`-XDuplicateRecordFields`, allowing multiple datatypes to declare the same
50   record field names provided they are used unambiguously (see :ref:`duplicate-record-fields`)
51
52 - Support for lightweight
53   :ref:`callstacks and source locations <hascallstack>`
54
55 - User-defined error messages for type errors
56
57 - A rewritten (and greatly improved) pattern exhaustiveness checker
58
59 - More flexible rebindable syntax
60
61 - GHC can run the interpreter in a separate process (see
62   :ref:`external-interpreter`), and the interpreter can now run profiled
63   code.
64
65 - GHCi now provides access to stack traces when used with
66   :ghc-flag:`-fexternal-interpreter` and :ghc-flag:`-prof` (see
67   :ref:`ghci-stack-traces`).
68
69 - A native code generator for powerpc64 and powerpc64le architectures
70
71 - The reworked users guide you are now reading
72
73 - Support for Windows XP and earlier has been dropped.
74
75 - GHC RTS No longer re-exports POSIX functions under their deprecated
76   names on Windows.
77
78 Full details
79 ------------
80
81 Language
82 ~~~~~~~~
83
84 -  TODO FIXME.
85
86 -  :ghc-flag:`-XTypeInType` supports universal type promotion and merges
87    the type and kind language. This allows, for example, higher-rank
88    kinds, along with kind families and type-level GADTs. Support is still
89    experimental, and it is expected to improve over the next several
90    releases. See :ref:`type-in-type` for the details.
91
92 -  The parser now supports Haddock comments on GADT data constructors.
93    For example ::
94
95         data Expr a where
96             -- | Just a normal sum
97             Sum :: Int -> Int -> Expr Int
98
99 -  The new ``base`` constraint :base-ref:`GHC.Stack.HasCallStack <GHC-Stack.html>`
100    can be used by functions to request a partial call-stack. For example ::
101
102         errorWithCallStack :: HasCallStack => String -> a
103         errorWithCallStack msg = error (msg ++ "\n" ++ prettyCallStack callStack)
104
105         ghci> errorWithCallStack "die"
106         *** Exception: die
107         CallStack (from HasCallStack):
108           errorWithCallStack, called at <interactive>:2:1 in interactive:Ghci1
109
110    prints the call-site of ``errorWithCallStack``.
111
112    See :ref:`hascallstack` for a description of ``HasCallStack``.
113
114 -  GHC now supports visible type application, allowing
115    programmers to easily specify how type parameters should be
116    instantiated when calling a function. See
117    :ref:`visible-type-application` for the details.
118
119 -  To conform to the common case, the default role assigned to
120    parameters of datatypes declared in ``hs-boot`` files is
121    ``representational``. However, if the constructor(s) for the datatype
122    are given, it makes sense to do normal role inference. This is now
123    implemented, effectively making the default role for non-abstract
124    datatypes in ``hs-boot`` files to be ``phantom``, like it is in
125    regular Haskell code.
126
127 -  Wildcards can be used in the type arguments of type/data family
128    instance declarations to indicate that the name of a type variable
129    doesn't matter. They will be replaced with new unique type variables.
130    See :ref:`data-instance-declarations` for more details.
131
132 -  GHC now allows to declare type families as injective. Injectivity
133    information can then be used by the typechecker. See
134    :ref:`injective-ty-fams` for details.
135
136 -  Due to a :ghc-ticket:`security issue <10826>`, Safe Haskell now forbids
137    annotations in programs marked as :ghc-flag:`-XSafe`.
138
139 -  Generic instances can be derived for data types whose constructors have
140    arguments with certain unlifted types. See :ref:`generic-programming` for
141    more details.
142
143 -  GHC generics can now provide strictness information for fields in a data
144    constructor via the ``Selector`` type class.
145
146 -  The :ghc-flag:`-XDeriveAnyClass` extension now fills in associated type family
147    default instances when deriving a class that contains them.
148
149 -  The :ghc-flag:`-XRebindableSyntax` feature is now much more flexible, imposing
150    fewer restrictions on the types of the rebindable syntax elements. For example,
151    your ``negate`` function may now return a different type than it accepts.
152    Rebindable syntax also supports higher-rank types fully, allowing types
153    like ``(>>=) :: m a -> (forall x. a x -> m b) -> m b``.
154
155 -  Users can now define record pattern synonyms. This allows pattern synonyms
156    to behave more like normal data constructors. For example, ::
157
158       pattern P :: a -> b -> (a, b)
159       pattern P{x,y} = (x,y)
160
161    will allow ``P`` to be used like a record data constructor and also defines
162    selector functions ``x :: (a, b) -> a`` and ``y :: (a, b) -> b``.
163
164 -  Pattern synonyms can now be bundled with type constructors. For a pattern
165    synonym ``P`` and a type constructor ``T``, ``P`` can be bundled with ``T``
166    so that when ``T`` is imported ``P`` is also imported. With this change
167    a library author can provide either real data constructors or pattern
168    synonyms in an opaque manner. See :ref:`pattern-synonyms` for details. ::
169
170       -- Foo.hs
171       module Foo ( T(P) ) where
172
173       data T = T
174
175       pattern P = T
176
177       -- Baz.hs
178       module Baz where
179
180       -- P is imported
181       import Foo (T(..))
182
183 -  Whenever a data instance is exported, the corresponding data family
184    is exported, too. This allows one to write ::
185
186      -- Foo.hs
187      module Foo where
188
189      data family T a
190
191      -- Bar.hs
192      module Bar where
193
194      import Foo
195
196      data instance T Int = MkT
197
198      -- Baz.hs
199      module Baz where
200
201      import Bar (T(MkT))
202
203    In previous versions of GHC, this required a workaround via an
204    explicit export list in ``Bar``.
205
206 -  :ghc-flag:`-XDeriveFoldable` and :ghc-flag:`-XDeriveTraversable` now
207    generate code without superfluous ``mempty`` or ``pure`` expressions. As a
208    result, :ghc-flag:`-XDeriveTraversable` now works on datatypes that contain
209    arguments which have unlifted types.
210
211 -  Note that the :ghc-flag:`-XImpredicativeTypes` extension, which has been
212    :ghc-wiki:`known <ImpredicativePolymorphism>` to be broken for many years, is even more
213    broken than usual in this release (see :ghc-ticket:`11319`,
214    :ghc-ticket:`11675`, and others). During pre-release testing we encountered
215    a number of projects that broke with confusing type errors due to (often
216    unnecessary) use of :ghc-flag:`-XImpredicativeTypes`. Users of
217    :ghc-flag:`-XImpredicativeTypes` do so at their own risk!
218
219 Compiler
220 ~~~~~~~~
221
222 -  Warnings can now be controlled with ``-W(no-)...`` flags in addition to
223    the old ``-f(no-)warn...`` ones. This was done as the first part of a
224    rewrite of the warning system to provide better control over warnings,
225    better warning messages, and more common syntax compared to other
226    compilers. The old ``-f``-based warning flags will remain functional for
227    the forseeable future.
228
229 -  Added the option :ghc-flag:`-dth-dec-file`. This dumps out a ``.th.hs`` file of
230    all Template Haskell declarations in a corresponding .hs file. The
231    idea is that application developers can check this into their
232    repository so that they can grep for identifiers used elsewhere that
233    were defined in Template Haskell. This is similar to using
234    :ghc-flag:`-ddump-to-file` with :ghc-flag:`-ddump-splices` but it always generates a
235    file instead of being coupled to :ghc-flag:`-ddump-to-file` and only outputs
236    code that does not exist in the .hs file and a comment for the splice
237    location in the original file.
238
239 -  After a long hiatus (see :ghc-ticket:`10935`) the
240    :ghc-flag:`-Wmonomorphism-restriction` (formerly
241    :ghc-flag:`-fwarn-monomorphism-restriction`) flag has returned.
242    The functionality of this flag was inadvertently removed by a commit in 2010;
243    this has been fixed and the flag should now issue warnings as it
244    previously did.
245
246 -  Added the option :ghc-flag:`-fprint-expanded-types`. When enabled, GHC also
247    prints type-synonym-expanded types in type errors.
248
249 -  Added the option :ghc-flag:`-fcpr-anal`. When enabled, the demand analyser
250    performs CPR analysis. It is implied by :ghc-flag:`-O`. Consequently,
251    :ghc-flag:`-fcpr-off` is now removed, run with :ghc-flag:`-fno-cpr-anal` to get the
252    old :ghc-flag:`-fcpr-off` behaviour.
253
254 -  Added the option :ghc-flag:`-fworker-wrapper`. When enabled, the worker-wrapper
255    transformation is performed after a strictness analysis pass. It is implied
256    by :ghc-flag:`-O` and by :ghc-flag:`-fstrictness`. It is disabled by :ghc-flag:`-fno-strictness`.
257    Enabling :ghc-flag:`-fworker-wrapper` while strictness analysis is disabled (by
258    :ghc-flag:`-fno-strictness`) has no effect.
259
260 -  Added the options :ghc-flag:`-Wmissed-specialisations` and
261    :ghc-flag:`-Wall-missed-specialisations`. When enabled, the simplifier will
262    produce a warning when a overloaded imported function cannot be
263    specialised (typically due to a missing ``INLINEABLE`` pragma). This
264    is intended to alert users to cases where they apply ``INLINEABLE`` but
265    may not get the speed-up they expect.
266
267 -  Added the option :ghc-flag:`-Wnoncanonical-monad-instances` and
268    :ghc-flag:`-Wnoncanonical-monadfail-instances` which help detect noncanonical
269    ``Applicative``/``Monad``/``MonadFail`` instance definitions.
270    See flag description in :ref:`options-sanity` for more details.
271
272 -  When printing an out-of-scope error message, GHC will give helpful advice if
273    the error might be caused by too restrictive imports.
274
275 -  Added the :ghc-flag:`-Wcompat` warning group, along with its opposite
276    :ghc-flag:`-Wno-compat`. Turns on warnings that will be enabled by default in the
277    future, but remain off in normal compilations for the time being. This
278    allows library authors eager to make their code future compatible to adapt
279    to new features before they even generate warnings.
280
281 -  Added the :ghc-flag:`-Wmissing-monadfail-instances` flag. When enabled, this
282    will issue a warning if a failable pattern is used in a context that does
283    not have a ``MonadFail`` constraint. This flag represents phase 1 of the
284    `MonadFail Proposal (MFP)
285    <https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail>`__.
286
287 -  Added the :ghc-flag:`-Wsemigroup` flag. When enabled, this
288    will issue a warning if a type is an instance of ``Monoid`` but not
289    ``Semigroup``, and when a custom definition ``(<>)`` is made. Fixing these
290    warnings makes sure the definition of ``Semigroup`` as a superclass of
291    ``Monoid`` does not break any code.
292
293 -  Added the :ghc-flag:`-Wmissing-pattern-synonym-signatures`
294    flag. When enabled, this will issue a warning when a pattern
295    synonym definition doesn't have a type signature.  It is turned off
296    by default but enabled by :ghc-flag:`-Wall`.
297
298 -  Added the :ghc-flag:`-Wunused-type-patterns` flag to report unused
299    type variables in data and type family instances. This flag is not implied
300    by :ghc-flag:`-Wall`, since :ghc-flag:`-Wunused-type-patterns` will
301    warn about unused type variables even if the types themselves are intended
302    to be used as documentation. If :ghc-flag:`-Wunused-type-patterns` is
303    enabled, one can prefix or replace unused type variables with underscores to
304    avoid warnings.
305
306 -  Split off the new flag :ghc-flag:`-Wunused-foralls` from the previously
307    existing flag :ghc-flag:`-Wunused-matches`. :ghc-flag:`-Wunused-foralls`
308    emits a warning in the specific case that a user writes explicit ``forall``
309    syntax with unused type variables, while :ghc-flag:`-Wunused-matches` only
310    warns in the case of unused term-level patterns. Both flags are implied by
311    :ghc-flag:`-W`.
312
313 -  Added the :ghc-flag:`-fmax-pmcheck-iterations` to control how many times
314    the pattern match checker iterates. Since coverage checking is exponential
315    in the general case, setting a default number of iterations prevents memory
316    and performance blowups. By default, the number of iterations is set to
317    10000000 but it can be set to ``n`` with: ``-fmax-pmcheck-iterations=n``.
318    If the set number of iterations is exceeded, an informative warning is
319    issued.
320
321 -  :ghc-flag:`-this-package-key` has been renamed again (hopefully for the last time!)
322    to :ghc-flag:`-this-unit-id`.  The renaming was motivated by the fact that
323    the identifier you pass to GHC here doesn't have much to do with packages:
324    you may provide different unit IDs for libraries which are in the same
325    package.  :ghc-flag:`-this-package-key` is deprecated; you should use
326    :ghc-flag:`-this-unit-id` or, if you need compatibility over multiple
327    versions of GHC, :ghc-flag:`-package-name`.
328
329 -  When :ghc-flag:`-fdefer-type-errors` is enabled and an expression fails to
330    typecheck, ``Control.Exception.TypeError`` will now be thrown instead of
331    ``Control.Exception.ErrorCall``.
332
333 -  :ghc-flag:`-Wmissing-local-sigs` is now deprecated in favor of
334    :ghc-flag:`-Wmissing-local-signatures`.
335
336 -  :ghc-flag:`-Wmissing-exported-sigs` is now deprecated in favor of
337    :ghc-flag:`-Wmissing-exported-signatures`.
338
339 -  :ghc-flag:`-ddump-strsigs` has been renamed to
340    :ghc-flag:`-ddump-str-signatures`.
341
342 -  :ghc-flag:`-XDeriveGeneric` is now less picky about instantiating type
343    arguments when deriving (:ghc-ticket:`11732`). As a consequence, the
344    following code is now legal (whereas before it would have been rejected). ::
345
346      data T a b = T a b
347      deriving instance Generic (T Int b)
348
349 GHCi
350 ~~~~
351
352 -  ``Main`` with an explicit module header but without ``main`` is now
353    an error (:ghc-ticket:`7765`).
354
355 -  The :ghci-cmd:`:back` and :ghci-cmd:`:forward` commands now take an optional count
356    allowing the user to move forward or backward in history several
357    steps at a time.
358
359 -  Added commands :ghci-cmd:`:load! <:load>` and :ghci-cmd:`:reload! <:reload>`,
360    effectively setting :ghc-flag:`-fdefer-type-errors` before loading a module and
361    unsetting it after loading if it has not been set before (:ghc-ticket:`8353`).
362
363 -  ``ghci -e`` now behaves like :ghc-flag:`ghc -e <-e>` (:ghc-ticket:`9360`).
364
365 -  Added support for top-level function declarations (:ghc-ticket:`7253`).
366
367 -  The new commands :ghci-cmd:`:all-types`, :ghci-cmd:`:loc-at`, :ghci-cmd:`:type-at`, and
368    :ghci-cmd:`:uses` designed for editor-integration
369    (such as Emacs' ``haskell-mode``) originally premiered by ``ghci-ng``
370    have been integrated into GHCi (:ghc-ticket:`10874`).
371
372 -  GHCi now supports decoupled operation between the interpreter and the
373    shell. While this is largely an implementation detail, it opens up a few
374    interesting possibilities in the future. See :ghc-wiki:`RemoteGHCi` for
375    details.
376
377 Template Haskell
378 ~~~~~~~~~~~~~~~~
379
380 -  The new :ghc-flag:`-XTemplateHaskellQuotes` flag allows to use the
381    quotes (not quasi-quotes) subset of ``TemplateHaskell``.  This is
382    particularly useful for use with a stage 1 compiler (i.e. GHC
383    without interpreter support). Also, :ghc-flag:`-XTemplateHaskellQuotes` is
384    considered safe under Safe Haskell.
385
386 -  The ``__GLASGOW_HASKELL_TH__`` CPP constant denoting support for
387    :ghc-flag:`-XTemplateHaskell` introduced in GHC 7.10.1 has been changed to
388    use the values ``1``/``0`` instead of the previous ``YES``/``NO``
389    values.
390
391 -  Partial type signatures can now be used in splices, see
392    :ref:`pts-where`.
393
394 -  Template Haskell now fully supports typed holes and quoting unbound
395    variables.  This means it is now possible to use pattern splices nested
396    inside quotation brackets.
397
398 -  Template Haskell now supports the use of ``UInfixT`` in types to
399    resolve infix operator fixities, in the same vein as ``UInfixP`` and
400    ``UInfixE`` in patterns and expressions. ``ParensT`` and ``InfixT``
401    have also been introduced, serving the same functions as their
402    pattern and expression counterparts.
403
404 - Template Haskell has now explicit support for representing GADTs.  Until
405   now GADTs were encoded using ``NormalC``, ``RecC`` (record syntax) and
406   ``ForallC`` constructors.  Two new constructors - ``GadtC`` and ``RecGadtC`` -
407   are now supported during quoting, splicing and reification.
408
409 -  Primitive chars (e.g., ``[| 'a'# |]``) and primitive strings (e.g.,
410    ``[| "abc"# |]``) can now be quoted with Template Haskell. The
411    ``Lit`` data type also has a new constructor, ``CharPrimL``, for
412    primitive char literals.
413
414 -  ``addTopDecls`` now accepts annotation pragmas.
415
416 -  Internally, the implementation of quasi-quotes has been unified with
417    that of normal Template Haskell splices. Under the previous
418    implementation, top-level declaration quasi-quotes did not cause a
419    break in the declaration groups, unlike splices of the form
420    ``$(...)``. This behavior has been preserved under the new
421    implementation, and is now recognized and documented in
422    :ref:`th-syntax`.
423
424 -  The ``Lift`` class is now derivable via the :ghc-flag:`-XDeriveLift` extension. See
425    :ref:`deriving-lift` for more information.
426
427 -  The ``FamilyD`` data constructor and ``FamFlavour`` data type have
428    been removed. Data families are now represented by ``DataFamilyD`` and
429    open type families are now represented by ``OpenTypeFamilyD`` instead
430    of ``FamilyD``. Common elements of ``OpenTypeFamilyD`` and
431    ``ClosedTypeFamilyD`` have been moved to ``TypeFamilyHead``.
432
433 -  The representation of ``data``, ``newtype``, ``data instance``, and
434    ``newtype instance`` declarations has been changed to allow for
435    multi-parameter type classes in the ``deriving`` clause. In particular,
436    ``dataD`` and ``newtypeD`` now take a ``CxtQ`` instead of a ``[Name]``
437    for the list of derived classes.
438
439 -  ``isExtEnabled`` can now be used to determine whether a language extension
440    is enabled in the ``Q`` monad. Similarly, ``extsEnabled`` can be used to list
441    all enabled language extensions.
442
443 -  One can now reify the strictness information of a constructors' fields using
444    Template Haskell's ``reifyConStrictness`` function, which takes into account
445    whether flags such as :ghc-flag:`-XStrictData` or
446    :ghc-flag:`-funbox-strict-fields` are enabled.
447
448 -  Previously, quoting a type signature like ``a -> a`` would produce the
449    abstract syntax for ``forall a. a -> a``. This behavior remains, but it
450    is extended to kinds, too, meaning that ``Proxy a -> Proxy a`` becomes
451    ``forall k (a :: k). Proxy a -> Proxy a``. This change is not intentional,
452    but is forced by the fact that GHC has a hard time telling kinds apart
453    from types. The effect of this change is that round-tripping kind-
454    polymorphic types will now require :ghc-flag:`-XTypeInType`.
455
456 Runtime system
457 ~~~~~~~~~~~~~~
458
459 - We have a shiny new two-step memory allocator for 64-bit platforms (see
460   :ghc-ticket:`9706`). In addition to simplifying the runtime system's
461   implementation this may significantly improve garbage collector performance.
462   Note, however, that Haskell processes will have an apparent virtual memory
463   footprint of a terabyte or so. Don't worry though, most of this amount is merely
464   mapped but uncommitted address space which is not backed by physical memory.
465
466 - Support for performance monitoring with PAPI has been dropped.
467
468 - :rts-flag:`-maxN⟨x⟩ <-maxN>` flag added to complement :rts-flag:`-N`. It will
469   choose to use at most ⟨x⟩ capabilities, limited by the number of processors
470   as :rts-flag:`-N` is.
471
472 - The runtime linker is no longer greedy and will load only the needed objects
473   from archives. This means particularly on Windows packages requiring e.g. C99
474   support will now function properly. As part of this the RTS on Windows
475   no longer re-exports deprecated posix functions under the undeprecated names
476   (see :ghc-ticket:`11223`).
477
478 Build system
479 ~~~~~~~~~~~~
480
481 -  TODO FIXME.
482
483 Package system
484 ~~~~~~~~~~~~~~
485
486 -  TODO FIXME.
487
488 hsc2hs
489 ~~~~~~
490
491 - :command:`hsc2hs` now supports the ``#alignment`` macro, which can be used to
492   calculate the alignment of a struct in bytes. Previously, ``#alignment``
493   had to be implemented manually via a ``#let`` directive, e.g., ::
494
495       #let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
496
497   As a result, if you have the above directive in your code, it will now emit
498   a warning when compiled with GHC 8.0.
499
500   .. code-block:: none
501
502       Module.hsc:24:0: warning: "hsc_alignment" redefined [enabled by default]
503       In file included from dist/build/Module_hsc_make.c:1:0:
504       /path/to/ghc/lib/template-hsc.h:88:0: note: this is the location of the previous definition
505        #define hsc_alignment(t...) \
506        ^
507
508   To make your code free of warnings on GHC 8.0 and still support earlier
509   versions, surround the directive with a pragma checking for the right GHC
510   version. ::
511
512       #if __GLASGOW_HASKELL__ < 800
513       #let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
514       #endif
515
516 Libraries
517 ---------
518
519 array
520 ~~~~~
521
522 -  Version number XXXXX (was 0.5.0.0)
523
524
525 .. _lib-base:
526
527 base
528 ~~~~
529
530 See ``changelog.md`` in the ``base`` package for full release notes.
531
532 -  Version number 4.9.0.0 (was 4.7.0.0)
533
534 -  :base-ref:`GHC.Stack <GHC-Stack.html>` exports two new types ``SrcLoc`` and ``CallStack``. A
535    ``SrcLoc`` contains package, module, and file names, as well as start
536    and end positions. A ``CallStack`` is essentially a ``[(String, SrcLoc)]``,
537    sorted by most-recent call.
538
539 -  ``error`` and ``undefined`` will now report a partial stack-trace
540    using the new ``CallStack`` feature (and the :ghc-flag:`-prof` stack if
541    available).
542
543 -  A new function, ``interruptible``, was added to ``GHC.IO`` allowing
544    an ``IO`` action to be run such that it can be interrupted by an
545    asynchronous exception, even if exceptions are masked (except if
546    masked with ``interruptibleMask``).
547
548    This was introduced to fix the behavior of ``allowInterrupt``, which
549    would previously incorrectly allow exceptions in uninterruptible
550    regions (see :ghc-ticket:`9516`).
551
552 -  Per-thread allocation counters (``setAllocationCounter`` and
553    ``getAllocationCounter``) and limits (``enableAllocationLimit``,
554    ``disableAllocationLimit`` are now available from ``System.Mem``. Previously
555    this functionality was only available from :base-ref:`GHC.Conc <GHC-Stack.html>`.
556
557 - ``forever``, ``filterM``, ``mapAndUnzipM``, ``zipWithM``, ``zipWithM_``,
558   ``replicateM``, and ``replicateM`` were generalized from ``Monad`` to
559   ``Applicative``. If this causes performance regressions, try to make the
560   implementation of ``(*>)`` match that of ``(>>)``.
561
562 - Add ``URec``, ``UAddr``, ``UChar``, ``UDouble``, ``UFloat``, ``UInt``, and ``UWord`` to
563   :base-ref:`GHC.Generics <GHC-Generics.html>` as part of making GHC generics
564   capable of handling unlifted types (:ghc-ticket:`10868`)
565
566 - Expand ``Floating`` class to include operations that allow for better
567   precision: ``log1p``, ``expm1``, ``log1pexp`` and ``log1mexp``. These are not
568   available from ``Prelude``, but the full class is exported from ``Numeric``.
569
570 - Add ``Data.List.NonEmpty`` and ``Data.Semigroup`` (to become
571   super-class of ``Monoid`` in the future). These modules were
572   provided by the ``semigroups`` package previously. (:ghc-ticket:`10365`)
573
574 - The constraints of various functions in ``Control.Monad`` have been
575   generalized from ``Monad`` to ``Applicative`` including ``filterM``,
576   ``zipWithM`` and ``replicateM_`` (see :ghc-ticket:`10168`).
577
578 - Add ``GHC.TypeLits.TypeError`` and ``ErrorMessage`` to allow users
579   to define custom compile-time error messages. (see :ref:`custom-errors` and
580   the original :ghc-wiki:`proposal <Proposal/CustomTypeErrors>`).
581
582 - The datatypes in ``GHC.Generics`` now have ``Enum``, ``Bounded``, ``Ix``,
583   ``Functor``, ``Applicative``, ``Monad``, ``MonadFix``, ``MonadPlus``, ``MonadZip``,
584   ``Foldable``, ``Foldable``, ``Traversable``, ``Generic1``, and ``Data`` instances
585   as appropriate. (:ghc-ticket:`9043`)
586
587 - The ``Generic`` instance for ``Proxy`` is now poly-kinded (see :ghc-ticket:`10775`)
588
589 - The ``IsString`` instance for ``[Char]`` has been modified to eliminate
590   ambiguity arising from overloaded strings and functions like ``(++)``.
591
592 - Move ``Const`` from ``Control.Applicative`` to its own module in
593   ``Data.Functor.Const``. (see :ghc-ticket:`11135`)
594
595 - Enable ``PolyKinds`` in the ``Data.Functor.Const`` module to give ``Const``
596   the kind ``* -> k -> *`` (see :ghc-ticket:`10039`).
597
598 - Add the ``TypeError`` datatype to ``Control.Exception``, which represents the
599   error that is thrown when an expression fails to typecheck when run using
600   :ghc-flag:`-fdefer-type-errors`. (see :ghc-ticket:`10284`)
601
602 binary
603 ~~~~~~
604
605 -  Version number XXXXX (was 0.7.1.0)
606
607 bytestring
608 ~~~~~~~~~~
609
610 -  Version number XXXXX (was 0.10.4.0)
611
612 Cabal
613 ~~~~~
614
615 -  Version number XXXXX (was 1.18.1.3)
616
617 containers
618 ~~~~~~~~~~
619
620 -  Version number XXXXX (was 0.5.4.0)
621
622 deepseq
623 ~~~~~~~
624
625 -  Version number XXXXX (was 1.3.0.2)
626
627 directory
628 ~~~~~~~~~
629
630 -  Version number XXXXX (was 1.2.0.2)
631
632 filepath
633 ~~~~~~~~
634
635 -  Version number XXXXX (was 1.3.0.2)
636
637 ghc
638 ~~~
639
640 -  TODO FIXME.
641
642 -  The ``HsBang`` type has been removed in favour of ``HsSrcBang`` and
643    ``HsImplBang``. Data constructors now always carry around their
644    strictness annotations as the user wrote them, whether from an
645    imported module or not.
646
647 -  Moved ``startsVarSym``, ``startsVarId``, ``startsConSym``, ``startsConId``,
648    ``startsVarSymASCII``, and ``isVarSymChar`` from ``Lexeme`` to the
649    ``GHC.Lemexe`` module of the ``ghc-boot`` library.
650
651 -  Add ``isImport``, ``isDecl``, and ``isStmt`` functions.
652
653 -  The `mi_fix_fn` field of `ModIface` had its type changed from
654    ``OccName -> Fixity`` to ``OccName -> Maybe Fixity``, where a returned value
655    of ``Nothing`` indicates a cache miss. As a result, the types of
656    ``mkIfaceFixCache`` and ``emptyIfaceFixCache`` were also changed to have a
657    return type of ``Maybe Fixity``, and a new ``mi_fix :: OccName -> Fixity``
658    function was introduced which invokes ``mi_fix_fn`` but returns
659    ``defaultFixity`` upon a cache miss.
660
661 ghc-boot
662 ~~~~~~~~
663
664 -  This is an internal package. Use with caution.
665
666 -  This package was renamed from ``bin-package-db`` to reflect its new purpose
667    of containing intra-GHC functionality that needs to be shared across
668    multiple GHC boot libraries.
669
670 -  Added ``GHC.Lexeme``, which contains functions for determining if a
671    character can be the first letter of a variable or data constructor in
672    Haskell, as defined by GHC. (These functions were moved from ``Lexeme``
673    in ``ghc``.)
674
675 -  Added ``GHC.LanguageExtensions`` which contains a type listing all
676    supported language extensions.
677
678 ghc-prim
679 ~~~~~~~~
680
681 -  Version number XXXXX (was 0.3.1.0)
682
683 haskell98
684 ~~~~~~~~~
685
686 -  Version number XXXXX (was 2.0.0.3)
687
688 haskell2010
689 ~~~~~~~~~~~
690
691 -  Version number XXXXX (was 1.1.1.1)
692
693 hoopl
694 ~~~~~
695
696 -  Version number XXXXX (was 3.10.0.0)
697
698 hpc
699 ~~~
700
701 -  Version number XXXXX (was 0.6.0.1)
702
703 integer-gmp
704 ~~~~~~~~~~~
705
706 -  Version number XXXXX (was 0.5.1.0)
707
708 old-locale
709 ~~~~~~~~~~
710
711 -  Version number XXXXX (was 1.0.0.6)
712
713 old-time
714 ~~~~~~~~
715
716 -  Version number XXXXX (was 1.1.0.2)
717
718 process
719 ~~~~~~~
720
721 -  Version number XXXXX (was 1.2.0.0)
722
723 template-haskell
724 ~~~~~~~~~~~~~~~~
725
726 -  Version number XXXXX (was 2.9.0.0)
727
728 -  The ``Lift`` type class for lifting values into Template Haskell
729    splices now has a default signature ``lift :: Data a => a -> Q Exp``,
730    which means that you do not have to provide an explicit
731    implementation of ``lift`` for types which have a ``Data`` instance.
732    To manually use this default implementation, you can use the
733    ``liftData`` function which is now exported from
734    ``Language.Haskell.TH.Syntax``.
735
736 -  ``Info``'s constructors no longer have ``Fixity`` fields. A
737    ``qReifyFixity`` function was added to the ``Quasi`` type class (as
738    well as the ``reifyFixity`` function, specialized for ``Q``) to allow
739    lookup of fixity information for any given ``Name``.
740
741 time
742 ~~~~
743
744 -  Version number XXXXX (was 1.4.1)
745
746 unix
747 ~~~~
748
749 -  Version number XXXXX (was 2.7.0.0)
750
751 Win32
752 ~~~~~
753
754 -  Version number XXXXX (was 2.3.0.1)
755
756 Known bugs
757 ----------
758
759 -  TODO FIXME