Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GHC 8.6 checklist #324

Closed
6 tasks done
RyanGlScott opened this issue Apr 22, 2018 · 4 comments
Closed
6 tasks done

GHC 8.6 checklist #324

RyanGlScott opened this issue Apr 22, 2018 · 4 comments

Comments

@RyanGlScott
Copy link
Collaborator

RyanGlScott commented Apr 22, 2018

This issue serves as a reminder to do certain things before we ship a new major release that supports GHC 8.6:

  • In 6eb2133 and ddd353a, I added some CPP to temporarily support both GHC 8.4 and HEAD. We should remove this CPP once we drop support for GHC 8.4.

In addition, there are some other things that we could do if some new language extensions make it in to GHC 8.6:

  • Template Haskell changes. In particular:

  • If QuantifiedConstraints lands in 8.6, then we can completely do away with the ShowSing class. We can take code like this:

    instance (ShowSing a, ShowSing b) => ShowSing (Either a b) where showsSingPrec = ...
    instance (ShowSing a, ShowSing b) => Show (Sing (e :: Either a b)) where showsPrec = showsSingPrec

    And replace it with a much more concise equivalent:

    type ShowSing k = (forall (z :: k). Show (Sing z) :: Constraint)
    deriving instance (ShowSing a, ShowSing b) => Show (Sing (e :: Either a b))

    See the quantified-constraints branch for a WIP implementation of this.

  • Now that GHC is smarter about kind inference in CUSKs, we may be able to remove some superfluous kind signatures on k -> Type-kinded things (e.g., in Functor or Const).

  • Mention in the README that you'll likely need to enable NoStarIsType in order to profitably use PNum(type (*)).

RyanGlScott added a commit that referenced this issue Jun 30, 2018
This requires adding some CPP to temporarily support two versions of
GHC (8.4 and HEAD). I'll amend #324 as a reminder to remove this
CPP once we drop support for GHC 8.4.
RyanGlScott added a commit that referenced this issue Jul 10, 2018
Don't merge yet.

This checks off all boxes in #324 except the third one (involving
`ShowSing`, which I'll tackle separately). Specifically, this:

* Removes some CPP needed for GHC 8.4.
* Bumps the `th-desugar` submodule.
* Singling `DerivingVia` does nothing (but emits a warning).
* Promoting or singling a quantified constraint results in an error.
* Now that GHC is smarter about kind inference in CUSKs, we can
  remove some superfluous kind signatures on certain class methods
  in `Applicative`, `Monad`, etc., as well as on definitions
  involving `Const`.
* Puts a mention in the `README` of how `NoStarIsType` is needed to
  use `PNum(type (*))`.
RyanGlScott added a commit that referenced this issue Jul 10, 2018
Don't merge yet.

This checks off all boxes in #324 except the third one (involving
`ShowSing`, which I'll tackle separately). Specifically, this:

* Removes some CPP needed for GHC 8.4.
* Bumps the `th-desugar` submodule.
* Singling `DerivingVia` does nothing (but emits a warning).
* Promoting or singling a quantified constraint results in an error.
* Now that GHC is smarter about kind inference in CUSKs, we can
  remove some superfluous kind signatures on certain class methods
  in `Applicative`, `Monad`, etc., as well as on definitions
  involving `Const`.
* Puts a mention in the `README` of how `NoStarIsType` is needed to
  use `PNum(type (*))`.
RyanGlScott added a commit that referenced this issue Jul 10, 2018
Don't merge yet.

This checks off all boxes in #324 except the third one (involving
`ShowSing`, which I'll tackle separately). Specifically, this:

* Removes some CPP needed for GHC 8.4.
* Bumps the `th-desugar` submodule.
* Singling `DerivingVia` does nothing (but emits a warning).
* Promoting or singling a quantified constraint results in an error.
* Now that GHC is smarter about kind inference in CUSKs, we can
  remove some superfluous kind signatures on certain class methods
  in `Applicative`, `Monad`, etc., as well as on definitions
  involving `Const`.
* Puts a mention in the `README` of how `NoStarIsType` is needed to
  use `PNum(type (*))`.
@RyanGlScott
Copy link
Collaborator Author

#351 and #352 implement these.

RyanGlScott added a commit that referenced this issue Jul 18, 2018
This checks off all boxes in #324 except the third one (involving
`ShowSing`, which I'll tackle separately in #352).
Specifically, this:

* Removes some CPP needed for GHC 8.4.
* Bumps the `th-desugar` submodule.
* Singling `DerivingVia` does nothing (but emits a warning).
* Promoting or singling a quantified constraint results in an error.
* Now that GHC is smarter about kind inference in CUSKs, we can
  remove some superfluous kind signatures on certain class methods
  in `Applicative`, `Monad`, etc., as well as on definitions
  involving `Const`.
* Puts a mention in the `README` of how `NoStarIsType` is needed to
  use `PNum(type (*))`.
RyanGlScott added a commit that referenced this issue Jul 18, 2018
* Require GHC 8.6

This checks off all boxes in #324 except the third one (involving
`ShowSing`, which I'll tackle separately in #352).
Specifically, this:

* Removes some CPP needed for GHC 8.4.
* Bumps the `th-desugar` submodule.
* Singling `DerivingVia` does nothing (but emits a warning).
* Promoting or singling a quantified constraint results in an error.
* Now that GHC is smarter about kind inference in CUSKs, we can
  remove some superfluous kind signatures on certain class methods
  in `Applicative`, `Monad`, etc., as well as on definitions
  involving `Const`.
* Puts a mention in the `README` of how `NoStarIsType` is needed to
  use `PNum(type (*))`.

* Work around haskell/cabal#5423
@RyanGlScott
Copy link
Collaborator Author

At this point, GHC 8.6 is due to be released Real Soon Now, and I don't expect any further changes that would affect the expected test results (74176fa should be the last of them, I think). Are we ready to release th-desugar-1.9 and singletons-2.5 to Hackage?

@goldfirere
Copy link
Owner

Go for it. :)

@RyanGlScott
Copy link
Collaborator Author

th-desugar-1.9 and singletons-2.5 have been released to Hackage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants