diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,7 +1,16 @@
+## Changes in 0.10.2 [2018.07.02]
+ - Sync with `base-4.12`/GHC 8.6
+ - Introduce the `Data.Functor.Contravariant.Compat` module, which
+   reexports `Data.Functor.Contravariant` from `base` (if using GHC 8.6 or
+   later) or the `contravariant` library (if using an earlier version of GHC).
+ - This coincides with the `base-compat-0.10.2` release. Refer to the
+   [`base-compat` changelog](https://github.com/haskell-compat/base-compat/blob/master/base-compat/CHANGES.markdown#changes-in-0102-20180702)
+   for more details.
+
 ## Changes in 0.10.1 [2018.04.10]
-- Add `Data.List.NonEmpty.Compat`.
-- Reexport `(Data.Semigroup.<>)` from `Data.Monoid.Compat`.
-- Tighten lower bounds of compat package dependencies.
+ - Add `Data.List.NonEmpty.Compat`.
+ - Reexport `(Data.Semigroup.<>)` from `Data.Monoid.Compat`.
+ - Tighten lower bounds of compat package dependencies.
  - This coincides with the `base-compat-0.10.1` release. Refer to the
    [`base-compat` changelog](https://github.com/haskell-compat/base-compat/blob/master/base-compat/CHANGES.markdown#changes-in-0101-20180410)
    for more details.
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.10.1
+version:          0.10.2
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2012-2018 Simon Hengel,
@@ -42,7 +42,8 @@
                   , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3
                   , GHC == 8.0.1,  GHC == 8.0.2
                   , GHC == 8.2.1,  GHC == 8.2.2
-                  , GHC == 8.4.1
+                  , GHC == 8.4.1,  GHC == 8.4.2,  GHC == 8.4.3
+                  , GHC == 8.6.1
 extra-source-files: CHANGES.markdown, README.markdown
 
 source-repository head
@@ -55,7 +56,7 @@
       -Wall
   build-depends:
       base        >= 4.3    && < 5,
-      base-compat >= 0.10.1 && < 0.11
+      base-compat == 0.10.2
   if !impl(ghc >= 7.8)
     build-depends:
       tagged >= 0.8.5 && < 0.9
@@ -72,6 +73,9 @@
   if !impl(ghc >= 8.2)
     build-depends:
       bifunctors >= 5.5.2 && < 5.6
+  if !impl(ghc >= 8.6)
+    build-depends:
+      contravariant >= 1.5 && < 1.6
   ghc-options:
       -fno-warn-duplicate-exports
 
@@ -81,6 +85,7 @@
   exposed-modules:
       Control.Concurrent.Compat
       Control.Concurrent.MVar.Compat
+      Control.Exception.Compat
       Control.Monad.Compat
       Control.Monad.Fail.Compat
       Control.Monad.IO.Class.Compat
@@ -98,6 +103,7 @@
       Data.Functor.Compat
       Data.Functor.Compose.Compat
       Data.Functor.Const.Compat
+      Data.Functor.Contravariant.Compat
       Data.Functor.Identity.Compat
       Data.Functor.Product.Compat
       Data.Functor.Sum.Compat
@@ -136,6 +142,7 @@
 
       Control.Concurrent.Compat.Repl.Batteries
       Control.Concurrent.MVar.Compat.Repl.Batteries
+      Control.Exception.Compat.Repl.Batteries
       Control.Monad.Compat.Repl.Batteries
       Control.Monad.Fail.Compat.Repl.Batteries
       Control.Monad.IO.Class.Compat.Repl.Batteries
@@ -154,6 +161,7 @@
       Data.Functor.Compose.Compat.Repl.Batteries
       Data.Functor.Const.Compat.Repl.Batteries
       Data.Functor.Identity.Compat.Repl.Batteries
+      Data.Functor.Contravariant.Compat.Repl.Batteries
       Data.Functor.Product.Compat.Repl.Batteries
       Data.Functor.Sum.Compat.Repl.Batteries
       Data.IORef.Compat.Repl.Batteries
diff --git a/src/Control/Exception/Compat.hs b/src/Control/Exception/Compat.hs
new file mode 100644
--- /dev/null
+++ b/src/Control/Exception/Compat.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}
+module Control.Exception.Compat (
+  module Base
+) where
+
+import "base-compat" Control.Exception.Compat as Base
diff --git a/src/Control/Exception/Compat/Repl/Batteries.hs b/src/Control/Exception/Compat/Repl/Batteries.hs
new file mode 100644
--- /dev/null
+++ b/src/Control/Exception/Compat/Repl/Batteries.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE PackageImports #-}
+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}
+-- | Reexports "Control.Exception.Compat"
+-- from a globally unique namespace.
+module Control.Exception.Compat.Repl.Batteries (
+  module Control.Exception.Compat
+) where
+import "this" Control.Exception.Compat
diff --git a/src/Data/Functor/Contravariant/Compat.hs b/src/Data/Functor/Contravariant/Compat.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Functor/Contravariant/Compat.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}
+module Data.Functor.Contravariant.Compat (
+  module Base
+  ) where
+
+#if MIN_VERSION_base(4,12,0)
+import "base-compat" Data.Functor.Contravariant.Compat as Base
+#else
+import "contravariant" Data.Functor.Contravariant as Base
+#endif
diff --git a/src/Data/Functor/Contravariant/Compat/Repl/Batteries.hs b/src/Data/Functor/Contravariant/Compat/Repl/Batteries.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Functor/Contravariant/Compat/Repl/Batteries.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE PackageImports #-}
+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}
+-- | Reexports "Data.Functor.Contravariant.Compat"
+-- from a globally unique namespace.
+module Data.Functor.Contravariant.Compat.Repl.Batteries (
+  module Data.Functor.Contravariant.Compat
+) where
+import "this" Data.Functor.Contravariant.Compat
