diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.9.6 [2024.12.04]
+------------------
+* Require building with GHC 8.0 or later.
+
 0.9.5 [2023.08.08]
 ------------------
 * Remove a use of the partial `tail` function within `intern`.
diff --git a/Data/Interned/IntSet.hs b/Data/Interned/IntSet.hs
--- a/Data/Interned/IntSet.hs
+++ b/Data/Interned/IntSet.hs
@@ -120,11 +120,7 @@
 import Text.Read
 import GHC.Exts ( Word(..), Int(..), shiftRL# )
 
-#if !(MIN_VERSION_base(4,8,0))
-import Data.Monoid (Monoid(..))
-#endif
-
-#if MIN_VERSION_base(4,9,0) && !(MIN_VERSION_base(4,11,0))
+#if !(MIN_VERSION_base(4,11,0))
 import Data.Semigroup (Semigroup(..))
 #endif
 
@@ -228,10 +224,8 @@
 type Prefix = Int
 type Mask   = Int
 
-#if MIN_VERSION_base(4,9,0)
 instance Semigroup IntSet where
     (<>) = union
-#endif
 
 instance Monoid IntSet where
     mempty  = empty
diff --git a/Data/Interned/Internal.hs b/Data/Interned/Internal.hs
--- a/Data/Interned/Internal.hs
+++ b/Data/Interned/Internal.hs
@@ -20,11 +20,8 @@
 import Data.Array
 import Data.Hashable
 import Data.HashMap.Strict (HashMap)
-import Data.Foldable
-#if !(MIN_VERSION_base(4,8,0))
-import Data.Traversable
-#endif
 import qualified Data.HashMap.Strict as HashMap
+import Data.Foldable
 import Data.IORef
 import GHC.IO (unsafeDupablePerformIO, unsafePerformIO)
 
diff --git a/Data/Interned/Internal/String.hs b/Data/Interned/Internal/String.hs
--- a/Data/Interned/Internal/String.hs
+++ b/Data/Interned/Internal/String.hs
@@ -6,7 +6,7 @@
 import Data.String
 import Data.Interned
 import Data.Hashable
-import Data.Foldable
+import qualified Data.Foldable as F
 
 data InternedString = IS
   { internedStringId :: {-# UNPACK #-} !Id
@@ -41,7 +41,7 @@
   unintern = uninternString
 
 instance Hashable (Description InternedString) where
-  hashWithSalt s (Cons c cs) = foldl' hashWithSalt (hashWithSalt s c) cs
+  hashWithSalt s (Cons c cs) = F.foldl' hashWithSalt (hashWithSalt s c) cs
   hashWithSalt s Nil         = s `hashWithSalt` (0 :: Int)
 
 stringCache :: Cache InternedString
diff --git a/intern.cabal b/intern.cabal
--- a/intern.cabal
+++ b/intern.cabal
@@ -1,6 +1,6 @@
 name:          intern
 category:      Data, Data Structures
-version:       0.9.5
+version:       0.9.6
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -11,22 +11,19 @@
 bug-reports:   http://github.com/ekmett/intern/issues
 copyright:     Copyright (C) 2011-2014 Edward A. Kmett
 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.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:      Efficient hash-consing for arbitrary data types
 description:   Efficient hash-consing for arbitrary data types.
 
@@ -38,10 +35,10 @@
 
 library
   build-depends:
-    base                 >= 4     && < 5,
+    base                 >= 4.9   && < 5,
     bytestring           >= 0.9   && < 0.13,
-    text                 >= 0.11  && < 2.1,
-    hashable             >= 1.1   && < 1.5,
+    text                 >= 0.11  && < 2.2,
+    hashable             >= 1.1   && < 1.6,
     unordered-containers >= 0.2.1 && < 0.3,
     array                >= 0.3   && < 0.6
 
