diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.17.4 [2024.12.04]
+-------------------
+* Require building with GHC 8.0 or later.
+
 0.17.3 [2023.08.06]
 -------------------
 * Remove `mtl` dependency in favor `transformers`, as `bytes` was only using
diff --git a/bytes.cabal b/bytes.cabal
--- a/bytes.cabal
+++ b/bytes.cabal
@@ -1,6 +1,6 @@
 name:          bytes
 category:      Data, Serialization
-version:       0.17.3
+version:       0.17.4
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -11,20 +11,19 @@
 bug-reports:   https://github.com/ekmett/bytes/issues
 copyright:     Copyright (C) 2013-2015 Edward A. Kmett
 build-type:    Simple
-tested-with:   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.7
              , GHC == 9.0.2
-             , GHC == 9.2.7
-             , GHC == 9.4.5
-             , GHC == 9.6.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
 synopsis:      Sharing code for serialization between binary and cereal
 description:   Sharing code for serialization between binary and cereal.
 
@@ -42,14 +41,14 @@
 
 library
   build-depends:
-    base                      >= 4.5      && < 5,
+    base                      >= 4.9      && < 5,
     binary                    >= 0.5.1    && < 0.9,
     binary-orphans            >= 1.0.1    && < 1.1,
     bytestring                >= 0.9      && < 0.13,
     cereal                    >= 0.5.2    && < 0.6,
     containers                >= 0.3      && < 1,
-    hashable                  >= 1.0.1.1  && < 1.5,
-    text                      >= 0.2      && < 2.1,
+    hashable                  >= 1.0.1.1  && < 1.6,
+    text                      >= 0.2      && < 2.2,
     time                      >= 1.2      && < 1.13,
     transformers              >= 0.2      && < 0.7,
     transformers-compat       >= 0.6.5    && < 1,
@@ -57,16 +56,6 @@
     scientific                >= 0.0      && < 1,
     void                      >= 0.6      && < 1
 
-  if impl(ghc >= 7.4 && < 7.6)
-    build-depends: ghc-prim
-
-  if !impl(ghc >= 7.10)
-    build-depends: nats >= 1.1.2   && < 1.2
-
-  if !impl(ghc >= 8.0)
-    build-depends: semigroups >= 0.5      && < 1
-                 , fail       >= 4.9.0.0  && < 4.10
-
   exposed-modules:
     Data.Bytes.Get
     Data.Bytes.Put
@@ -74,7 +63,7 @@
     Data.Bytes.Signed
     Data.Bytes.VarInt
 
-  ghc-options: -Wall -fwarn-tabs -O2
+  ghc-options: -Wall -Wtabs -O2
   if impl(ghc >= 8.6)
     ghc-options: -Wno-star-is-type
   c-sources: cbits/i2d.c
diff --git a/src/Data/Bytes/Get.hs b/src/Data/Bytes/Get.hs
--- a/src/Data/Bytes/Get.hs
+++ b/src/Data/Bytes/Get.hs
@@ -8,7 +8,7 @@
 {-# LANGUAGE QuantifiedConstraints #-}
 #endif
 
-{-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
+{-# OPTIONS_GHC -Wno-warnings-deprecations #-}
 --------------------------------------------------------------------
 -- |
 -- Copyright :  (c) Edward Kmett 2013-2015
@@ -30,10 +30,6 @@
   , runGetS
   ) where
 
-#if __GLASGOW_HASKELL__ < 710
-import Control.Applicative
-import Data.Monoid (Monoid(..))
-#endif
 import Control.Monad (liftM, unless)
 import Control.Monad.Trans.Class (MonadTrans(..))
 import Control.Monad.Trans.Except as Except
diff --git a/src/Data/Bytes/Put.hs b/src/Data/Bytes/Put.hs
--- a/src/Data/Bytes/Put.hs
+++ b/src/Data/Bytes/Put.hs
@@ -26,10 +26,6 @@
   , runPutS
   ) where
 
-#if __GLASGOW_HASKELL__ < 710
-import Control.Applicative
-import Data.Monoid (Monoid(..))
-#endif
 import Control.Monad.Trans.Class (MonadTrans(..))
 import Control.Monad.Trans.Except as Except
 import Control.Monad.Trans.Reader (ReaderT(..))
diff --git a/src/Data/Bytes/Serial.hs b/src/Data/Bytes/Serial.hs
--- a/src/Data/Bytes/Serial.hs
+++ b/src/Data/Bytes/Serial.hs
@@ -608,12 +608,7 @@
   gdeserialize = return U1
 
 instance GSerial V1 where
-  gserialize x =
-#if __GLASGOW_HASKELL__ >= 708
-    case x of {}
-#else
-    x `seq` error "I looked into the void."
-#endif
+  gserialize x = case x of {}
   gdeserialize = MonadFail.fail "I looked into the void."
 
 instance (GSerial f, GSerial g) => GSerial (f :*: g) where
@@ -791,12 +786,7 @@
   gdeserializeWith _  = return U1
 
 instance GSerial1 V1 where
-  gserializeWith _ x =
-#if __GLASGOW_HASKELL__ >= 708
-    case x of {}
-#else
-    x `seq` error "I looked into the void."
-#endif
+  gserializeWith _ x = case x of {}
   gdeserializeWith _ = MonadFail.fail "I looked into the void."
 
 instance (GSerial1 f, GSerial1 g) => GSerial1 (f :*: g) where
