Skip to content

Latest commit

 

History

History
90 lines (59 loc) · 2.62 KB

breakage-inventory-ghc-9.10.md

File metadata and controls

90 lines (59 loc) · 2.62 KB

GHC 9.10 breakage inventory

A catalogue of all the non-trivial fixes (that is, not just bounds bumps) required to upgrade Haskell code that worked with GHC 9.8 to GHC 9.10. The GHC 9.10 migration guide 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.

base

foldl' exported from Prelude

Data.Foldble.foldl' is now exported from Prelude. This means that any module that uses its own, or any another module than Data.Foldable's, foldl' unqualified will fail to compile.

Examples

short-text

References

GHC.Num is no longer Safe

It seems that GHC.Num used to be Safe as in Safe Haskell but no longer is. That can cause an error like the following if you try to use it in modules marked Safe

src/Protolude/List.hs:23:1: error: [GHC-44360]
    GHC.Num: Can't be safely imported! The module itself isn't safe.

Examples

protolude

References

Safe Haskell

GHC

Linear do pattern match

A failing pattern match in linear do-notation no longer counts as "using" the matched value. For example, this no longer compiles

g :: a  Linear.IO a
g x = Linear.do
  (y, True) <- pure (f x)
  return y

Examples

genghin/romes via Discourse

Spurious -Wincomplete-record-selectors warning

Sometimes -Wincomplete-record-selectors warns unnecessarily.

Examples

imp

template-haskell

See sand-wich's post on Discourse for more details of breakage in template-haskell, and its effects.

Kind of Code

The kind of Code was changed from forall r. (Type -> Type) -> TYPE r -> Type to (Type -> Type) -> forall r. TYPE r -> Type.

InfixD now stores a NamespaceSpecifier