Fix #16603 by documenting some important changes in changelogs
authorRyan Scott <ryan.gl.scott@gmail.com>
Sat, 4 May 2019 15:05:20 +0000 (11:05 -0400)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Wed, 8 May 2019 05:55:45 +0000 (01:55 -0400)
This addresses some glaring omissions from
`libraries/base/changelog.md` and
`docs/users_guide/8.8.1-notes.rst`, fixing #16603 in the process.

docs/users_guide/8.8.1-notes.rst
libraries/base/changelog.md

index 486c47c..a781ec4 100644 (file)
@@ -23,6 +23,21 @@ Full details
 Language
 ~~~~~~~~
 
+- GHC now supports visible kind applications, as described in
+  `GHC proposal #15 <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0015-type-level-type-applications.rst>`__. This extends the existing
+  :ref:`visible type applications <visible-type-application>` feature to permit
+  type applications at the type level (e.g., ``f :: Proxy ('Just @Bool 'True)``) in
+  addition to the term level (e.g., ``g = Just @Bool True``).
+
+- GHC now allows explicitly binding type variables in type family instances and
+  rewrite rules, as described in
+  `GHC proposal #7 <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0007-instance-foralls.rst>`__. For instance: ::
+
+    type family G a b where
+      forall x y. G [x] (Proxy y) = Double
+      forall z.   G z   z         = Bool
+    {-# RULES "example" forall a. forall (x :: a). id x = x #-}
+
 - :extension:`ScopedTypeVariables`: The type variable that a type signature on
   a pattern can bring into scope can now stand for arbitrary types. Previously,
   they could only stand in for other type variables, but this restriction was deemed
@@ -76,6 +91,13 @@ Language
 Compiler
 ~~~~~~~~
 
+- The final phase of the ``MonadFail`` proposal has been implemented.
+  Accordingly, the ``MonadFailDesugaring`` language extension is now
+  deprecated, as its effects are always enabled. Similarly, the
+  ``-Wnoncanonical-monadfail-instances`` flag is also deprecated, as there is
+  no longer any way to define a "non-canonical" ``Monad`` or ``MonadFail``
+  instance.
+
 - New :ghc-flag:`-keep-hscpp-files` to keep the output of the CPP pre-processor.
 
 - The :ghc-flag:`-Wcompat` warning group now includes :ghc-flag:`-Wstar-is-type`.
@@ -143,6 +165,13 @@ Template Haskell
   longer included when reifying ``C``. It's possible that this may break some
   code which assumes the existence of ``forall a. C a =>``.
 
+- Template Haskell has been updated to support visible kind applications and
+  explicit ``foralls`` in type family instances and ``RULES``. These required
+  a couple of backwards-incompatible changes to the ``template-haskell`` API.
+  Please refer to the
+  `GHC 8.8 Migration Guide <https://gitlab.haskell.org/ghc/ghc/wikis/migration/8.8#template-haskell-21500>`__
+  for more details.
+
 - Template Haskell now supports implicit parameters and recursive do.
 
 ``ghc-prim`` library
@@ -164,6 +193,20 @@ Template Haskell
 ``base`` library
 ~~~~~~~~~~~~~~~~
 
+- The final phase of the ``MonadFail`` proposal has been implemented. As a
+  result of this change:
+
+  - The ``fail`` method of ``Monad`` has been removed in favor of the method of
+    the same name in the ``MonadFail`` class.
+
+  - ``MonadFail(fail)`` is now re-exported from the ``Prelude`` and
+    ``Control.Monad`` modules.
+
+  These are breaking changes that may require you to update your code. Please
+  refer to the
+  `GHC 8.8 Migration Guide <https://gitlab.haskell.org/ghc/ghc/wikis/migration/8.8#base-41300>`__
+  for more details.
+
 - Support the characters from recent versions of Unicode (up to v. 12) in literals
     (see :ghc-ticket:`5518`).
 
index 1e4bfd3..6da0c70 100644 (file)
@@ -8,6 +8,14 @@
 ## 4.13.0.0 *TBA*
   * Bundled with GHC *TBA*
 
+  * The final phase of the `MonadFail` proposal has been implemented:
+
+    * The `fail` method of `Monad` has been removed in favor of the method of
+      the same name in the `MonadFail` class.
+
+    * `MonadFail(fail)` is now re-exported from the `Prelude` and
+      `Control.Monad` modules.
+
   * Fix `Show` instance of `Data.Fixed`: Negative numbers are now parenthesized
     according to their surrounding context. I.e. `Data.Fixed.show` produces
     syntactically correct Haskell for expressions like `Just (-1 :: Fixed E2)`.