diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.9.1 - 2019-09-03
+
+* Relax upper version bounds to support GHC 8.8.1 ([#49](https://github.com/haskell/ghc-events/pull/49) and [#51](https://github.com/haskell/ghc-events/pull/51))
+
 ## 0.9.0 - 2019-05-15
 
 * Support the newly added par_balanced_copied field ([#47](https://github.com/haskell/ghc-events/pull/47))
diff --git a/ghc-events.cabal b/ghc-events.cabal
--- a/ghc-events.cabal
+++ b/ghc-events.cabal
@@ -1,5 +1,5 @@
 name:             ghc-events
-version:          0.9.0
+version:          0.9.1
 synopsis:         Library and tool for parsing .eventlog files from GHC
 description:      Parses .eventlog files emitted by GHC 6.12.1 and later.
                   Includes the ghc-events tool permitting, in particular,
@@ -25,7 +25,8 @@
                   GHC == 8.0.2
                   GHC == 8.2.2
                   GHC == 8.4.4
-                  GHC == 8.6.4
+                  GHC == 8.6.5
+                  GHC == 8.8.1
 cabal-version:    >= 1.8
 extra-source-files: include/EventLogFormat.h
                     test/queens-ghc-6.12.1.eventlog
@@ -68,7 +69,7 @@
   location: git@github.com:haskell/ghc-events.git
 
 library
-  build-depends:    base       >= 4.7 && < 4.13,
+  build-depends:    base       >= 4.7 && < 4.14,
                     containers >= 0.5 && < 0.7,
                     binary     >= 0.7 && < 0.11,
                     bytestring >= 0.10.4,
diff --git a/src/GHC/RTS/Events.hs b/src/GHC/RTS/Events.hs
--- a/src/GHC/RTS/Events.hs
+++ b/src/GHC/RTS/Events.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE MultiWayIf #-}
 {-# OPTIONS_GHC -fsimpl-tick-factor=150 #-}
@@ -75,10 +76,8 @@
 import qualified Data.ByteString.Lazy as BL
 import Data.IntMap (IntMap)
 import qualified Data.IntMap as IM
-import Data.Foldable (foldMap)
 import Data.Function hiding (id)
 import Data.List
-import Data.Monoid ((<>), mempty)
 import Data.String (IsString)
 import qualified Data.Text as T
 import qualified Data.Text.Lazy as TL
@@ -93,6 +92,15 @@
 import GHC.RTS.EventTypes
 import GHC.RTS.Events.Binary
 import GHC.RTS.Events.Incremental
+
+#if !MIN_VERSION_base(4, 8, 0)
+import Data.Foldable (foldMap)
+import Data.Monoid (mempty)
+#endif
+
+#if !MIN_VERSION_base(4, 11, 0)
+import Data.Monoid ((<>))
+#endif
 
 -- | Read an entire eventlog file. It returns an error message if it
 -- encouters an error while decoding.
diff --git a/src/GHC/RTS/Events/Incremental.hs b/src/GHC/RTS/Events/Incremental.hs
--- a/src/GHC/RTS/Events/Incremental.hs
+++ b/src/GHC/RTS/Events/Incremental.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE MultiWayIf #-}
+
 module GHC.RTS.Events.Incremental
   ( -- * Incremental API
     Decoder(..)
@@ -110,12 +111,12 @@
       Left decoder -> case decoder of
         Produce header decoder' -> case decoder' of
           Done leftover -> Right (header, BL.Chunk leftover bytes)
-          _ -> fail "readHeader: unexpected decoder"
+          _ -> Left "readHeader: unexpected decoder"
         Consume k -> case bytes of
-          BL.Empty -> fail "readHeader: not enough bytes"
+          BL.Empty -> Left "readHeader: not enough bytes"
           BL.Chunk chunk chunks -> go (Left $! k chunk) chunks
-        Done _ -> fail "readHeader: unexpected termination"
-        Error _ err -> fail err
+        Done _ -> Left "readHeader: unexpected termination"
+        Error _ err -> Left err
       Right header -> Right (header, bytes)
 
 
