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.
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.
-
Haddock for
foldl'
(for GHC 9.8)
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.
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
Sometimes -Wincomplete-record-selectors
warns unnecessarily.
See sand-wich's post on
Discourse
for more details of breakage in template-haskell
, and its effects.
The kind of Code
was changed from forall r. (Type -> Type) -> TYPE r -> Type
to (Type -> Type) -> forall r. TYPE r -> Type
.