diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for subcategories
 
+## 0.2.1.0
+
+* Supports GHC 9.8
+* Drops support for GHC <9
+
 ## 0.2.0.1
 
 * Supports GHC 9.6
diff --git a/src/Control/Subcategory/Foldable.hs b/src/Control/Subcategory/Foldable.hs
--- a/src/Control/Subcategory/Foldable.hs
+++ b/src/Control/Subcategory/Foldable.hs
@@ -302,10 +302,8 @@
 instance Foldable f => CFoldable (WrapFunctor f) where
   cfoldMap = foldMap
   {-# INLINE [1] cfoldMap #-}
-#if MIN_VERSION_base(4,13,0)
   cfoldMap' = foldMap'
   {-# INLINE [1] cfoldMap' #-}
-#endif
   cfold = fold
   {-# INLINE [1] cfold #-}
   cfoldr = foldr
@@ -1518,10 +1516,18 @@
   {-# INLINE [1] cfromListN #-}
 
 instance CFreeMonoid A.Array where
+#if MIN_VERSION_primitive(0,9,0)
+  cbasicFromList = A.arrayFromList
+  {-# INLINE cbasicFromList #-}
+  cfromListN = A.arrayFromListN
+  {-# INLINE [1] cfromListN #-}
+#else
   cbasicFromList = A.fromList
   {-# INLINE cbasicFromList #-}
   cfromListN = A.fromListN
   {-# INLINE [1] cfromListN #-}
+#endif
+
 instance CFreeMonoid Seq.Seq where
   cbasicFromList = Seq.fromList
   {-# INLINE cbasicFromList #-}
diff --git a/src/Control/Subcategory/Pointed.hs b/src/Control/Subcategory/Pointed.hs
--- a/src/Control/Subcategory/Pointed.hs
+++ b/src/Control/Subcategory/Pointed.hs
@@ -131,5 +131,9 @@
   {-# INLINE [1] cpure #-}
 
 instance CPointed A.Array where
+#if MIN_VERSION_primitive(0,9,0)
+  cpure = A.arrayFromListN 1 . pure
+#else
   cpure = A.fromListN 1 . pure
+#endif
   {-# INLINE [1] cpure #-}
diff --git a/src/Control/Subcategory/Semialign.hs b/src/Control/Subcategory/Semialign.hs
--- a/src/Control/Subcategory/Semialign.hs
+++ b/src/Control/Subcategory/Semialign.hs
@@ -235,7 +235,11 @@
   {-# INLINE [1] calignWith #-}
 
 instance CAlign A.Array where
+#if MIN_VERSION_primitive(0,9,0)
+  cnil = A.arrayFromListN 0 []
+#else
   cnil = A.fromListN 0 []
+#endif
   {-# INLINE [1] cnil #-}
 
 instance CSemialign PA.PrimArray where
diff --git a/src/Control/Subcategory/Wrapper/Internal.hs b/src/Control/Subcategory/Wrapper/Internal.hs
--- a/src/Control/Subcategory/Wrapper/Internal.hs
+++ b/src/Control/Subcategory/Wrapper/Internal.hs
@@ -4,9 +4,6 @@
 {-# LANGUAGE TypeFamilies, TypeOperators, UndecidableSuperClasses      #-}
 module Control.Subcategory.Wrapper.Internal where
 import Control.Applicative
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ < 808
-import Control.Monad.Fail
-#endif
 import Control.Monad.Fix    (MonadFix)
 import Control.Monad.Zip    (MonadZip)
 import Data.Coerce
diff --git a/subcategories.cabal b/subcategories.cabal
--- a/subcategories.cabal
+++ b/subcategories.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.35.0.
+-- This file has been generated from package.yaml by hpack version 0.35.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: e585a5f5de9db8947e81c57031daf4960c73b93f60a109424d6f33feb871c48c
+-- hash: 577fff015a41b96b344a0a7a41284117ea91e94d37c79e486db43bee07113db1
 
 name:           subcategories
-version:        0.2.0.1
+version:        0.2.1.0
 synopsis:       Subcategories induced by class constraints
 description:    Please see the README on GitHub at <https://github.com/konn/subcategories#readme>
 category:       Data
@@ -15,11 +15,11 @@
 bug-reports:    https://github.com/konn/subcategories/issues
 author:         Hiromi ISHII
 maintainer:     konn.jinro _at_ gmail.com
-copyright:      2018 (c) Hiromi ISHII
+copyright:      2023 (c) Hiromi ISHII
 license:        BSD3
 license-file:   LICENSE
 tested-with:
-    GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.7 || ==9.4.4 || ==9.6.1
+    GHC ==9.0.2 || ==9.2.8 || ==9.4.8 || ==9.6.3 || ==9.8.1
 
 build-type:     Simple
 extra-source-files:
@@ -87,8 +87,6 @@
   default-language: Haskell2010
   if impl(ghc >= 9.2.4)
     cpp-options: -DDEEP_SUBSUMPTION
-  if impl(ghc < 9.0)
-    cpp-options: -DDEEP_SUBSUMPTION
 
 test-suite subcategories-test
   type: exitcode-stdio-1.0
@@ -149,6 +147,4 @@
     , vector-builder
   default-language: Haskell2010
   if impl(ghc >= 9.2.4)
-    cpp-options: -DDEEP_SUBSUMPTION
-  if impl(ghc < 9.0)
     cpp-options: -DDEEP_SUBSUMPTION
diff --git a/test/Shared.hs b/test/Shared.hs
--- a/test/Shared.hs
+++ b/test/Shared.hs
@@ -19,11 +19,13 @@
 inspecting desc reg =
   [|testCase desc $ checkInspection $(inspectTest reg)|]
 
-data GHCVer = GHC8_8 | GHC8_10 | GHC9_0 | GHC9_2 | GHC9_4 | GHC9_6
+data GHCVer = GHC8_8 | GHC8_10 | GHC9_0 | GHC9_2 | GHC9_4 | GHC9_6 | GHC9_8
   deriving (Show, Eq, Ord)
 
 ghcVer :: GHCVer
-#if __GLASGOW_HASKELL__ == 906
+#if __GLASGOW_HASKELL__ == 908
+ghcVer = GHC9_8
+#elif __GLASGOW_HASKELL__ == 906
 ghcVer = GHC9_6
 #elif __GLASGOW_HASKELL__ == 904
 ghcVer = GHC9_4
