diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### 3.9.9 [2024.10.23]
+* Support building with GHC 9.12.
+* Drop support for GHC 8.0.
+
 ### 3.9.8 [2024.04.20]
 * Support building with GHC 9.10.
 * Add a `TextShow` instance for `NamespaceSpecifier` in
diff --git a/src/TextShow/Data/Binary.hs b/src/TextShow/Data/Binary.hs
--- a/src/TextShow/Data/Binary.hs
+++ b/src/TextShow/Data/Binary.hs
@@ -1,10 +1,5 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
-#if __GLASGOW_HASKELL__ == 800
--- See Note [Increased simpl-tick-factor on old GHCs]
-{-# OPTIONS_GHC -fsimpl-tick-factor=200 #-}
-#endif
 
 {-|
 Module:      TextShow.Data.Binary
@@ -42,21 +37,3 @@
         go sp (Done _ a)      = "Done: " <> sp a
         go _  (BytesRead _ _) = "BytesRead"
     {-# INLINE liftShowbPrec #-}
-
-{-
-Note [Increased simpl-tick-factor on old GHCs]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Compiling certain text-show modules with optimizations on old versions of GHC
-(particularly 8.0 and 8.2) will trigger "Simplifier ticks exhausted" panics.
-To make things worse, this sometimes depends on whether a certain version of
-the text library is being used. There are two possible ways to work around
-this issue:
-
-1. Figure out which uses of the INLINE pragma in text-show are responsible
-   and remove them.
-2. Just increase the tick limit.
-
-Since executing on (1) will require a lot of effort to fix an issue that only
-happens on old versions of GHC, I've opted for the simple solution of (2) for
-now. Issue #51 is a reminder to revisit this choice.
--}
diff --git a/src/TextShow/Data/Time.hs b/src/TextShow/Data/Time.hs
--- a/src/TextShow/Data/Time.hs
+++ b/src/TextShow/Data/Time.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP               #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TemplateHaskell   #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
@@ -16,7 +15,9 @@
 -}
 module TextShow.Data.Time () where
 
+import Data.Time.Clock.System (SystemTime)
 import Data.Fixed (Pico)
+import Data.Maybe (fromJust)
 import Data.Semigroup (mtimesDefault)
 import Data.Time.Calendar (Day, toGregorian)
 import Data.Time.Clock (DiffTime, UTCTime, NominalDiffTime, UniversalTime)
@@ -34,14 +35,6 @@
 import TextShow.Data.Integral ()
 import TextShow.TH (deriveTextShow)
 
-#if MIN_VERSION_time(1,7,0)
-import Data.Maybe (fromJust)
-#endif
-
-#if MIN_VERSION_time(1,8,0)
-import Data.Time.Clock.System (SystemTime)
-#endif
-
 type NumericPadOption = Maybe Char
 
 pad1 :: NumericPadOption -> Builder -> Builder
@@ -122,12 +115,7 @@
 
 -- | /Since: 2/
 instance TextShow AbsoluteTime where
-    showb t = showb (utcToLocalTime utc $
-#if MIN_VERSION_time(1,7,0)
-                                          fromJust $ taiToUTCTime (const (Just 0)) t)
-#else
-                                          taiToUTCTime (const 0) t)
-#endif
+    showb t = showb (utcToLocalTime utc $ fromJust $ taiToUTCTime (const (Just 0)) t)
               <> " TAI" -- ugly, but standard apparently
     {-# INLINE showb #-}
 
@@ -164,9 +152,5 @@
 -- | /Since: 2/
 $(deriveTextShow ''TimeLocale)
 
-#if MIN_VERSION_time(1,8,0)
--- | Only available with @time-1.8@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''SystemTime)
-#endif
diff --git a/src/TextShow/GHC/ForeignSrcLang/Type.hs b/src/TextShow/GHC/ForeignSrcLang/Type.hs
--- a/src/TextShow/GHC/ForeignSrcLang/Type.hs
+++ b/src/TextShow/GHC/ForeignSrcLang/Type.hs
@@ -1,9 +1,5 @@
-{-# LANGUAGE CPP             #-}
-
-#if MIN_VERSION_ghc_boot_th(8,2,0)
 {-# LANGUAGE TemplateHaskell #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
-#endif
 
 {-|
 Module:      TextShow.GHC.ForeignSrcLang.Type
@@ -14,16 +10,13 @@
 Portability: GHC
 
 'TextShow' instance for the 'ForeignSrcLang' data type.
-Only provided if using @ghc-boot-th-8.2@ or later.
 
 /Since: 3.3/
 -}
 module TextShow.GHC.ForeignSrcLang.Type () where
 
-#if MIN_VERSION_ghc_boot_th(8,2,0)
 import GHC.ForeignSrcLang.Type (ForeignSrcLang)
 import TextShow.TH (deriveTextShow)
 
 -- | /Since: 3.6/
 $(deriveTextShow ''ForeignSrcLang)
-#endif
diff --git a/src/TextShow/Language/Haskell/TH.hs b/src/TextShow/Language/Haskell/TH.hs
--- a/src/TextShow/Language/Haskell/TH.hs
+++ b/src/TextShow/Language/Haskell/TH.hs
@@ -174,12 +174,10 @@
   , ''SourceUnpackedness
   , ''TypeFamilyHead
 
-#if MIN_VERSION_template_haskell(2,12,0)
   , ''DerivClause
   , ''DerivStrategy
   , ''PatSynArgs
   , ''PatSynDir
-#endif
 
 #if MIN_VERSION_template_haskell(2,16,0) && !(MIN_VERSION_template_haskell(2,17,0))
   , ''Bytes
diff --git a/src/TextShow/System/Win32.hs b/src/TextShow/System/Win32.hs
--- a/src/TextShow/System/Win32.hs
+++ b/src/TextShow/System/Win32.hs
@@ -22,25 +22,24 @@
 module TextShow.System.Win32 () where
 
 #if defined(mingw32_HOST_OS)
-import System.Win32.DebugApi (DebugEventInfo, Exception)
-import System.Win32.File (BY_HANDLE_FILE_INFORMATION, WIN32_FILE_ATTRIBUTE_DATA)
-import System.Win32.Info (ProcessorArchitecture, SYSTEM_INFO)
-import System.Win32.Time (FILETIME, SYSTEMTIME, TIME_ZONE_INFORMATION, TimeZoneId)
-# if MIN_VERSION_Win32(2,5,0)
+import Graphics.Win32.GDI.AlphaBlend (BLENDFUNCTION)
+
 import Prelude ()
 import Prelude.Compat
 
-import Graphics.Win32.GDI.AlphaBlend (BLENDFUNCTION)
 import System.Win32.Automation.Input (HARDWAREINPUT, INPUT)
 import System.Win32.Automation.Input.Key (KEYBDINPUT)
 import System.Win32.Automation.Input.Mouse (MOUSEINPUT)
+import System.Win32.DebugApi (DebugEventInfo, Exception)
 import System.Win32.Exception.Unsupported (Unsupported(..))
+import System.Win32.File (BY_HANDLE_FILE_INFORMATION, WIN32_FILE_ATTRIBUTE_DATA)
+import System.Win32.Info (ProcessorArchitecture, SYSTEM_INFO)
 import System.Win32.Info.Version (ProductType, OSVERSIONINFOEX)
 import System.Win32.Mem (MEMORY_BASIC_INFORMATION)
 import System.Win32.SimpleMAPI (RecipientClass, Recipient, FileTag, Attachment, Message)
+import System.Win32.Time (FILETIME, SYSTEMTIME, TIME_ZONE_INFORMATION, TimeZoneId)
 
 import TextShow (TextShow(..), fromString)
-# endif
 
 import TextShow.TH (deriveTextShow)
 
@@ -64,64 +63,34 @@
 $(deriveTextShow ''TIME_ZONE_INFORMATION)
 -- | /Since: 2/
 $(deriveTextShow ''TimeZoneId)
-
-# if MIN_VERSION_Win32(2,5,0)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''BLENDFUNCTION)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''KEYBDINPUT)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''MOUSEINPUT)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''HARDWAREINPUT)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''INPUT)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''ProductType)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''OSVERSIONINFOEX)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''MEMORY_BASIC_INFORMATION)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''RecipientClass)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''Recipient)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''FileTag)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''Attachment)
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 $(deriveTextShow ''Message)
 
--- | Only available with @Win32-2.5.0.0@ or later.
---
--- /Since: 3.6/
+-- | /Since: 3.6/
 instance TextShow Unsupported where
   showb (MissingLibrary  name reason)
     = "Can't load library \"" <> fromString name <> "\". "  <> fromString reason
@@ -129,5 +98,4 @@
     = "Can't find \"" <> fromString name <> "\" function. " <> fromString reason
   showb (MissingValue    name reason)
     = "Can't use \""  <> fromString name <> "\" value. "    <> fromString reason
-# endif
 #endif
diff --git a/tests/Instances/Data/Containers.hs b/tests/Instances/Data/Containers.hs
--- a/tests/Instances/Data/Containers.hs
+++ b/tests/Instances/Data/Containers.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP                #-}
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE TemplateHaskell    #-}
@@ -19,10 +18,6 @@
 import           Data.Graph (SCC(..))
 import           Data.Sequence (ViewL(..), ViewR(..))
 
-#if !(MIN_VERSION_containers(0,5,9))
-import           GHC.Generics (Generic)
-#endif
-
 import           Instances.Utils.GenericArbitrary (genericArbitrary)
 
 import           Test.QuickCheck (Arbitrary(..))
@@ -36,13 +31,3 @@
 
 instance Arbitrary a => Arbitrary (ViewR a) where
     arbitrary = genericArbitrary
-
-#if !(MIN_VERSION_containers(0,5,8))
-deriving instance Generic (ViewL a)
-deriving instance Generic (ViewR a)
-#endif
-
-#if !(MIN_VERSION_containers(0,5,9))
-deriving instance Show vertex => Show (SCC vertex)
-deriving instance Generic (SCC vertex)
-#endif
diff --git a/tests/Instances/Data/Time.hs b/tests/Instances/Data/Time.hs
--- a/tests/Instances/Data/Time.hs
+++ b/tests/Instances/Data/Time.hs
@@ -1,6 +1,6 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP                #-}
 
-#if MIN_VERSION_time(1,8,0)
+#if !MIN_VERSION_time(1,14,0)
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE StandaloneDeriving #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
@@ -18,7 +18,7 @@
 -}
 module Instances.Data.Time () where
 
-#if MIN_VERSION_time(1,8,0)
+#if !MIN_VERSION_time(1,14,0)
 import Data.Time.Clock.System (SystemTime(..))
 import GHC.Generics (Generic)
 import Test.QuickCheck.Instances.Time ()
diff --git a/tests/Instances/GHC/ForeignSrcLang/Type.hs b/tests/Instances/GHC/ForeignSrcLang/Type.hs
--- a/tests/Instances/GHC/ForeignSrcLang/Type.hs
+++ b/tests/Instances/GHC/ForeignSrcLang/Type.hs
@@ -1,9 +1,5 @@
-{-# LANGUAGE CPP                #-}
-
-#if MIN_VERSION_ghc_boot_th(8,2,0)
 {-# LANGUAGE StandaloneDeriving #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
-#endif
 
 {-|
 Module:      Instances.GHC.ForeignSrcLang.Type
@@ -17,7 +13,6 @@
 -}
 module Instances.GHC.ForeignSrcLang.Type () where
 
-#if MIN_VERSION_ghc_boot_th(8,2,0)
 import GHC.ForeignSrcLang.Type (ForeignSrcLang(..))
 import Test.QuickCheck (Arbitrary(..), arbitraryBoundedEnum)
 
@@ -25,4 +20,3 @@
 deriving instance Enum ForeignSrcLang
 instance Arbitrary ForeignSrcLang where
     arbitrary = arbitraryBoundedEnum
-#endif
diff --git a/tests/Instances/System/Win32.hs b/tests/Instances/System/Win32.hs
--- a/tests/Instances/System/Win32.hs
+++ b/tests/Instances/System/Win32.hs
@@ -22,26 +22,24 @@
 #if defined(mingw32_HOST_OS)
 import           GHC.Generics (Generic)
 
+import           Graphics.Win32.GDI.AlphaBlend (BLENDFUNCTION(..))
+
 import           Instances.Miscellaneous ()
 import           Instances.Utils.GenericArbitrary (genericArbitrary)
 
-import           System.Win32.DebugApi (DebugEventInfo(..), Exception(..))
-import           System.Win32.File (BY_HANDLE_FILE_INFORMATION(..), WIN32_FILE_ATTRIBUTE_DATA(..))
-import           System.Win32.Info (ProcessorArchitecture(..), SYSTEM_INFO(..))
-import           System.Win32.Time (FILETIME(..), SYSTEMTIME(..),
-                                    TIME_ZONE_INFORMATION(..), TimeZoneId(..))
-
-#if MIN_VERSION_Win32(2,5,0)
-import           Graphics.Win32.GDI.AlphaBlend (BLENDFUNCTION(..))
 import           System.Win32.Automation.Input (HARDWAREINPUT(..), INPUT(..))
 import           System.Win32.Automation.Input.Key (KEYBDINPUT(..))
 import           System.Win32.Automation.Input.Mouse (MOUSEINPUT(..))
+import           System.Win32.DebugApi (DebugEventInfo(..), Exception(..))
 import           System.Win32.Exception.Unsupported (Unsupported(..))
+import           System.Win32.File (BY_HANDLE_FILE_INFORMATION(..), WIN32_FILE_ATTRIBUTE_DATA(..))
+import           System.Win32.Info (ProcessorArchitecture(..), SYSTEM_INFO(..))
 import           System.Win32.Info.Version (ProductType(..), OSVERSIONINFOEX(..))
 import           System.Win32.Mem (MEMORY_BASIC_INFORMATION(..))
 import           System.Win32.SimpleMAPI (RecipientClass(..), Recipient(..), FileTag(..),
                                           Attachment(..), Message(..))
-#endif
+import           System.Win32.Time (FILETIME(..), SYSTEMTIME(..),
+                                    TIME_ZONE_INFORMATION(..), TimeZoneId(..))
 
 import           Test.QuickCheck (Arbitrary(..), arbitraryBoundedEnum)
 
@@ -76,7 +74,6 @@
 instance Arbitrary TimeZoneId where
     arbitrary = arbitraryBoundedEnum
 
-#if MIN_VERSION_Win32(2,5,0)
 instance Arbitrary BLENDFUNCTION where
     arbitrary = genericArbitrary
 
@@ -119,7 +116,6 @@
 
 instance Arbitrary Unsupported where
     arbitrary = genericArbitrary
-#endif
 
 deriving instance Generic DebugEventInfo
 deriving instance Generic Exception
@@ -129,7 +125,6 @@
 deriving instance Generic SYSTEM_INFO
 deriving instance Generic SYSTEMTIME
 deriving instance Generic TIME_ZONE_INFORMATION
-# if MIN_VERSION_Win32(2,5,0)
 deriving instance Generic BLENDFUNCTION
 deriving instance Generic KEYBDINPUT
 deriving instance Generic MOUSEINPUT
@@ -144,5 +139,4 @@
 deriving instance Generic Attachment
 deriving instance Generic Message
 deriving instance Generic Unsupported
-# endif
 #endif
diff --git a/tests/Spec/Data/ContainersSpec.hs b/tests/Spec/Data/ContainersSpec.hs
--- a/tests/Spec/Data/ContainersSpec.hs
+++ b/tests/Spec/Data/ContainersSpec.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE CPP #-}
-
 {-|
 Module:      Spec.Data.ContainersSpec
 Copyright:   (C) 2014-2017 Ryan Scott
@@ -23,10 +21,7 @@
 
 import Instances.Data.Containers ()
 
-import Spec.Utils (matchesTextShowSpec)
-#if MIN_VERSION_containers(0,5,9)
-import Spec.Utils (matchesTextShow1Spec, matchesTextShow2Spec)
-#endif
+import Spec.Utils (matchesTextShowSpec, matchesTextShow1Spec, matchesTextShow2Spec)
 
 import Test.Hspec (Spec, describe, hspec, parallel)
 import Test.QuickCheck.Instances ()
@@ -42,26 +37,20 @@
         let p :: Proxy (IntMap Char)
             p = Proxy
         matchesTextShowSpec  p
-#if MIN_VERSION_containers(0,5,9)
         matchesTextShow1Spec p
-#endif
     describe "IntSet" $
         matchesTextShowSpec (Proxy :: Proxy IntSet)
     describe "Map Char Char" $ do
         let p :: Proxy (Map Char Char)
             p = Proxy
         matchesTextShowSpec  p
-#if MIN_VERSION_containers(0,5,9)
         matchesTextShow1Spec p
         matchesTextShow2Spec p
-#endif
     describe "Sequence Char" $ do
         let p :: Proxy (Seq Char)
             p = Proxy
         matchesTextShowSpec  p
-#if MIN_VERSION_containers(0,5,9)
         matchesTextShow1Spec p
-#endif
     describe "ViewL Char" $
         matchesTextShowSpec (Proxy :: Proxy (ViewL Char))
     describe "ViewR Char" $
@@ -70,24 +59,14 @@
         let p :: Proxy (SCC Char)
             p = Proxy
         matchesTextShowSpec  p
-#if MIN_VERSION_containers(0,5,9)
         matchesTextShow1Spec p
-#endif
     describe "Set Char" $ do
         let p :: Proxy (Set Char)
             p = Proxy
         matchesTextShowSpec  p
-#if MIN_VERSION_containers(0,5,9)
         matchesTextShow1Spec p
-#endif
     describe "Tree Char" $ do
         let p :: Proxy (Tree Char)
             p = Proxy
         matchesTextShowSpec  p
-#if MIN_VERSION_containers(0,5,9)
-        {-
-        Disabled for now until a version of containers incorporating
-        https://github.com/haskell/containers/pull/381 has been released.
-        -}
-        -- matchesTextShow1Spec p
-#endif
+        matchesTextShow1Spec p
diff --git a/tests/Spec/Data/TimeSpec.hs b/tests/Spec/Data/TimeSpec.hs
--- a/tests/Spec/Data/TimeSpec.hs
+++ b/tests/Spec/Data/TimeSpec.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE CPP #-}
-
 {-|
 Module:      Spec.Data.TimeSpec
 Copyright:   (C) 2014-2017 Ryan Scott
@@ -16,9 +14,7 @@
 import Data.Time (UniversalTime)
 import Data.Time.Calendar (Day)
 import Data.Time.Clock (DiffTime, UTCTime, NominalDiffTime)
-#if MIN_VERSION_time(1,8,0)
 import Data.Time.Clock.System (SystemTime)
-#endif
 import Data.Time.Clock.TAI (AbsoluteTime)
 import Data.Time.LocalTime (TimeZone, TimeOfDay, LocalTime, ZonedTime)
 
@@ -56,7 +52,5 @@
         matchesTextShowSpec (Proxy :: Proxy ZonedTime)
     describe "UniversalTime" $
         matchesTextShowSpec (Proxy :: Proxy UniversalTime)
-#if MIN_VERSION_time(1,8,0)
     describe "SystemTime" $
         matchesTextShowSpec (Proxy :: Proxy SystemTime)
-#endif
diff --git a/tests/Spec/GHC/ForeignSrcLang/TypeSpec.hs b/tests/Spec/GHC/ForeignSrcLang/TypeSpec.hs
--- a/tests/Spec/GHC/ForeignSrcLang/TypeSpec.hs
+++ b/tests/Spec/GHC/ForeignSrcLang/TypeSpec.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE CPP #-}
-
 {-|
 Module:      Spec.GHC.ForeignSrcLang.TypeSpec
 Copyright:   (C) 2014-2017 Ryan Scott
@@ -12,28 +10,25 @@
 -}
 module Spec.GHC.ForeignSrcLang.TypeSpec (main, spec) where
 
-import Prelude ()
-import Prelude.Compat
-
-import Test.Hspec (Spec, hspec, parallel)
-
-#if MIN_VERSION_ghc_boot_th(8,2,0)
 import Data.Proxy (Proxy(..))
+
 import GHC.ForeignSrcLang.Type (ForeignSrcLang)
+
 import Instances.GHC.ForeignSrcLang.Type ()
+
+import Prelude ()
+import Prelude.Compat
+
 import Spec.Utils (matchesTextShowSpec)
-import Test.Hspec (describe)
+
+import Test.Hspec (Spec, describe, hspec, parallel)
+
 import TextShow.GHC.ForeignSrcLang.Type ()
-#endif
 
 main :: IO ()
 main = hspec spec
 
 spec :: Spec
 spec = parallel $ do
-#if MIN_VERSION_ghc_boot_th(8,2,0)
     describe "ForeignSrcLang" $
         matchesTextShowSpec (Proxy :: Proxy ForeignSrcLang)
-#else
-    pure ()
-#endif
diff --git a/tests/Spec/System/Win32Spec.hs b/tests/Spec/System/Win32Spec.hs
--- a/tests/Spec/System/Win32Spec.hs
+++ b/tests/Spec/System/Win32Spec.hs
@@ -19,25 +19,23 @@
 #if defined(mingw32_HOST_OS)
 import Data.Proxy (Proxy(..))
 
+import Graphics.Win32.GDI.AlphaBlend (BLENDFUNCTION)
+
 import Instances.System.Win32 ()
 
 import Spec.Utils (matchesTextShowSpec)
 
-import System.Win32.DebugApi (DebugEventInfo, Exception)
-import System.Win32.File (BY_HANDLE_FILE_INFORMATION, WIN32_FILE_ATTRIBUTE_DATA)
-import System.Win32.Info (ProcessorArchitecture, SYSTEM_INFO)
-import System.Win32.Time (FILETIME, SYSTEMTIME, TIME_ZONE_INFORMATION, TimeZoneId)
-
-# if MIN_VERSION_Win32(2,5,0)
-import Graphics.Win32.GDI.AlphaBlend (BLENDFUNCTION)
 import System.Win32.Automation.Input (HARDWAREINPUT, INPUT)
 import System.Win32.Automation.Input.Key (KEYBDINPUT)
 import System.Win32.Automation.Input.Mouse (MOUSEINPUT)
+import System.Win32.DebugApi (DebugEventInfo, Exception)
 import System.Win32.Exception.Unsupported (Unsupported(..))
+import System.Win32.File (BY_HANDLE_FILE_INFORMATION, WIN32_FILE_ATTRIBUTE_DATA)
+import System.Win32.Info (ProcessorArchitecture, SYSTEM_INFO)
 import System.Win32.Info.Version (ProductType, OSVERSIONINFOEX)
 import System.Win32.Mem (MEMORY_BASIC_INFORMATION)
 import System.Win32.SimpleMAPI (RecipientClass, Recipient, FileTag, Attachment, Message)
-# endif
+import System.Win32.Time (FILETIME, SYSTEMTIME, TIME_ZONE_INFORMATION, TimeZoneId)
 
 import Test.Hspec (describe)
 
@@ -70,7 +68,6 @@
         matchesTextShowSpec (Proxy :: Proxy TIME_ZONE_INFORMATION)
     describe "TimeZoneId" $
         matchesTextShowSpec (Proxy :: Proxy TimeZoneId)
-# if MIN_VERSION_Win32(2,5,0)
     describe "BLENDFUNCTION" $
         matchesTextShowSpec (Proxy :: Proxy BLENDFUNCTION)
     describe "KEYBDINPUT" $
@@ -99,7 +96,6 @@
         matchesTextShowSpec (Proxy :: Proxy Message)
     describe "Unsupported" $
         matchesTextShowSpec (Proxy :: Proxy Unsupported)
-# endif
 #else
     pure ()
 #endif
diff --git a/text-show-instances.cabal b/text-show-instances.cabal
--- a/text-show-instances.cabal
+++ b/text-show-instances.cabal
@@ -1,5 +1,5 @@
 name:                text-show-instances
-version:             3.9.8
+version:             3.9.9
 synopsis:            Additional instances for text-show
 description:         @text-show-instances@ is a supplemental library to @text-show@
                      that provides additional @Show@ instances for data types in
@@ -73,8 +73,7 @@
 copyright:           (C) 2014-2017 Ryan Scott
 category:            Text
 build-type:          Simple
-tested-with:         GHC == 8.0.2
-                   , GHC == 8.2.2
+tested-with:         GHC == 8.2.2
                    , GHC == 8.4.4
                    , GHC == 8.6.5
                    , GHC == 8.8.4
@@ -82,9 +81,10 @@
                    , GHC == 9.0.2
                    , GHC == 9.2.8
                    , GHC == 9.4.8
-                   , GHC == 9.6.5
+                   , GHC == 9.6.6
                    , GHC == 9.8.2
                    , GHC == 9.10.1
+                   , GHC == 9.12.1
 extra-source-files:  CHANGELOG.md, README.md
 cabal-version:       >=1.10
 
@@ -110,6 +110,7 @@
                        TextShow.Data.UUID
                        TextShow.Data.Vector
                        TextShow.Data.Vector.NonEmpty
+                       TextShow.GHC.ForeignSrcLang.Type
                        TextShow.GHC.LanguageExtensions.Type
                        TextShow.Language.Haskell.TH
                        TextShow.System.Console.Haskeline
@@ -121,9 +122,6 @@
                        TextShow.Text.XHtml
                        TextShow.Trace.Hpc
 
-                       -- Only exports functions if using ghc-boot-th-8.2 or later
-                       TextShow.GHC.ForeignSrcLang.Type
-
                        -- Only exports functions if using Windows
                        TextShow.System.Win32
 
@@ -131,34 +129,34 @@
                        TextShow.System.Console.Terminfo
                        TextShow.System.Posix
   other-modules:       TextShow.Utils
-  build-depends:       aeson                 >= 2.0.3   && < 2.3
-                     , base                  >= 4.9     && < 4.21
-                     , base-compat           >= 0.10    && < 1
-                     , bifunctors            >= 5.2     && < 6
-                     , binary                >= 0.8.3   && < 0.9
-                     , containers            >= 0.5.7.1 && < 0.8
-                     , directory             >= 1.3     && < 1.4
-                     , ghc-boot-th           >= 8.0     && < 9.11
-                     , haskeline             >= 0.7.3   && < 0.9
-                     , hpc                   >= 0.6     && < 0.8
-                     , nonempty-vector       >= 0.2     && < 0.3
-                     , old-locale            >= 1       && < 1.1
-                     , old-time              >= 1.1     && < 1.2
-                     , pretty                >= 1.1.3.3 && < 1.2
-                     , random                >= 1.0.1   && < 1.3
-                     , scientific            >= 0.3.7   && < 0.4
-                     , semigroups            >= 0.16.2  && < 1
-                     , tagged                >= 0.4.4   && < 1
-                     , template-haskell      >= 2.11    && < 2.23
-                     , text                  >= 0.11.1  && < 2.2
-                     , text-short            >= 0.1     && < 0.2
-                     , text-show             >= 3.4     && < 4
-                     , time                  >= 1.6.0.1 && < 1.13
-                     , transformers          >= 0.5     && < 0.7
-                     , unordered-containers  >= 0.2     && < 0.3
-                     , uuid-types            >= 1       && < 1.1
-                     , vector                >= 0.12    && < 0.14
-                     , xhtml                 >= 3000.2  && < 3000.3
+  build-depends:       aeson                 >= 2.0.3    && < 2.3
+                     , base                  >= 4.10     && < 4.22
+                     , base-compat           >= 0.10     && < 1
+                     , bifunctors            >= 5.2      && < 6
+                     , binary                >= 0.8.3    && < 0.9
+                     , containers            >= 0.5.10.2 && < 0.8
+                     , directory             >= 1.3      && < 1.4
+                     , ghc-boot-th           >= 8.2      && < 9.13
+                     , haskeline             >= 0.7.3    && < 0.9
+                     , hpc                   >= 0.6      && < 0.8
+                     , nonempty-vector       >= 0.2      && < 0.3
+                     , old-locale            >= 1        && < 1.1
+                     , old-time              >= 1.1      && < 1.2
+                     , pretty                >= 1.1.3.3  && < 1.2
+                     , random                >= 1.0.1    && < 1.3
+                     , scientific            >= 0.3.7    && < 0.4
+                     , semigroups            >= 0.16.2   && < 1
+                     , tagged                >= 0.4.4    && < 1
+                     , template-haskell      >= 2.12     && < 2.23
+                     , text                  >= 0.11.1   && < 2.2
+                     , text-short            >= 0.1      && < 0.2
+                     , text-show             >= 3.4      && < 4
+                     , time                  >= 1.8.0.2  && < 1.15
+                     , transformers          >= 0.5      && < 0.7
+                     , unordered-containers  >= 0.2      && < 0.3
+                     , uuid-types            >= 1        && < 1.1
+                     , vector                >= 0.12     && < 0.14
+                     , xhtml                 >= 3000.2   && < 3000.3
   hs-source-dirs:      src
   default-language:    Haskell2010
   ghc-options:         -Wall
@@ -166,10 +164,10 @@
     ghc-options:       -fenable-th-splice-warnings
 
   if os(windows)
-    build-depends:     Win32                 >= 2.3.1.1 && < 2.13
+    build-depends:     Win32                 >= 2.5.4.1  && < 2.13
   else
-    build-depends:     terminfo              >= 0.4     && < 0.5
-                     , unix                  >= 2.7     && < 2.9
+    build-depends:     terminfo              >= 0.4      && < 0.5
+                     , unix                  >= 2.7      && < 2.9
 
 test-suite spec
   type:                exitcode-stdio-1.0
@@ -180,6 +178,7 @@
                        Instances.Data.Containers
                        Instances.Data.Vector
                        Instances.Data.Vector.NonEmpty
+                       Instances.GHC.ForeignSrcLang.Type
                        Instances.GHC.LanguageExtensions.Type
                        Instances.Language.Haskell.TH
                        Instances.Miscellaneous
@@ -193,9 +192,6 @@
                        Instances.Utils
                        Instances.Utils.GenericArbitrary
 
-                       -- Only defines instances if using ghc-boot-th-8.2 or later
-                       Instances.GHC.ForeignSrcLang.Type
-
                        -- Only defines instances if using time-1.8 or later
                        Instances.Data.Time
 
@@ -221,6 +217,7 @@
                        Spec.Data.TimeSpec
                        Spec.Data.UnorderedContainersSpec
                        Spec.Data.UUIDSpec
+                       Spec.GHC.ForeignSrcLang.TypeSpec
                        Spec.GHC.LanguageExtensions.TypeSpec
                        Spec.Language.Haskell.THSpec
                        Spec.System.Console.HaskelineSpec
@@ -233,49 +230,46 @@
                        Spec.Trace.HpcSpec
                        Spec.Utils
 
-                       -- Only exports functions if using ghc-boot-th-8.2 or later
-                       Spec.GHC.ForeignSrcLang.TypeSpec
-
                        -- Only defines tests if using Windows
                        Spec.System.Win32Spec
 
                        -- Only defines tests if not using Windows
                        Spec.System.Console.TerminfoSpec
                        Spec.System.PosixSpec
-  build-depends:       aeson                 >= 2.0.3   && < 2.3
-                     , base                  >= 4.9     && < 4.21
-                     , base-compat           >= 0.10    && < 1
-                     , bifunctors            >= 5.5.5   && < 6
-                     , binary                >= 0.8.3   && < 0.9
-                     , containers            >= 0.5.7.1 && < 0.8
-                     , directory             >= 1.3     && < 1.4
-                     , generic-deriving      >= 1.9     && < 2
-                     , ghc-boot-th           >= 8.0     && < 9.11
+  build-depends:       aeson                 >= 2.0.3    && < 2.3
+                     , base                  >= 4.10     && < 4.22
+                     , base-compat           >= 0.10     && < 1
+                     , bifunctors            >= 5.5.5    && < 6
+                     , binary                >= 0.8.3    && < 0.9
+                     , containers            >= 0.5.10.2 && < 0.8
+                     , directory             >= 1.3      && < 1.4
+                     , generic-deriving      >= 1.9      && < 2
+                     , ghc-boot-th           >= 8.2      && < 9.13
                      , ghc-prim
-                     , haskeline             >= 0.7.3   && < 0.9
-                     , hpc                   >= 0.6     && < 0.8
-                     , hspec                 >= 2       && < 3
-                     , nonempty-vector       >= 0.2     && < 0.3
-                     , old-locale            >= 1       && < 1.1
-                     , old-time              >= 1.1     && < 1.2
-                     , pretty                >= 1.1.3.3 && < 1.2
-                     , QuickCheck            >= 2.12    && < 2.15
-                     , quickcheck-instances  >= 0.3.27  && < 0.4
-                     , random                >= 1.0.1   && < 1.3
-                     , tagged                >= 0.4.4   && < 1
-                     , scientific            >= 0.3.7   && < 0.4
-                     , template-haskell      >= 2.11    && < 2.23
-                     , text-short            >= 0.1     && < 0.2
-                     , text-show             >= 3.10    && < 4
+                     , haskeline             >= 0.7.3    && < 0.9
+                     , hpc                   >= 0.6      && < 0.8
+                     , hspec                 >= 2        && < 3
+                     , nonempty-vector       >= 0.2      && < 0.3
+                     , old-locale            >= 1        && < 1.1
+                     , old-time              >= 1.1      && < 1.2
+                     , pretty                >= 1.1.3.3  && < 1.2
+                     , QuickCheck            >= 2.12     && < 2.16
+                     , quickcheck-instances  >= 0.3.27   && < 0.4
+                     , random                >= 1.0.1    && < 1.3
+                     , tagged                >= 0.4.4    && < 1
+                     , scientific            >= 0.3.7    && < 0.4
+                     , template-haskell      >= 2.12     && < 2.23
+                     , text-short            >= 0.1      && < 0.2
+                     , text-show             >= 3.10     && < 4
                      , text-show-instances
-                     , th-orphans            >= 0.13.8  && < 1
-                     , time                  >= 1.6.0.1 && < 1.13
-                     , transformers          >= 0.5     && < 0.7
-                     , transformers-compat   >= 0.5     && < 1
-                     , unordered-containers  >= 0.2     && < 0.3
-                     , uuid-types            >= 1       && < 1.1
-                     , vector                >= 0.9     && < 0.14
-                     , xhtml                 >= 3000.2  && < 3000.3
+                     , th-orphans            >= 0.13.8   && < 1
+                     , time                  >= 1.8.0.2  && < 1.15
+                     , transformers          >= 0.5      && < 0.7
+                     , transformers-compat   >= 0.5      && < 1
+                     , unordered-containers  >= 0.2      && < 0.3
+                     , uuid-types            >= 1        && < 1.1
+                     , vector                >= 0.9      && < 0.14
+                     , xhtml                 >= 3000.2   && < 3000.3
   build-tool-depends:  hspec-discover:hspec-discover
 
   hs-source-dirs:      tests
@@ -287,7 +281,7 @@
     ghc-options:       -fenable-th-splice-warnings
 
   if os(windows)
-    build-depends:     Win32                 >= 2.3.1.1 && < 2.13
+    build-depends:     Win32                 >= 2.5.4.1  && < 2.13
   else
-    build-depends:     terminfo              >= 0.4     && < 0.5
-                     , unix                  >= 2.7     && < 2.9
+    build-depends:     terminfo              >= 0.4      && < 0.5
+                     , unix                  >= 2.7      && < 2.9
