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