diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,9 @@
+1.0.4
+-----
+
+- Drop support for GHCs prior 8.6.5
+- GHC-9.12 support
+
 1.0.3.1
 -------
 
diff --git a/integer-logarithms.cabal b/integer-logarithms.cabal
--- a/integer-logarithms.cabal
+++ b/integer-logarithms.cabal
@@ -1,5 +1,5 @@
 name:               integer-logarithms
-version:            1.0.3.1
+version:            1.0.4
 cabal-version:      >=1.10
 author:             Daniel Fischer
 copyright:
@@ -23,19 +23,16 @@
 
 category:           Math, Algorithms, Number Theory
 tested-with:
-    GHC ==7.0.4
-     || ==7.2.2
-     || ==7.4.2
-     || ==7.6.3
-     || ==7.8.4
-     || ==7.10.3
-     || ==8.0.2
-     || ==8.2.2
-     || ==8.4.4
-     || ==8.6.4
+    GHC ==8.6.5
      || ==8.8.4
-     || ==8.10.2
-  , GHCJS ==8.4
+     || ==8.10.4
+     || ==9.0.2
+     || ==9.2.8
+     || ==9.4.8
+     || ==9.6.6
+     || ==9.8.4
+     || ==9.10.1
+     || ==9.12.1
 
 extra-source-files:
   changelog.md
@@ -55,9 +52,9 @@
   default-language: Haskell2010
   hs-source-dirs:   src
   build-depends:
-      array     >=0.3 && <0.6
-    , base      >=4.3 && <4.16
-    , ghc-prim  >=0   && <0.8
+      array     >=0.5.3.0  && <0.6
+    , base      >=4.12.0.0 && <4.22
+    , ghc-prim  <0.14
 
   if !impl(ghc >=7.10)
     build-depends: nats >=1.1.2 && <1.2
@@ -65,7 +62,7 @@
   if impl(ghc >=9.0)
     build-depends:
         base        >=4.15
-      , ghc-bignum  >=1.0  && <1.1
+      , ghc-bignum  >=1.0  && <1.4
 
     if !flag(integer-gmp)
       build-depends: invalid-cabal-flag-settings <0
@@ -116,15 +113,12 @@
   build-depends:
       base
     , integer-logarithms
-    , QuickCheck          >=2.14.1 && <2.15
+    , QuickCheck          >=2.14.1 && <2.16
     , smallcheck          >=1.2    && <1.3
-    , tasty               >=0.10   && <1.4
-    , tasty-hunit         >=0.9    && <0.11
-    , tasty-quickcheck    >=0.8    && <0.11
+    , tasty               >=1.4   && <1.6
+    , tasty-hunit         >=0.10    && <0.11
+    , tasty-quickcheck    >=0.10    && <0.12
     , tasty-smallcheck    >=0.8    && <0.9
-
-  if !impl(ghc >=7.10)
-    build-depends: nats ==1.1.*
 
   other-modules:
     Math.NumberTheory.LogarithmsTests
diff --git a/src/Math/NumberTheory/Logarithms.hs b/src/Math/NumberTheory/Logarithms.hs
--- a/src/Math/NumberTheory/Logarithms.hs
+++ b/src/Math/NumberTheory/Logarithms.hs
@@ -11,9 +11,7 @@
 --
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE MagicHash #-}
-#if __GLASGOW_HASKELL__ >= 702
 {-# LANGUAGE Trustworthy #-}
-#endif
 module Math.NumberTheory.Logarithms
     ( -- * Integer logarithms with input checks
       integerLogBase
@@ -329,10 +327,4 @@
 #else
 naturalLog2# n = integerLog2# (toInteger n)
 #endif
-#endif
-
-#if __GLASGOW_HASKELL__ < 707
--- The times they are a-changing. The types of primops too :(
-isTrue# :: Bool -> Bool
-isTrue# = id
 #endif
diff --git a/src/Math/NumberTheory/Powers/Integer.hs b/src/Math/NumberTheory/Powers/Integer.hs
--- a/src/Math/NumberTheory/Powers/Integer.hs
+++ b/src/Math/NumberTheory/Powers/Integer.hs
@@ -9,23 +9,12 @@
 -- Potentially faster power function for 'Integer' base and 'Int'
 -- or 'Word' exponent.
 --
-{-# LANGUAGE CPP          #-}
-#if __GLASGOW_HASKELL__ >= 702
-#if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Safe #-}
-#else
-{-# LANGUAGE Trustworthy #-}
-#endif
-#endif
 module Math.NumberTheory.Powers.Integer
     {-# DEPRECATED "It is no faster than (^)" #-}
     ( integerPower
     , integerWordPower
     ) where
-
-#if !MIN_VERSION_base(4,8,0)
-import Data.Word
-#endif
 
 -- | Power of an 'Integer' by the left-to-right repeated squaring algorithm.
 --   This needs two multiplications in each step while the right-to-left
diff --git a/src/Math/NumberTheory/Powers/Natural.hs b/src/Math/NumberTheory/Powers/Natural.hs
--- a/src/Math/NumberTheory/Powers/Natural.hs
+++ b/src/Math/NumberTheory/Powers/Natural.hs
@@ -9,25 +9,14 @@
 -- Potentially faster power function for 'Natural' base and 'Int'
 -- or 'Word' exponent.
 --
-{-# LANGUAGE CPP          #-}
-#if __GLASGOW_HASKELL__ >= 702
-#if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Safe #-}
-#else
-{-# LANGUAGE Trustworthy #-}
-#endif
-#endif
 module Math.NumberTheory.Powers.Natural
     {-# DEPRECATED "It is no faster than (^)" #-}
     ( naturalPower
     , naturalWordPower
     ) where
 
-#if !MIN_VERSION_base(4,8,0)
-import Data.Word
-#endif
-
-import Numeric.Natural
+import Numeric.Natural (Natural)
 
 -- | Power of an 'Natural' by the left-to-right repeated squaring algorithm.
 --   This needs two multiplications in each step while the right-to-left
diff --git a/test-suite/Math/NumberTheory/LogarithmsTests.hs b/test-suite/Math/NumberTheory/LogarithmsTests.hs
--- a/test-suite/Math/NumberTheory/LogarithmsTests.hs
+++ b/test-suite/Math/NumberTheory/LogarithmsTests.hs
@@ -8,8 +8,6 @@
 -- Tests for Math.NumberTheory.Logarithms
 --
 
-{-# LANGUAGE CPP       #-}
-
 {-# OPTIONS_GHC -fno-warn-type-defaults #-}
 
 module Math.NumberTheory.LogarithmsTests
@@ -17,11 +15,6 @@
   ) where
 
 import Test.Tasty
-
-#if MIN_VERSION_base(4,8,0)
-#else
-import Data.Word
-#endif
 import Numeric.Natural
 
 import Math.NumberTheory.Logarithms
