diff --git a/flatparse.cabal b/flatparse.cabal
--- a/flatparse.cabal
+++ b/flatparse.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           flatparse
-version:        0.5.4.1
+version:        0.5.4.2
 synopsis:       High-performance parsing from strict bytestrings
 description:    @Flatparse@ is a high-performance parsing library for strict bytestring input. See the README for more information:
                 <https://github.com/AndrasKovacs/flatparse>.
@@ -94,7 +94,7 @@
     , containers
     , integer-gmp
     , template-haskell
-    , utf8-string >=1.0.2 && <1.1
+    , utf8-string >=1
   default-language: Haskell2010
   if flag(dump)
     ghc-options: -ddump-simpl -ddump-stg-final -ddump-cmm -dsuppress-all -dno-suppress-type-signatures -ddump-to-file
@@ -129,7 +129,7 @@
     , flatparse
     , hspec
     , quickcheck-instances
-    , utf8-string >=1.0.2 && <1.1
+    , utf8-string >=1
   default-language: Haskell2010
   if flag(dump)
     ghc-options: -ddump-simpl -ddump-stg-final -ddump-cmm -dsuppress-all -dno-suppress-type-signatures -ddump-to-file
@@ -172,7 +172,7 @@
     , parsec
     , primitive
     , tasty-bench
-    , utf8-string >=1.0.2 && <1.1
+    , utf8-string >=1
   default-language: Haskell2010
   if flag(dump)
     ghc-options: -ddump-simpl -ddump-stg-final -ddump-cmm -dsuppress-all -dno-suppress-type-signatures -ddump-to-file
diff --git a/src/FlatParse/Common/Assorted.hs b/src/FlatParse/Common/Assorted.hs
--- a/src/FlatParse/Common/Assorted.hs
+++ b/src/FlatParse/Common/Assorted.hs
@@ -1,3 +1,5 @@
+{-# language CPP #-}
+
 module FlatParse.Common.Assorted
   (
   -- * Compatibility
@@ -32,7 +34,9 @@
 
 import Data.Bits
 import Data.Char ( ord )
+#if __GLASGOW_HASKELL__ <= 908
 import Data.Foldable (foldl')
+#endif
 import GHC.Exts
 
 import qualified Data.ByteString as B
diff --git a/src/FlatParse/Common/GHCExts.hs b/src/FlatParse/Common/GHCExts.hs
--- a/src/FlatParse/Common/GHCExts.hs
+++ b/src/FlatParse/Common/GHCExts.hs
@@ -9,7 +9,11 @@
   , module GHC.Exts
   ) where
 
+#if __GLASGOW_HASKELL__ == 912
+import GHC.Exts hiding (BCO, mkApUpd0#, newBCO#)
+#else
 import GHC.Exts
+#endif
 
 #if !MIN_VERSION_base(4,17,0)
 {-
diff --git a/src/FlatParse/Common/Switch.hs b/src/FlatParse/Common/Switch.hs
--- a/src/FlatParse/Common/Switch.hs
+++ b/src/FlatParse/Common/Switch.hs
@@ -1,7 +1,9 @@
 module FlatParse.Common.Switch where
 
 import Control.Monad (forM)
+#if __GLASGOW_HASKELL__ <= 908
 import Data.Foldable (foldl')
+#endif
 import Data.Map (Map)
 import Language.Haskell.TH
 
diff --git a/src/FlatParse/Minimal.hs b/src/FlatParse/Minimal.hs
--- a/src/FlatParse/Minimal.hs
+++ b/src/FlatParse/Minimal.hs
@@ -1,4 +1,4 @@
-{-# language Strict, UnboxedTuples, ImportQualifiedPost, ScopedTypeVariables, TypeApplications #-}
+{-# language Strict, UnboxedTuples, ScopedTypeVariables, TypeApplications, CPP #-}
 -- {-# options_ghc -ddump-simpl -ddump-to-file -dsuppress-all -dno-suppress-type-signatures #-}
 
 {-|
@@ -34,16 +34,16 @@
 import GHC.IO (IO(..))
 import Language.Haskell.TH
 
-import Data.ByteString qualified  as B
-import Data.ByteString.Internal qualified  as B
-import Data.ByteString.Unsafe qualified  as B
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Internal as B
+import qualified Data.ByteString.Unsafe as B
 
-import FlatParse.Basic qualified as FPB
-import FlatParse.Basic.Switch qualified as FPB
-import FlatParse.Common.Assorted qualified as Common
-import FlatParse.Common.Numbers qualified as Common
+import qualified FlatParse.Basic as FPB
+import qualified FlatParse.Basic.Switch as FPB
+import qualified FlatParse.Common.Assorted as Common
+import qualified FlatParse.Common.Numbers as Common
+import qualified FlatParse.Common.Switch as Common
 import FlatParse.Common.Position
-import FlatParse.Common.Switch qualified as Common
 import FlatParse.Minimal.Exception
 
 {-# inline parseError #-}
@@ -57,7 +57,10 @@
                   -> Parser a
 pattern Parser f <- Parser# f where
   Parser f = Parser# (oneShot \eob s st -> f eob s st)
+
+#if __GLASGOW_HASKELL__ > 900
 {-# inline Parser #-}
+#endif
 {-# complete Parser #-}
 
 -- Catching parsing exception
@@ -193,7 +196,7 @@
 --   constructed from the input buffer!
 unsafeEmbedBasicIO :: FPB.ParserIO () a -> Parser a
 unsafeEmbedBasicIO = \(FPB.ParserT f) -> Parser \eob s st ->
-  case f FinalPtr eob s st of
+  case f (PlainForeignPtr (error "unsafeEmbedBasicIO: attempted to build ByteString from buffer")) eob s st of
     (# st, (# (# !a, s #) | | #) #) -> (# a, s, st #)
     (# st, _                     #) -> parseError# st
 
