agrafix / superrecord

Haskell: Supercharged anonymous records
BSD 3-Clause "New" or "Revised" License
83 stars 16 forks source link

GHC 8.6 compatibility. #18

Closed galenhuntington closed 6 years ago

neongreen commented 6 years ago

What's the rule saying where * should and should not be replaced? E.g. you left a star here: https://github.com/agrafix/superrecord/blob/master/src/SuperRecord.hs#L101

galenhuntington commented 6 years ago

-XNoStarIsType is necessary for this file because of https://github.com/agrafix/superrecord/pull/18/files#diff-4664f9cd350dad78d2a8a3f6a49a90dbL20. With this switch, the other uses of * have to be changed to Type in this file.

-XStarIsType is the default (for now), so other files that don't use * as a type operator are fine. (There seems to be a long-term plan to replace * with Type entirely, but that is a ways off.)

With these changes, I was able to build and install successfully with ghc-8.6.1-alpha1.

neongreen commented 6 years ago

Ah, I see. Do you think it would also make sense to make a patch-level release now, or wait until GHC 8.6 is officially out?

galenhuntington commented 6 years ago

Well, I would say get in front of this now unless there's a reason to hold back. However, that's the opinion of someone who prefers the bleeding edge; I am already trying to use GHC 8.6.

neongreen commented 6 years ago

Hm, it looks like I don't have release rights anymore. @agrafix would you cut a new release?

agrafix commented 6 years ago

Hm, weird, for some reason it got removed. Cutting a release now.

neongreen commented 6 years ago

NB: it looks like the change in GHC 8.6 has been reverted due to the amount of breakage it caused, but this patch should still be harmless (and might be needed again in the future)

agrafix commented 6 years ago

I'll see if I can add a 8.6 build step to CI

galenhuntington commented 6 years ago

NB: it looks like the change in GHC 8.6 has been reverted due to the amount of breakage it caused, but this patch should still be harmless (and might be needed again in the future)

So far as I know, the only change reverted was that TypeOperators no longer implies NoStarIsType, and this reversion already landed in alpha1. Otherwise, with this implication, more modules than just this one would have to be changed, but on the other hand the CPP in this patch would not be needed. The other changes are still needed in any case.

Meanwhile, the committee has just accepted a proposal to remove the * kind completely from the language. So, eventually * will have to be replaced with Type throughout, although I expect a lead time of at least a year or two. (That change would also have the benefit of consistency.)