diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,5 +1,9 @@
 # Revision history for foldable1-classes-compat
 
+## 0.1.1 -- 2024-12-05
+
+* Drop support for pre-8.0 versions of GHC.
+
 ## 0.1 -- 2023-02-24
 
 * Backport the `Foldable1` and `Bifoldable1` type classes that were introduced
diff --git a/bench/Bench.hs b/bench/Bench.hs
--- a/bench/Bench.hs
+++ b/bench/Bench.hs
@@ -13,11 +13,11 @@
 import Prelude hiding (foldl1, head, last, maximum)
 
 import Control.DeepSeq    (NFData (..))
-import Criterion.Main
 import qualified Data.Foldable as F (Foldable)
 import Data.Foldable1
 import Data.List.NonEmpty (NonEmpty (..))
 import Data.Semigroup     (Min (..))
+import Test.Tasty.Bench
 
 #if HAS_FOLDABLE1_CONTAINERS
 import Data.Tree          (Tree (..))
diff --git a/foldable1-classes-compat.cabal b/foldable1-classes-compat.cabal
--- a/foldable1-classes-compat.cabal
+++ b/foldable1-classes-compat.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name:          foldable1-classes-compat
-version:       0.1
+version:       0.1.1
 synopsis:
   Compatibility package for the Foldable1 and Bifoldable1 type classes
 
@@ -25,22 +25,19 @@
   CHANGELOG.markdown
   README.markdown
 tested-with:
-  GHC ==7.0.4
-   || ==7.2.2
-   || ==7.4.2
-   || ==7.6.3
-   || ==7.8.4
-   || ==7.10.3
-   || ==8.0.2
+  GHC ==8.0.2
    || ==8.2.2
    || ==8.4.4
    || ==8.6.5
    || ==8.8.4
    || ==8.10.7
    || ==9.0.2
-   || ==9.2.5
-   || ==9.4.4
-   || ==9.6.1
+   || ==9.2.8
+   || ==9.4.8
+   || ==9.6.6
+   || ==9.8.4
+   || ==9.10.1
+   || ==9.12.1
 
 -- , GHCJS ==8.4
 
@@ -60,39 +57,28 @@
 library
   default-language: Haskell2010
   ghc-options:      -Wall
-  build-depends:    base >=4.3 && <4.19
+  build-depends:    base >=4.9 && <4.22
 
   if !impl(ghc >= 9.6)
     hs-source-dirs: src
     build-depends:
-        containers    >=0.4 && <0.7
+        containers    >=0.4 && <0.8
       , transformers  >=0.3 && <0.7
     exposed-modules:
       Data.Foldable1
       Data.Bifoldable1
 
   if !impl(ghc >=8.6)
-    build-depends: base-orphans >=0.8.1 && <0.9
+    build-depends: base-orphans >=0.8.1 && <0.10
 
   if !impl(ghc >=8.2)
     build-depends: bifunctor-classes-compat >=0.1 && <0.2
 
-  if !impl(ghc >=8.0)
-    build-depends:
-        semigroups           >=0.18.5 && <0.20
-      , transformers-compat  >=0.6    && <0.8
-
-  if !impl(ghc >= 7.2)
-    build-depends: generic-deriving >=1.14 && <1.15
-
   if flag(tagged)
     build-depends: tagged >=0.4.4 && <1
 
   if impl(ghc >= 9.0)
-    build-depends: ghc-prim >= 0.7 && <0.11
-  else
-    if !impl(ghc >=7.6)
-      build-depends: ghc-prim
+    build-depends: ghc-prim >= 0.7 && <0.14
 
 test-suite test
   default-language: Haskell2010
@@ -101,23 +87,12 @@
   hs-source-dirs:   test
   main-is:          Tests.hs
 
-  -- because of quickcheck-instances
-  if !impl(ghc >=7.4)
-    buildable: False
-
   build-depends:
       base
     , containers
     , foldable1-classes-compat
     , transformers
-
-  if !impl(ghc >=8.0)
-    build-depends:
-        semigroups
-      , transformers-compat
-
-  build-depends:
-      QuickCheck                  >=2.13.2  && <2.15
+    , QuickCheck                  >=2.13.2  && <2.16
     , quickcheck-instances        >=0.3.27  && <0.4
     , test-framework              >=0.8.2.0 && <0.9
     , test-framework-quickcheck2  >=0.3.0.5 && <0.4
@@ -129,20 +104,10 @@
   hs-source-dirs:   bench
   main-is:          Bench.hs
 
-  if !impl(ghc >=7.6)
-    buildable: False
-
   build-depends:
       base
     , containers
     , foldable1-classes-compat
     , transformers
-
-  if !impl(ghc >=8.0)
-    build-depends:
-        semigroups
-      , transformers-compat
-
-  build-depends:
-      criterion  >=1.5.6.1 && <1.7
-    , deepseq    >=1.3     && <1.5
+    , tasty-bench >=0.3.5 && < 0.4
+    , deepseq     >=1.3   && <1.6
diff --git a/src/Data/Bifoldable1.hs b/src/Data/Bifoldable1.hs
--- a/src/Data/Bifoldable1.hs
+++ b/src/Data/Bifoldable1.hs
@@ -1,12 +1,7 @@
 {-# LANGUAGE CPP               #-}
 {-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TypeOperators     #-}
-
-#if __GLASGOW_HASKELL__ >= 708
 {-# LANGUAGE Safe              #-}
-#elif __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy       #-}
-#endif
+{-# LANGUAGE TypeOperators     #-}
 module Data.Bifoldable1 where
 
 import Control.Applicative (Const (..))
diff --git a/src/Data/Foldable1.hs b/src/Data/Foldable1.hs
--- a/src/Data/Foldable1.hs
+++ b/src/Data/Foldable1.hs
@@ -3,17 +3,11 @@
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE NoImplicitPrelude          #-}
+{-# LANGUAGE PolyKinds                  #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
 {-# LANGUAGE StandaloneDeriving         #-}
-{-# LANGUAGE TypeOperators              #-}
-
-#if __GLASGOW_HASKELL__ >=706
-{-# LANGUAGE PolyKinds #-}
-#endif
-
-#if __GLASGOW_HASKELL__ >=702
 {-# LANGUAGE Trustworthy                #-}
-#endif
+{-# LANGUAGE TypeOperators              #-}
 
 -- | A class of non-empty data structures that can be folded to a summary value.
 module Data.Foldable1 (
@@ -29,34 +23,23 @@
     minimumBy,
     ) where
 
+import Data.Coerce        (Coercible, coerce)
+import Data.Complex       (Complex (..))
 import Data.Foldable      (Foldable, foldlM, foldr)
 import Data.List          (foldl, foldl')
 import Data.List.NonEmpty (NonEmpty (..))
+import Data.Ord           (Down (..))
 import Data.Semigroup
        (Dual (..), First (..), Last (..), Max (..), Min (..), Product (..),
        Semigroup (..), Sum (..))
+import GHC.Generics
+       (M1 (..), Par1 (..), Rec1 (..), V1, (:*:) (..), (:+:) (..), (:.:) (..))
 import Prelude
        (Maybe (..), Monad (..), Ord, Ordering (..), id, seq, ($!), ($), (.),
        (=<<), flip, const, error)
 
 import qualified Data.List.NonEmpty as NE
-
-#if MIN_VERSION_base(4,4,0)
-import Data.Complex (Complex (..))
-import GHC.Generics
-       (M1 (..), Par1 (..), Rec1 (..), V1, (:*:) (..), (:+:) (..), (:.:) (..))
-#else
-import Generics.Deriving
-       (M1 (..), Par1 (..), Rec1 (..), V1, (:*:) (..), (:+:) (..), (:.:) (..))
-#endif
-
-#if MIN_VERSION_base(4,6,0)
-import Data.Ord (Down (..))
-#endif
-
-#if MIN_VERSION_base(4,8,0)
 import qualified Data.Monoid as Mon
-#endif
 
 #if !MIN_VERSION_base(4,12,0)
 import Data.Orphans ()
@@ -84,13 +67,6 @@
 import qualified Data.Functor.Product as Functor
 import qualified Data.Functor.Sum     as Functor
 
--- coerce
-#if __GLASGOW_HASKELL__ <708
-import Unsafe.Coerce (unsafeCoerce)
-#else
-import Data.Coerce (Coercible, coerce)
-#endif
-
 -- $setup
 -- >>> import Prelude hiding (foldr1, foldl1, head, last, minimum, maximum)
 
@@ -100,9 +76,7 @@
 
 -- | Non-empty data structures that can be folded.
 class Foldable t => Foldable1 t where
-#if __GLASGOW_HASKELL__ >= 708
     {-# MINIMAL foldMap1 | foldrMap1 #-}
-#endif
 
     -- At some point during design it was possible to define this class using
     -- only 'toNonEmpty'. But it seems a bad idea in general.
@@ -415,17 +389,13 @@
     head = NE.head
     last = NE.last
 
-#if MIN_VERSION_base(4,6,0)
 instance Foldable1 Down where
     foldMap1 = coerce
-#endif
 
-#if MIN_VERSION_base(4,4,0)
 instance Foldable1 Complex where
     foldMap1 f (x :+ y) = f x <> f y
 
     toNonEmpty (x :+ y) = x :| y : []
-#endif
 
 -------------------------------------------------------------------------------
 -- Instances for tuples
@@ -466,9 +436,7 @@
 instance Foldable1 Last where
     foldMap1 = coerce
 
-#if MIN_VERSION_base(4,8,0)
 deriving instance (Foldable1 f) => Foldable1 (Mon.Alt f)
-#endif
 
 #if MIN_VERSION_base(4,12,0)
 deriving instance (Foldable1 f) => Foldable1 (Mon.Ap f)
@@ -641,13 +609,5 @@
 -- coerce shim
 -------------------------------------------------------------------------------
 
-#if __GLASGOW_HASKELL__ <708
-coerce :: a -> b
-coerce = unsafeCoerce
-
-(#.) :: (b -> c) -> (a -> b) -> a -> c
-(#.) _f = coerce
-#else
 (#.) :: Coercible b c => (b -> c) -> (a -> b) -> a -> c
 (#.) _f = coerce
-#endif
