diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,12 @@
+## Changes in 0.12.0 [2021.08.29]
+ - `Data.Semigroup.Compat{.Repl.Batteries}` no longer re-exports the `Option`
+   data type or the `option` function, as both have been removed in
+   `base-4.16`.
+
+ - This coincides with the `base-compat-0.12.0` release. Refer to the
+   [`base-compat` changelog](https://github.com/haskell-compat/base-compat/blob/master/base-compat/CHANGES.markdown#changes-in-0120-20210829)
+   for more details.
+
 ## Changes in 0.11.2 [2020.09.30]
  - This coincides with the `base-compat-0.11.2` release. Refer to the
    [`base-compat` changelog](https://github.com/haskell-compat/base-compat/blob/master/base-compat/CHANGES.markdown#changes-in-0112-20200930)
diff --git a/base-compat-batteries.cabal b/base-compat-batteries.cabal
--- a/base-compat-batteries.cabal
+++ b/base-compat-batteries.cabal
@@ -1,5 +1,5 @@
 name:             base-compat-batteries
-version:          0.11.2
+version:          0.12.0
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2012-2018 Simon Hengel,
@@ -34,18 +34,6 @@
                   @<https://github.com/haskell-compat/base-compat/blob/master/base-compat/README.markdown#dependencies here>@
                   for a more comprehensive list of differences between
                   @base-compat@ and @base-compat-batteries@.
-tested-with:        GHC == 7.0.4
-                  , GHC == 7.2.2
-                  , GHC == 7.4.2
-                  , GHC == 7.6.3
-                  , GHC == 7.8.4
-                  , GHC == 7.10.3
-                  , GHC == 8.0.2
-                  , GHC == 8.2.2
-                  , GHC == 8.4.4
-                  , GHC == 8.6.5
-                  , GHC == 8.8.3
-                  , GHC == 8.10.1
 extra-source-files: CHANGES.markdown, README.markdown
 
 source-repository head
@@ -60,7 +48,7 @@
       Haskell2010
   build-depends:
       base        >= 4.3 && < 5,
-      base-compat == 0.11.2
+      base-compat == 0.12.0
   if !impl(ghc >= 7.8)
     build-depends:
       tagged >= 0.8.5 && < 0.9
@@ -148,6 +136,7 @@
       System.IO.Error.Compat
       System.IO.Unsafe.Compat
       Text.Read.Compat
+      Text.Read.Lex.Compat
       Type.Reflection.Compat
 
       Control.Concurrent.Compat.Repl.Batteries
@@ -208,6 +197,7 @@
       System.IO.Error.Compat.Repl.Batteries
       System.IO.Unsafe.Compat.Repl.Batteries
       Text.Read.Compat.Repl.Batteries
+      Text.Read.Lex.Compat.Repl.Batteries
       Type.Reflection.Compat.Repl.Batteries
 test-suite spec
   type:
diff --git a/src/Data/Semigroup/Compat.hs b/src/Data/Semigroup/Compat.hs
--- a/src/Data/Semigroup/Compat.hs
+++ b/src/Data/Semigroup/Compat.hs
@@ -18,9 +18,6 @@
   , Any(..)
   , Sum(..)
   , Product(..)
-  -- * A better monoid for Maybe
-  , Option(..)
-  , option
   -- * Difference lists of a semigroup
   , diff
   , cycle1
diff --git a/src/Text/Read/Lex/Compat.hs b/src/Text/Read/Lex/Compat.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Read/Lex/Compat.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}
+module Text.Read.Lex.Compat (
+  module Base
+) where
+
+import "base-compat" Text.Read.Lex.Compat as Base
diff --git a/src/Text/Read/Lex/Compat/Repl/Batteries.hs b/src/Text/Read/Lex/Compat/Repl/Batteries.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Read/Lex/Compat/Repl/Batteries.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE PackageImports #-}
+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}
+-- | Reexports "Text.Read.Lex.Compat"
+-- from a globally unique namespace.
+module Text.Read.Lex.Compat.Repl.Batteries (
+  module Text.Read.Lex.Compat
+) where
+import "this" Text.Read.Lex.Compat
diff --git a/test/Numeric/CompatSpec.hs b/test/Numeric/CompatSpec.hs
--- a/test/Numeric/CompatSpec.hs
+++ b/test/Numeric/CompatSpec.hs
@@ -22,3 +22,24 @@
       showGFloatAlt Nothing  (1234567890 :: Double) "" `shouldBe` "1.23456789e9"
     it "shows a RealFloat value, using scientific notation and specifying the number of decimal places" $
       showGFloatAlt (Just 4) (1234567890 :: Double) "" `shouldBe` "1.2346e9"
+  describe "readBin" $ do
+    it "parses an entirely binary Integer" $
+      readBinInteger "00000111" `shouldBe` [(7, "")]
+    it "does not parse a non-binary Integer" $
+      readBinInteger "-24" `shouldBe` []
+    it "parses the binary prefix of an Integer" $
+      readBinInteger "1011784372843778438743" `shouldBe` [(11,"784372843778438743")]
+  describe "showBin" $ do
+    it "shows small Ints in base 2" $
+      map (\ x -> showBinInt x "") [1..32] `shouldBe`
+        [ "1","10","11","100","101","110","111","1000","1001","1010","1011","1100","1101","1110","1111"
+        , "10000","10001","10010","10011","10100","10101","10110","10111","11000"
+        , "11001","11010","11011","11100","11101","11110","11111","100000" ]
+    it "shows a large Int in base 2" $
+      showBinInt 241324784 "" `shouldBe` "1110011000100101001011110000"
+  where
+    readBinInteger :: ReadS Integer
+    readBinInteger = readBin
+
+    showBinInt :: Int -> ShowS
+    showBinInt = showBin
diff --git a/test/SafeHaskellSpec.hs b/test/SafeHaskellSpec.hs
--- a/test/SafeHaskellSpec.hs
+++ b/test/SafeHaskellSpec.hs
@@ -59,6 +59,7 @@
 import System.IO.Compat ()
 import System.IO.Error.Compat ()
 import Text.Read.Compat ()
+import Text.Read.Lex.Compat ()
 import Type.Reflection.Compat ()
 
 main :: IO ()
