diff --git a/CHANGELOG.rst b/CHANGELOG.rst
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -7,6 +7,19 @@
 .. _PVP: https://pvp.haskell.org/
 
 
+2.1.0.1 (2019-10-04)
+--------------------
+
+* Git: :tag:`dejafu-2.1.0.1`
+* Hackage: :hackage:`dejafu-2.1.0.1`
+
+Miscellaneous
+~~~~~~~~~~~~~
+
+* Fixed a compilation error with GHC 8.8
+* The upper version bound on :hackage:`concurrency` is <1.9.
+
+
 2.1.0.0 (2019-03-24)
 --------------------
 
diff --git a/Test/DejaFu/Conc/Internal/Common.hs b/Test/DejaFu/Conc/Internal/Common.hs
--- a/Test/DejaFu/Conc/Internal/Common.hs
+++ b/Test/DejaFu/Conc/Internal/Common.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE ExistentialQuantification #-}
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE RankNTypes #-}
@@ -8,7 +9,7 @@
 -- License     : MIT
 -- Maintainer  : Michael Walker <mike@barrucadu.co.uk>
 -- Stability   : experimental
--- Portability : ExistentialQuantification, GADTs, RankNTypes
+-- Portability : CPP, ExistentialQuantification, GADTs, RankNTypes
 --
 -- Common types and utility functions for deterministic execution of
 -- 'MonadConc' implementations. This module is NOT considered to form
@@ -95,9 +96,13 @@
 
 instance (pty ~ Basic) => Monad (Program pty n) where
   return  = pure
-  fail    = Fail.fail
   m >>= k = ModelConc $ \c -> runModelConc m (\x -> runModelConc (k x) c)
 
+#if MIN_VERSION_base(4,13,0)
+#else
+  fail = Fail.fail
+#endif
+
 instance (pty ~ Basic) => Fail.MonadFail (Program pty n) where
   fail e = ModelConc $ \_ -> AThrow (MonadFailException e)
 
@@ -243,8 +248,12 @@
 
 instance Monad (Invariant n) where
   return  = pure
-  fail    = Fail.fail
   m >>= k = Invariant $ \c -> runInvariant m (\x -> runInvariant (k x) c)
+
+#if MIN_VERSION_base(4,13,0)
+#else
+  fail = Fail.fail
+#endif
 
 instance Fail.MonadFail (Invariant n) where
   fail e = Invariant $ \_ -> IThrow (MonadFailException e)
diff --git a/Test/DejaFu/Conc/Internal/STM.hs b/Test/DejaFu/Conc/Internal/STM.hs
--- a/Test/DejaFu/Conc/Internal/STM.hs
+++ b/Test/DejaFu/Conc/Internal/STM.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE ExistentialQuantification #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TypeFamilies #-}
@@ -11,7 +12,7 @@
 -- License     : MIT
 -- Maintainer  : Michael Walker <mike@barrucadu.co.uk>
 -- Stability   : experimental
--- Portability : ExistentialQuantification, NoMonoLocalBinds, RecordWildCards, TypeFamilies
+-- Portability : CPP, ExistentialQuantification, NoMonoLocalBinds, RecordWildCards, TypeFamilies
 --
 -- 'MonadSTM' testing implementation, internal types and definitions.
 -- This module is NOT considered to form part of the public interface
@@ -51,7 +52,10 @@
     return  = pure
     m >>= k = ModelSTM $ \c -> runModelSTM m (\x -> runModelSTM (k x) c)
 
+#if MIN_VERSION_base(4,13,0)
+#else
     fail = Fail.fail
+#endif
 
 instance Fail.MonadFail (ModelSTM n) where
     fail e = ModelSTM $ \_ -> SThrow (MonadFailException e)
diff --git a/dejafu.cabal b/dejafu.cabal
--- a/dejafu.cabal
+++ b/dejafu.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                dejafu
-version:             2.1.0.0
+version:             2.1.0.1
 synopsis:            A library for unit-testing concurrent programs.
 
 description:
@@ -33,7 +33,7 @@
 source-repository this
   type:     git
   location: https://github.com/barrucadu/dejafu.git
-  tag:      dejafu-2.1.0.0
+  tag:      dejafu-2.1.0.1
 
 library
   exposed-modules:     Test.DejaFu
@@ -59,7 +59,7 @@
   -- other-modules:       
   -- other-extensions:    
   build-depends:       base              >=4.9 && <5
-                     , concurrency       >=1.7 && <1.8
+                     , concurrency       >=1.7 && <1.9
                      , containers        >=0.5 && <0.7
                      , contravariant     >=1.2 && <1.6
                      , deepseq           >=1.1 && <2
