diff --git a/Text/Regex/PCRE/Wrap.hsc b/Text/Regex/PCRE/Wrap.hsc
--- a/Text/Regex/PCRE/Wrap.hsc
+++ b/Text/Regex/PCRE/Wrap.hsc
@@ -69,6 +69,7 @@
   retNoSubstring
   ) where
 
+import Control.Monad.Fail (MonadFail)
 #if defined(HAVE_PCRE_H)
 import Control.Monad(when)
 import Data.Array(Array,accumArray)
@@ -134,7 +135,7 @@
 
 (=~)  :: (RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target)
       => source1 -> source -> target
-(=~~) :: (RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target,Monad m)
+(=~~) :: (RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target,MonadFail m)
       => source1 -> source -> m target
 
 #if defined(HAVE_PCRE_H)
diff --git a/regex-pcre-builtin.cabal b/regex-pcre-builtin.cabal
--- a/regex-pcre-builtin.cabal
+++ b/regex-pcre-builtin.cabal
@@ -1,6 +1,6 @@
 Name:                   regex-pcre-builtin
 -- Keep the Version below in sync with ./Text/Regex/PCRE.hs value getVersion_Text_Regex_PCRE :: Version
-Version:                0.94.5.8.8.35
+Version:                0.94.6.8.8.35
 Cabal-Version:          >=1.2.3
 License:                BSD3
 License-File:           LICENSE
@@ -26,21 +26,23 @@
   default: True
 library
   if flag(newBase)
-    Build-Depends: base >= 4 && < 5, regex-base >=0.93 && <0.94, array, containers, bytestring
+    Build-Depends: base >= 4 && < 5, regex-base >=0.93 && <0.95, array, containers, bytestring
     -- Need the next symbol for using CPP to get Data.ByteString.Base|Unsafe in
     --  ./Text/Regex/Posix/ByteString.hs and  ./Text/Regex/Posix/ByteString/Lazy.hs
     CPP-Options: "-DSPLIT_BASE=1"
     Extensions:    MultiParamTypeClasses, FunctionalDependencies, CPP, ForeignFunctionInterface, ScopedTypeVariables, GeneralizedNewtypeDeriving, FlexibleContexts, TypeSynonymInstances, FlexibleInstances
   else
     if flag(splitBase)
-      Build-Depends: base >= 3.0, regex-base >=0.93 && <0.94, array, containers, bytestring
+      Build-Depends: base >= 3.0, regex-base >=0.93 && <0.95, array, containers, bytestring
       -- Need the next symbol for using CPP to get Data.ByteString.Base|Unsafe in
       --  ./Text/Regex/Posix/ByteString.hs and  ./Text/Regex/Posix/ByteString/Lazy.hs
       CPP-Options: "-DSPLIT_BASE=1"
       Extensions:    MultiParamTypeClasses, FunctionalDependencies, CPP, ForeignFunctionInterface, ScopedTypeVariables, GeneralizedNewtypeDeriving, FlexibleContexts, TypeSynonymInstances, FlexibleInstances
     else
-      Build-Depends: base < 3.0, regex-base >=0.93 && <0.94
+      Build-Depends: base < 3.0, regex-base >=0.93 && <0.95
       Extensions:    MultiParamTypeClasses, FunctionalDependencies, CPP
+  if impl(ghc < 8)
+    Build-Depends: fail
   Exposed-Modules:        Text.Regex.PCRE
                           Text.Regex.PCRE.Wrap
                           Text.Regex.PCRE.String
