diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,13 @@
+## Changes in 0.8 [2018.07.02]
+ - Backported new instance from GHC 8.6/`base-4.12`
+   * Data types in `GHC.Generics`:
+     - `Applicative` instance for `K1`
+     - `Semigroup` instances for `U1`, `Par1`, `Rec1`, `K1`, `M1`, `(:*:)`,     `(:.:)`, and `V1`
+     - `Monoid`    instances for `U1`, `Par1`, `Rec1`, `K1`, `M1`, `(:*:)`, and `(:.:)`
+   * `Foldable` and `Traversable` instances for `Data.Monoid.Alt`
+   * `MonadFix`, `MonadZip`, `Data`, `Foldable`, `Traversable`, `Eq1`, `Ord1`,
+     `Read1`, and `Show1` instances for `Data.Ord.Down`
+
 ## Changes in 0.7 [2018.03.08]
  - Backported new instances from GHC 8.4/`base-4.11`
    * `Alternative` instance for `ZipList`
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -34,6 +34,10 @@
  * `Alternative`, `MonadPlus`, and `MonadZip` instances for `Proxy`
  * `Alternative`, `Applicative`, `Bounded`, `Data`, `Enum`, `Foldable`, `Functor`, `Ix`, `Monad`, `MonadFix`, `MonadPlus`, `MonadZip`, and `Traversable` instances for data types in `GHC.Generics`
  * `Alternative`, `Eq`, `Ord`, `Read`, `Show`, `Foldable`, and `Traversable` instances for `ZipList`
+ * `Applicative` instance for `K1` from `GHC.Generics`
+ * `Applicative`, `Data`, `Eq1`, `Foldable`, `Functor`, `Ord1`, `Monad`,
+   `MonadFix`, `MonadZip`, `Monoid`, `Num`, `Read`, `Read1`, `Semigroup`,
+   `Show`, `Show1`, and `Traversable` instances for `Down`
  * `Applicative` and `Alternative` instances for `ReadP` and `ReadPrec`
  * `Applicative` instance for strict and lazy `ST`
  * `Applicative`, `Foldable`, `Functor`, `Monad`, and `Traversable` instances for `Complex`,
@@ -49,6 +53,7 @@
  * `Eq`, `Ord`, `Read`, and `Show` instances for data types in `GHC.Generics`
  * `Eq1`, `Ord1`, `Read1`, and `Show1` instances for `NonEmpty`
  * `Foldable` instance for `Either`, `(,)` and `Const`
+ * `Foldable` and `Traversable` instances for `Alt` from `Data.Monoid`
  * `Functor` instance for `Handler`, `ArgOrder`, `OptDescr`, and `ArgDescr`
  * `Functor`, `Applicative`, `Alternative`, and `MonadPlus` instances for `ArrowMonad`
  * `Monad` instance for `(,)`
@@ -59,8 +64,9 @@
  * `Monoid` instances for `Identity` and `IO`
  * `Num` instance for `Sum` and `Product`
  * `Read` instance for `Fixed`
- * `Applicative`, `Functor`, `Monad`, `Monoid`, `Num`, `Read`, `Semigroup`, and `Show` instances for `Down`
  * `Semigroup` instances for `IO`, `Event` and `Lifetime`
+ * `Semigroup` instances for `V1`, `U1`, `Par1`, `Rec1`, `K1`, `M1`, `(:*:)`, and `(:.:)` from `GHC.Generics`.
+   `Monoid` instances for the same types (except `V1`).
  * `Show` instance for `Fingerprint`
  * `Storable` instance for `()`, `Complex`, and `Ratio`
  * `Traversable` instance for `Either`, `(,)` and `Const`
@@ -79,6 +85,9 @@
 
 ## Supported versions of GHC/`base`
 
+ * `ghc-8.6.1`  / `base-4.12.0.0`
+ * `ghc-8.4.3`  / `base-4.11.1.0`
+ * `ghc-8.4.2`  / `base-4.11.1.0`
  * `ghc-8.4.1`  / `base-4.11.0.0`
  * `ghc-8.2.2`  / `base-4.10.1.0`
  * `ghc-8.2.1`  / `base-4.10.0.0`
diff --git a/base-orphans.cabal b/base-orphans.cabal
--- a/base-orphans.cabal
+++ b/base-orphans.cabal
@@ -1,11 +1,11 @@
--- This file has been generated from package.yaml by hpack version 0.27.0.
+-- This file has been generated from package.yaml by hpack version 0.28.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 41c092a82fb1cbacf3f1eb99d4bdfbdae043e7a56b2a03706c9ea6ece36fda6f
+-- hash: f7b54386bbe16442a11779267f4a728967659e625e63acc7a4a4a9d07cfd302f
 
 name:                base-orphans
-version:             0.7
+version:             0.8
 synopsis:            Backwards-compatible orphan instances for base
 description:         @base-orphans@ defines orphan instances that mimic instances available in later versions of @base@ to a wider (older) range of compilers. @base-orphans@ does not export anything except the orphan instances themselves and complements @<http://hackage.haskell.org/package/base-compat base-compat>@.
                      See the README for what instances are covered: <https://github.com/haskell-compat/base-orphans#readme>. See also the <https://github.com/haskell-compat/base-orphans#what-is-not-covered what is not covered> section.
@@ -25,8 +25,7 @@
 license-file:        LICENSE
 build-type:          Simple
 cabal-version:       >= 1.10
-tested-with:         GHC == 7.0.1,  GHC == 7.0.2,  GHC == 7.0.3,  GHC == 7.0.4 , GHC == 7.2.1,  GHC == 7.2.2 , GHC == 7.4.1,  GHC == 7.4.2 , GHC == 7.6.1,  GHC == 7.6.2,  GHC == 7.6.3 , GHC == 7.8.1,  GHC == 7.8.2,  GHC == 7.8.3,  GHC == 7.8.4 , 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
-
+tested-with:         GHC == 7.0.1,  GHC == 7.0.2,  GHC == 7.0.3,  GHC == 7.0.4 , GHC == 7.2.1,  GHC == 7.2.2 , GHC == 7.4.1,  GHC == 7.4.2 , GHC == 7.6.1,  GHC == 7.6.2,  GHC == 7.6.3 , GHC == 7.8.1,  GHC == 7.8.2,  GHC == 7.8.3,  GHC == 7.8.4 , 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.2,  GHC == 8.4.3 , GHC == 8.6.1
 extra-source-files:
     CHANGES.markdown
     README.markdown
diff --git a/src/Data/Orphans.hs b/src/Data/Orphans.hs
--- a/src/Data/Orphans.hs
+++ b/src/Data/Orphans.hs
@@ -37,7 +37,7 @@
 -}
 module Data.Orphans () where
 
-#if __GLASGOW_HASKELL__ >= 701 && !(MIN_VERSION_base(4,9,0))
+#if __GLASGOW_HASKELL__ >= 701 && !(MIN_VERSION_base(4,12,0))
 import           GHC.Generics as Generics
 #endif
 
@@ -46,9 +46,7 @@
 #endif
 
 #if !(MIN_VERSION_base(4,9,0))
-import qualified Data.Foldable as F (Foldable(..))
-import           Data.Monoid as Monoid
-import qualified Data.Traversable as T (Traversable(..))
+import qualified Data.Monoid as Monoid
 import           Text.ParserCombinators.ReadPrec as ReadPrec
 import           Text.Read as Read
 #endif
@@ -65,6 +63,11 @@
 import           Control.Monad.ST as Strict
 #endif
 
+#if !(MIN_VERSION_base(4,12,0))
+import qualified Data.Foldable as F (Foldable(..))
+import qualified Data.Traversable as T (Traversable(..))
+#endif
+
 #if __GLASGOW_HASKELL__ < 710
 import           Control.Exception as Exception
 import           Control.Monad.ST.Lazy as Lazy
@@ -77,7 +80,7 @@
 # endif
 #endif
 
-#if !(MIN_VERSION_base(4,11,0))
+#if !(MIN_VERSION_base(4,12,0))
 import           Data.Orphans.Prelude
 #endif
 
@@ -1023,6 +1026,74 @@
 # endif
 #endif
 
+#if !(MIN_VERSION_base(4,12,0))
+instance MonadFix Down where
+    mfix f = Down (fix (getDown . f))
+      where getDown (Down x) = x
+deriving instance Data a => Data (Down a)
+deriving instance F.Foldable Down
+deriving instance T.Traversable Down
+# if MIN_VERSION_base(4,4,0)
+instance MonadZip Down where
+    mzipWith = liftM2
+# endif
+# if MIN_VERSION_base(4,9,0)
+instance Eq1 Down where
+    liftEq eq (Down x) (Down y) = eq x y
+instance Ord1 Down where
+    liftCompare comp (Down x) (Down y) = comp x y
+instance Read1 Down where
+    liftReadsPrec rp _ = readsData $
+         readsUnaryWith rp "Down" Down
+instance Show1 Down where
+    liftShowsPrec sp _ d (Down x) = showsUnaryWith sp "Down" d x
+# endif
+
+# if __GLASGOW_HASKELL__ >= 701
+instance Monoid c => Applicative (K1 i c) where
+  pure _ = K1 mempty
+  (<*>) = coerce (mappend :: c -> c -> c)
+#  if MIN_VERSION_base(4,10,0)
+  liftA2 = \_ -> coerce (mappend :: c -> c -> c)
+#  endif
+
+instance Monoid (U1 p) where
+  mempty = U1
+#  if !(MIN_VERSION_base(4,11,0))
+  _ `mappend` _ = U1
+#  endif
+deriving instance Monoid p => Monoid (Par1 p)
+deriving instance Monoid (f p) => Monoid (Rec1 f p)
+deriving instance Monoid c => Monoid (K1 i c p)
+deriving instance Monoid (f p) => Monoid (M1 i c f p)
+instance (Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p) where
+  mempty = mempty :*: mempty
+#  if !(MIN_VERSION_base(4,11,0))
+  (x1 :*: y1) `mappend` (x2 :*: y2) = (x1 `mappend` x2) :*: (y1 `mappend` y2)
+#  endif
+deriving instance Monoid (f (g p)) => Monoid ((f :.: g) p)
+
+#  if MIN_VERSION_base(4,9,0)
+instance Semigroup (V1 p) where
+  v <> _ = v
+instance Semigroup (U1 p) where
+  _ <> _ = U1
+deriving instance Semigroup p => Semigroup (Par1 p)
+deriving instance Semigroup (f p) => Semigroup (Rec1 f p)
+deriving instance Semigroup c => Semigroup (K1 i c p)
+deriving instance Semigroup (f p) => Semigroup (M1 i c f p)
+instance (Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p) where
+  (x1 :*: y1) <> (x2 :*: y2) = (x1 <> x2) :*: (y1 <> y2)
+deriving instance Semigroup (f (g p)) => Semigroup ((f :.: g) p)
+#  endif
+# endif
+
+# if MIN_VERSION_base(4,8,0)
+deriving instance Foldable f => Foldable (Alt f)
+deriving instance Traversable f => Traversable (Alt f)
+# endif
+#endif
+
 #if __GLASGOW_HASKELL__ < 710
 deriving instance Typeable  All
 deriving instance Typeable  AnnotationWrapper
@@ -1043,6 +1114,7 @@
 deriving instance Typeable  ConstrRep
 deriving instance Typeable  DataRep
 deriving instance Typeable  DataType
+deriving instance Typeable1 Down
 deriving instance Typeable1 Dual
 deriving instance Typeable1 Endo
 deriving instance Typeable  Errno
@@ -1198,7 +1270,6 @@
 
 # if MIN_VERSION_base(4,6,0)
 deriving instance Typeable  CSigset
-deriving instance Typeable1 Down
 deriving instance Typeable  ForeignPtrContents
 deriving instance Typeable  Nat
 deriving instance Typeable1 NoIO
@@ -1485,7 +1556,7 @@
 deriving instance Typeable 'AbsoluteSeek
 deriving instance Typeable 'All
 deriving instance Typeable 'AlreadyExists
-deriving instance Typeable 'Any
+deriving instance Typeable 'Monoid.Any
 deriving instance Typeable 'AppendHandle
 deriving instance Typeable 'AppendMode
 deriving instance Typeable 'BlockedIndefinitelyOnMVar
diff --git a/src/Data/Orphans/Prelude.hs b/src/Data/Orphans/Prelude.hs
--- a/src/Data/Orphans/Prelude.hs
+++ b/src/Data/Orphans/Prelude.hs
@@ -15,7 +15,7 @@
 Note that this module does not export any modules that could introduce name clashes.
 -}
 module Data.Orphans.Prelude
-#if MIN_VERSION_base(4,11,0)
+#if MIN_VERSION_base(4,12,0)
     () where
 #else
     (module OrphansPrelude, realPart, imagPart) where
@@ -35,6 +35,12 @@
 import Data.Int as OrphansPrelude
 import Data.Ix as OrphansPrelude
 import Data.List as OrphansPrelude (genericLength)
+import Data.Monoid as OrphansPrelude
+  hiding ( Any(..)
+# if MIN_VERSION_base(4,5,0)
+         , (<>)
+# endif
+         )
 import Data.String as OrphansPrelude (IsString)
 import Data.Version as OrphansPrelude
 import Data.Word as OrphansPrelude
@@ -116,7 +122,7 @@
 # if MIN_VERSION_base(4,8,0)
 import Data.Bifunctor as OrphansPrelude
 import Data.Functor.Identity as OrphansPrelude
-# endif
+#endif
 
 # if MIN_VERSION_base(4,9,0)
 import Data.Functor.Classes as OrphansPrelude
