diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+5.0.3 [2025.06.17]
+------------------
+* Replace `test-framework` with `tasty` in the test suite.
+* Drop support for pre-8.0 versions of GHC.
+
 5.0.2 [2022.05.07]
 ------------------
 * Tweak error messages of `fromRight'` and `fromLeft'` for clarity.
diff --git a/either.cabal b/either.cabal
--- a/either.cabal
+++ b/either.cabal
@@ -1,6 +1,6 @@
 name:          either
 category:      Control, Monads
-version:       5.0.2
+version:       5.0.3
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -13,19 +13,19 @@
 synopsis:      Combinators for working with sums
 description:   Combinators for working with sums.
 build-type:    Simple
-tested-with:   GHC == 7.0.4
-             , GHC == 7.2.2
-             , GHC == 7.4.2
-             , GHC == 7.6.3
-             , GHC == 7.8.4
-             , GHC == 7.10.3
-             , GHC == 8.0.2
+tested-with:   GHC == 8.0.2
              , GHC == 8.2.2
              , GHC == 8.4.4
              , GHC == 8.6.5
              , GHC == 8.8.4
-             , GHC == 8.10.4
-             , GHC == 9.0.1
+             , GHC == 8.10.7
+             , GHC == 9.0.2
+             , GHC == 9.2.8
+             , GHC == 9.4.8
+             , GHC == 9.6.6
+             , GHC == 9.8.4
+             , GHC == 9.10.1
+             , GHC == 9.12.1
 extra-source-files:
   .gitignore
   .ghci
@@ -35,18 +35,15 @@
 
 source-repository head
   type: git
-  location: git://github.com/ekmett/either.git
+  location: https://github.com/ekmett/either.git
 
 library
   build-depends:
-    base              >= 4       && < 5,
+    base              >= 4.9     && < 5,
     bifunctors        >= 4       && < 6,
     mtl               >= 2.0     && < 2.4,
     profunctors       >= 4       && < 6,
-    semigroupoids     >= 4       && < 6
-
-  if !impl(ghc >= 8.0)
-    build-depends: semigroups >= 0.8.3.1 && < 1
+    semigroupoids     >= 4       && < 7
 
   other-extensions: CPP Rank2Types
   ghc-options: -Wall
@@ -64,7 +61,7 @@
   build-depends:
     base,
     either,
-    test-framework             >= 0.8.1.1 && < 0.9,
-    test-framework-quickcheck2 >= 0.3.0.3 && < 0.4,
-    QuickCheck                 >= 2.9     && < 2.15
+    tasty            >= 1.4  && < 1.6,
+    tasty-quickcheck >= 0.10 && < 0.12,
+    QuickCheck       >= 2.9  && < 2.17
   default-language: Haskell2010
diff --git a/src/Data/Either/Combinators.hs b/src/Data/Either/Combinators.hs
--- a/src/Data/Either/Combinators.hs
+++ b/src/Data/Either/Combinators.hs
@@ -1,4 +1,3 @@
-{-# language CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Either.Combinators
@@ -39,9 +38,6 @@
   , swapEither
   ) where
 
-#if __GLASGOW_HASKELL__ < 710
-import Control.Applicative
-#endif
 import Control.Monad.Error.Class ( MonadError(throwError) )
 
 -- ---------------------------------------------------------------------------
diff --git a/src/Data/Either/Validation.hs b/src/Data/Either/Validation.hs
--- a/src/Data/Either/Validation.hs
+++ b/src/Data/Either/Validation.hs
@@ -38,11 +38,6 @@
 import Data.Profunctor
 import Prelude hiding (foldr)
 
-#if !(MIN_VERSION_base(4,8,0))
-import Data.Monoid (Monoid(mappend, mempty))
-import Data.Traversable (Traversable(traverse))
-#endif
-
 #if !(MIN_VERSION_base(4,11,0))
 import Data.Semigroup (Semigroup((<>)))
 #endif
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -7,12 +7,13 @@
 import Data.Monoid (Sum(..))
 
 import Test.QuickCheck (Property, Gen, (===), (.&&.), Arbitrary (..), forAllShrink, oneof)
-import Test.Framework (defaultMain)
-import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Test.Tasty (defaultMain, testGroup)
+import Test.Tasty.QuickCheck (testProperty)
 
 
 main :: IO ()
-main = defaultMain
+main = defaultMain $
+  testGroup "either"
     [ testProperty "identity" $ identity (<|>) empty genValSumInt shrinkValidation
     , testProperty "associativity" $ associativity (<|>) genValSumInt shrinkValidation
     ]
