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.3
+version:        0.5.4.4
 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>.
@@ -27,6 +27,8 @@
   , GHC == 9.4.8
   , GHC == 9.6.7
   , GHC == 9.8.4
+  , GHC == 9.10.3
+  , GHC == 9.12.4
 extra-source-files:
     README.md
 
diff --git a/src/FlatParse/Minimal.hs b/src/FlatParse/Minimal.hs
--- a/src/FlatParse/Minimal.hs
+++ b/src/FlatParse/Minimal.hs
@@ -196,10 +196,13 @@
 --   constructed from the input buffer!
 unsafeEmbedBasicIO :: FPB.ParserIO () a -> Parser a
 unsafeEmbedBasicIO = \(FPB.ParserT f) -> Parser \eob s st ->
+#if MIN_VERSION_base(4,15,0)
+  case f FinalPtr eob s st of
+#else
   case f undefinedFinalizer eob s st of
+#endif
     (# st, (# (# !a, s #) | | #) #) -> (# a, s, st #)
     (# st, _                     #) -> parseError# st
-
 
 -- | Run a @FlatParse.Minimal@ parser inside a @FlatParse.Basic@ parser.
 {-# inline embedMinimal #-}
diff --git a/src/FlatParse/Minimal/Internal.hs b/src/FlatParse/Minimal/Internal.hs
--- a/src/FlatParse/Minimal/Internal.hs
+++ b/src/FlatParse/Minimal/Internal.hs
@@ -1,13 +1,16 @@
-{-# language EmptyCase, PolyKinds, KindSignatures, RankNTypes #-}
+{-# language EmptyCase, PolyKinds, KindSignatures, RankNTypes, CPP #-}
 {-# options_ghc -Wno-incomplete-patterns #-}
 
 module FlatParse.Minimal.Internal where
 
 import GHC.Exts
 import Control.Exception
+
+#if !MIN_VERSION_base(4,15,0)
 import Data.IORef
 import System.IO.Unsafe
 import GHC.ForeignPtr
+#endif
 
 data ParseException = ParseException deriving Show
 instance Exception ParseException
@@ -16,9 +19,11 @@
 parseError# :: forall r (b :: TYPE r). State# RealWorld -> b
 parseError# = \st -> case raiseIO# (toException ParseException) st of
 
+#if !MIN_VERSION_base(4,15,0)
 {-# noinline undefinedFinalizer #-}
 -- | Dummy finalizer for 'unsafeEmbedBasicIO'.
 undefinedFinalizer :: ForeignPtrContents -- IORef Finalizers
 undefinedFinalizer =
   PlainForeignPtr $ unsafeDupablePerformIO $
     newIORef $ error "unsafeEmbedBasicIO: attempted to build ByteString from buffer"
+#endif
