diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+## 0.2.2 [2018.02.06]
+---------------------
+* Include `HLint.hs` with the tarball distribution, fixing the `hlint`
+  test suite.
+
 ## 0.2.1
 * Support `doctest-0.12`
 
diff --git a/HLint.hs b/HLint.hs
new file mode 100644
--- /dev/null
+++ b/HLint.hs
@@ -0,0 +1,8 @@
+import "hint" HLint.HLint
+
+ignore "Reduce duplication"
+ignore "Redundant lambda"
+ignore "Use >=>"
+ignore "Use const"
+ignore "Eta reduce"
+ignore "Avoid lambda"
diff --git a/rcu.cabal b/rcu.cabal
--- a/rcu.cabal
+++ b/rcu.cabal
@@ -1,6 +1,6 @@
 name:          rcu
 category:      Data
-version:       0.2.1
+version:       0.2.2
 license:       BSD3
 cabal-version: >= 1.22
 license-file:  LICENSE
@@ -11,14 +11,15 @@
 bug-reports:   http://github.com/ekmett/rcu/issues
 copyright:     Copyright (C) 2015 Edward A. Kmett, Theodore Rhys Cooper
 build-type:    Custom
-tested-with:   GHC == 7.10.3, GHC == 8.0.2
+tested-with:   GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1
 synopsis:      Read-Copy-Update for Haskell
-description:   Read-Copy-Update for Haskell
+description:   Read-Copy-Update for Haskell.
 
 extra-source-files:
   examples/*.hs
   CHANGELOG.markdown
   README.markdown
+  HLint.hs
   Warning.hs
 
 source-repository head
@@ -462,7 +463,7 @@
   else
     build-depends:
       base >= 4.8,
-      doctest >= 0.11.1 && < 0.13,
+      doctest >= 0.11.1 && < 0.14,
       parallel,
       rcu
 
diff --git a/src/Control/Concurrent/RCU/Class.hs b/src/Control/Concurrent/RCU/Class.hs
--- a/src/Control/Concurrent/RCU/Class.hs
+++ b/src/Control/Concurrent/RCU/Class.hs
@@ -34,7 +34,7 @@
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.Maybe
 import Control.Monad.Trans.Reader
-import Prelude hiding (read, Read)
+import Prelude
 import qualified Control.Monad.Trans.RWS.Lazy as Lazy
 import qualified Control.Monad.Trans.RWS.Strict as Strict
 import qualified Control.Monad.Trans.State.Lazy as Lazy
@@ -106,7 +106,7 @@
 
   -- | Synchronize with other writers.
   --
-  -- No other writer can straddle this time bound. It will either see writes from before, or writes after, but never 
+  -- No other writer can straddle this time bound. It will either see writes from before, or writes after, but never
   -- some of both!
   synchronize :: m ()
   default synchronize :: (m ~ t n, MonadTrans t, MonadWriting s n) => m ()
diff --git a/src/Control/Concurrent/RCU/GC/Internal.hs b/src/Control/Concurrent/RCU/GC/Internal.hs
--- a/src/Control/Concurrent/RCU/GC/Internal.hs
+++ b/src/Control/Concurrent/RCU/GC/Internal.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE MagicHash #-}
 {-# LANGUAGE Rank2Types #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE TypeFamilies #-}
@@ -51,7 +50,7 @@
 import Data.IORef
 import Data.List
 import Data.Primitive
-import Prelude hiding (read, Read)
+import Prelude hiding (Read(..))
 import System.Mem
 
 
diff --git a/src/Control/Concurrent/RCU/QSBR/Internal.hs b/src/Control/Concurrent/RCU/QSBR/Internal.hs
--- a/src/Control/Concurrent/RCU/QSBR/Internal.hs
+++ b/src/Control/Concurrent/RCU/QSBR/Internal.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE MagicHash #-}
 {-# LANGUAGE Rank2Types #-}
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE TypeFamilies #-}
@@ -55,7 +54,7 @@
 import Data.Primitive
 import Foreign
 
-import Prelude hiding (read, Read)
+import Prelude hiding (Read(..))
 
 foreign import ccall unsafe "pause.h" pause :: IO ()
 
