diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,6 @@
+# Revision history for bzlib
+
+## 0.5.1.0 -- 2020-06-08
+
+* Added `MonadFail` instance
+* Constrained bounds on `base`
diff --git a/Codec/Compression/BZip/Stream.hsc b/Codec/Compression/BZip/Stream.hsc
--- a/Codec/Compression/BZip/Stream.hsc
+++ b/Codec/Compression/BZip/Stream.hsc
@@ -69,10 +69,13 @@
 import Data.ByteString.Internal (nullForeignPtr)
 import System.IO.Unsafe (unsafeInterleaveIO)
 import System.IO (hPutStrLn, stderr)
+#if !MIN_VERSION_base(4,13,0)
 import Control.Applicative (Applicative(..))
+#endif
 import Control.Monad (liftM, ap)
 import Control.Exception (assert)
 
+import qualified Control.Monad.Fail as Fail
 import Prelude hiding (length)
 
 #include "bzlib.h"
@@ -233,6 +236,11 @@
 --  m >>= f = (m `thenZ` \a -> consistencyCheck `thenZ_` returnZ a) `thenZ` f
   (>>)   = thenZ_
   return = returnZ
+#if !MIN_VERSION_base(4,13,0)
+  fail = Fail.fail
+#endif
+
+instance Fail.MonadFail Stream where
   fail   = (finalise >>) . failZ
 
 returnZ :: a -> Stream a
diff --git a/bzlib.cabal b/bzlib.cabal
--- a/bzlib.cabal
+++ b/bzlib.cabal
@@ -1,5 +1,5 @@
 name:            bzlib
-version:         0.5.0.5
+version:         0.5.1.0
 copyright:       (c) 2006-2015 Duncan Coutts
 license:         BSD3
 license-file:    LICENSE
@@ -16,22 +16,32 @@
                  tasks and for the few cases where more control is needed it
                  provides access to the full bzip2 feature set.
 build-type:      Simple
-cabal-version:   >= 1.6
+cabal-version:   >= 1.10
 extra-source-files: cbits/bzlib_private.h cbits/LICENSE
                     -- demo programs:
                     examples/bzip2.hs examples/bunzip2.hs
+                    -- changelog
+                    CHANGELOG.md
 
 source-repository head
   type: darcs
   location: http://code.haskell.org/bzlib/
 
+source-repository this
+  type: git
+  location: https://github.com/hackage-trustees/bzlib.git
+  tag: 0.5.1.0
+
 library
+  default-language: Haskell2010
   exposed-modules: Codec.Compression.BZip,
                    Codec.Compression.BZip.Internal
   other-modules:   Codec.Compression.BZip.Stream
-  extensions:      CPP, ForeignFunctionInterface
-  build-depends:   base >= 3 && < 5,
+  default-extensions: CPP, ForeignFunctionInterface
+  build-depends:   base >= 4.3 && < 4.15,
                    bytestring == 0.9.* || == 0.10.*
+  if !impl(ghc >=8.0)
+    build-depends: fail ==4.9.*
   includes:        bzlib.h
   ghc-options:     -Wall
   if !os(windows)
