diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,4 +1,11 @@
+See also http://pvp.haskell.org/faq
+
 # Revision history for `resolv`
+
+## 0.1.1.3
+
+* GHC 8.8 / base-4.13 only compat hotfix release; the next release will support
+  older GHC/base versions again
 
 ## 0.1.1.2
 
diff --git a/resolv.cabal b/resolv.cabal
--- a/resolv.cabal
+++ b/resolv.cabal
@@ -1,7 +1,7 @@
-cabal-version:       1.12
+cabal-version:       2.2
 
 name:                resolv
-version:             0.1.1.2
+version:             0.1.1.3
 
 synopsis:            Domain Name Service (DNS) lookup via the libresolv standard library routines
 description: {
@@ -32,8 +32,7 @@
 provides a compatible subset of this package's API.
 }
 
-X-SPDX-License-Identifier: GPL-2.0-or-later
-license:             GPL-2
+license:             GPL-2.0-or-later
 license-files:       LICENSE LICENSE.GPLv2 LICENSE.GPLv3
 author:              Herbert Valerio Riedel
 maintainer:          hvr@gnu.org
@@ -81,11 +80,11 @@
                      Network.DNS.FFI
                      Compat
 
-  build-depends:     base              >= 4.5 && <4.13
-                   , base16-bytestring == 0.1.*
-                   , binary            >= 0.7.3 && < 0.9
-                   , bytestring        >= 0.9.2 && < 0.11
-                   , containers        >= 0.4.2.1 && < 0.7
+  build-depends:     base              ^>= 4.13
+                   , base16-bytestring ^>= 0.1
+                   , binary            ^>= 0.8
+                   , bytestring        ^>= 0.10
+                   , containers        ^>= 0.5 || ^>= 0.6
 
   ghc-options:       -Wall
   include-dirs:      cbits
diff --git a/src/Network/DNS/Message.hs b/src/Network/DNS/Message.hs
--- a/src/Network/DNS/Message.hs
+++ b/src/Network/DNS/Message.hs
@@ -93,7 +93,7 @@
 
 instance Binary CharStr where
     put (CharStr bs)
-      | BS.length bs > 0xff = fail "putString: string too long"
+      | BS.length bs > 0xff = error "putString: string too long"
       | otherwise = do
             putWord8 (fromIntegral $ BS.length bs)
             putByteString bs
@@ -593,7 +593,7 @@
         rdataLen = BSL.length rdata
 
     unless (rdataLen < 0x10000) $
-        fail "rdata too large"
+        error "rdata too large"
 
     putWord16be (fromIntegral rdataLen)
     putLazyByteString rdata
@@ -740,7 +740,7 @@
 
 encodeNsecTypeMap :: Set Type -> Put
 encodeNsecTypeMap bmap = do
-    when (Set.null bmap) $ fail "invalid empty type-map"
+    when (Set.null bmap) $ error "invalid empty type-map"
     -- when (Set.member 0 bmap) $ fail "invalid TYPE0 set in type-map"
     -- TODO: verify that Meta-TYPES and QTYPEs aren't contained in bmap
 
