Please contribute to the GHC 9.8 breakage inventory

I’m collecting a list of all breaking changes between GHC 9.6 and 9.8, that is, anything that you have to change to get code that previously compiled with 9.6 to compile with 9.8. My hope is that it will feed into a processes of making breaking changes less severe in the future. If you have come across any breaking changes please let me know here or in an issue or PR on the repo.


Thanks for collecting these @tomjaguarpaw! The GHC wiki also has a migration guide for each major version, which might be of use?


Thanks @adamgundry. I’ve added that link to the document, and added an explanation that the migration contains a list of changes that the GHC team anticipated ahead of time were capable of causing breakage whereas this breakage inventory is a report of breakage that actually happened in practice.


Understood, it is certainly valuable to accumulate evidence of the practical impact of breaking changes. Though the migration guide is deliberately part of the GHC wiki so that it can be updated post-release with additional details, and anyone is welcome to contribute missing items. (I’ve added unzip.)


It’s not 9.8, but rather 9.6 that caused this particular breakage: `register` fails if `-fplugin=Foo` is used in `ghc-options:` · Issue #9375 · haskell/cabal · GitHub

Thanks. Is that a request for a 9.6 breakage inventory or a correction to the 9.8? I don’t think that particular breakage appears in the 9.8 inventory, does it?

Hey, sorry the message was so terse. :slight_smile: When I saw the issue I simply thought of this post and wanted to share. I suppose it is indeed a request for a 9.6 breakage inventory. There are probably still enough people who haven’t migrated to 9.6 yet that it could be worthwhile.

Ah right, makes sense, thanks. Yes, I think it probably does make sense.

@tomjaguarpaw Please find the most recent example with GHC 9.8.1 (breaking change introduced, regression detected):

Kind Regards,

1 Like

@swamp-agr, I already added it, see PR 134


At last! I haven’t followed how this came about, but it feels like a small victory, since I wrote a tantrum post about it 13 years ago: Deprecate Prelude.head and partial functions


(…there’s always Epigram :-).