diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+0.2.7
+
+  * Support for GHC 8.8
+    (2019-12-10 Simon Jakobi <simon.jakobi@gmail.com>)
+
 0.2.6
 
   * Support for GHC 8.6
diff --git a/ghc-events-analyze.cabal b/ghc-events-analyze.cabal
--- a/ghc-events-analyze.cabal
+++ b/ghc-events-analyze.cabal
@@ -1,5 +1,5 @@
 name:                ghc-events-analyze
-version:             0.2.6
+version:             0.2.7
 synopsis:            Analyze and visualize event logs
 description:         ghc-events-analyze is a simple Haskell profiling tool that
                      uses GHC's eventlog system. It helps with some profiling
@@ -51,7 +51,7 @@
                        GHC.RTS.Events.Analyze.Reports.Timed
                        GHC.RTS.Events.Analyze.Reports.Timed.SVG
 
-  build-depends:       base                 >= 4.8   && < 4.14,
+  build-depends:       base                 >= 4.9   && < 4.14,
                        blaze-svg            >= 0.3   && < 0.4,
                        bytestring           >= 0.10  && < 0.11,
                        containers           >= 0.5   && < 0.7,
@@ -64,8 +64,8 @@
                        mtl                  >= 2.2.1 && < 2.3,
                        optparse-applicative >= 0.11  && < 0.16,
                        parsec               >= 3.1   && < 3.2,
-                       regex-base           >= 0.93  && < 0.94,
-                       regex-pcre-builtin   >= 0.94  && < 0.95,
+                       regex-base           >= 0.93  && < 0.95,
+                       regex-pcre-builtin   >= 0.94  && < 0.96,
                        SVGFonts             >= 1.5   && < 1.8,
                        th-lift              >= 0.6   && < 0.9,
                        transformers         >= 0.3   && < 0.6,
diff --git a/src/GHC/RTS/Events/Analyze.hs b/src/GHC/RTS/Events/Analyze.hs
--- a/src/GHC/RTS/Events/Analyze.hs
+++ b/src/GHC/RTS/Events/Analyze.hs
@@ -7,10 +7,6 @@
 import System.FilePath (replaceExtension, takeFileName)
 import Text.Parsec.String (parseFromFile)
 
-#if !MIN_VERSION_base(4,8,0)
-import Control.Applicative ((<$>))
-#endif
-
 import GHC.RTS.Events.Analyze.Analysis
 import GHC.RTS.Events.Analyze.Options
 import qualified GHC.RTS.Events.Analyze.Reports.Totals    as Totals
diff --git a/src/GHC/RTS/Events/Analyze/Analysis.hs b/src/GHC/RTS/Events/Analyze/Analysis.hs
--- a/src/GHC/RTS/Events/Analyze/Analysis.hs
+++ b/src/GHC/RTS/Events/Analyze/Analysis.hs
@@ -33,10 +33,6 @@
   )
 import qualified GHC.RTS.Events as Events
 
-#if !MIN_VERSION_base(4,8,0)
-import Control.Applicative ((<$>))
-#endif
-
 import GHC.RTS.Events.Analyze.Utils
 import GHC.RTS.Events.Analyze.StrictState (State, execState, put, get, runState)
 import GHC.RTS.Events.Analyze.Types
diff --git a/src/GHC/RTS/Events/Analyze/Options.hs b/src/GHC/RTS/Events/Analyze/Options.hs
--- a/src/GHC/RTS/Events/Analyze/Options.hs
+++ b/src/GHC/RTS/Events/Analyze/Options.hs
@@ -7,10 +7,6 @@
 import Data.Foldable (asum)
 import Options.Applicative
 
-#if !MIN_VERSION_base(4,8,0)
-import Data.Monoid (mconcat)
-#endif
-
 import GHC.RTS.Events.Analyze.Types
 import GHC.RTS.Events.Analyze.Script
 import GHC.RTS.Events.Analyze.Script.Standard
diff --git a/src/GHC/RTS/Events/Analyze/Reports/Timed/SVG.hs b/src/GHC/RTS/Events/Analyze/Reports/Timed/SVG.hs
--- a/src/GHC/RTS/Events/Analyze/Reports/Timed/SVG.hs
+++ b/src/GHC/RTS/Events/Analyze/Reports/Timed/SVG.hs
@@ -17,10 +17,6 @@
 import qualified Graphics.SVGFonts.ReadFont as F
 import qualified Diagrams.TwoD.Text as TT
 
-#if !MIN_VERSION_base(4,8,0)
-import Data.Monoid (mempty, mconcat)
-#endif
-
 import GHC.RTS.Events.Analyze.Types
 import GHC.RTS.Events.Analyze.Reports.Timed hiding (writeReport)
 
diff --git a/src/GHC/RTS/Events/Analyze/Script.hs b/src/GHC/RTS/Events/Analyze/Script.hs
--- a/src/GHC/RTS/Events/Analyze/Script.hs
+++ b/src/GHC/RTS/Events/Analyze/Script.hs
@@ -30,12 +30,8 @@
 import Text.Parsec.Language (haskellDef)
 import qualified Text.Parsec.Token as P
 
-#if !MIN_VERSION_base(4,8,0)
-import Control.Applicative ((<$>), (<*>), (*>), (<*), pure)
-#endif
-
-#if !MIN_VERSION_template_haskell(2,10,0)
-import Data.Word (Word32)
+#if !MIN_VERSION_base(4,13,0)
+import Control.Monad.Fail (MonadFail)
 #endif
 
 import GHC.RTS.Events.Analyze.Types
@@ -277,11 +273,6 @@
 
 $(deriveLiftMany [''EventId, ''EventFilter, ''NameFilter, ''EventSort, ''Command])
 
-#if !MIN_VERSION_template_haskell(2,10,0)
-instance Lift Word32 where
-  lift = let conv :: Word32 -> Int ; conv = fromEnum in lift . conv
-#endif
-
 scriptQQ :: QuasiQuoter
 scriptQQ = QuasiQuoter {
     quoteExp  = \e -> parseScriptString "<<source>>" e >>= lift
@@ -290,7 +281,7 @@
   , quoteDec  = \_ -> fail "Cannot use script as a declaration"
   }
 
-parseScriptString :: Monad m => String -> String -> m (Script String)
+parseScriptString :: MonadFail m => String -> String -> m (Script String)
 parseScriptString source input =
   case runParser pScript () source input of
     Left  err    -> fail (show err)
diff --git a/src/GHC/RTS/Events/Analyze/StrictState.hs b/src/GHC/RTS/Events/Analyze/StrictState.hs
--- a/src/GHC/RTS/Events/Analyze/StrictState.hs
+++ b/src/GHC/RTS/Events/Analyze/StrictState.hs
@@ -22,10 +22,6 @@
 import Control.Monad.Trans.Class (MonadTrans)
 import Control.Monad.Identity (Identity(..))
 
-#if !MIN_VERSION_base(4,8,0)
-import Control.Applicative
-#endif
-
 {-------------------------------------------------------------------------------
   Transformer
 -------------------------------------------------------------------------------}
