diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,10 @@
-## v1.4.0.1 (???)
+## [v1.4.1](https://github.com/diagrams/diagrams-core/tree/v1.4.1) (2018-04-10)
+
+* Allow `base-4.11`
+* Allow `lens-4.16`
+* Add `Semigroup` instance to build on GHC 8.4
+
+## v1.4.0.1
 
 * Allow base-4.10
 
diff --git a/diagrams-core.cabal b/diagrams-core.cabal
--- a/diagrams-core.cabal
+++ b/diagrams-core.cabal
@@ -1,5 +1,5 @@
 Name:                diagrams-core
-Version:             1.4.0.1
+Version:             1.4.1
 Synopsis:            Core libraries for diagrams EDSL
 Description:         The core modules underlying diagrams,
                      an embedded domain-specific language
@@ -15,7 +15,7 @@
 Cabal-version:       >=1.18
 Extra-source-files:  CHANGELOG.md, README.markdown, diagrams/*.svg
 extra-doc-files:     diagrams/*.svg
-Tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
+Tested-with:         GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.1
 Source-repository head
   type:     git
   location: git://github.com/diagrams/diagrams-core.git
@@ -36,13 +36,13 @@
                        Diagrams.Core.Types,
                        Diagrams.Core.V
 
-  Build-depends:       base >= 4.2 && < 4.11,
+  Build-depends:       base >= 4.2 && < 4.12,
                        containers >= 0.4.2 && < 0.6,
                        unordered-containers >= 0.2 && < 0.3,
                        semigroups >= 0.8.4 && < 0.19,
                        monoid-extras >= 0.3 && < 0.5,
                        dual-tree >= 0.2 && < 0.3,
-                       lens >= 4.0 && < 4.16,
+                       lens >= 4.0 && < 4.17,
                        linear >= 1.11.3 && < 1.21,
                        adjunctions >= 4.0 && < 5.0,
                        distributive >=0.2.2 && < 1.0,
diff --git a/src/Diagrams/Core/Compile.hs b/src/Diagrams/Core/Compile.hs
--- a/src/Diagrams/Core/Compile.hs
+++ b/src/Diagrams/Core/Compile.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE CPP                   #-}
 {-# LANGUAGE FlexibleContexts      #-}
+{-# LANGUAGE MonoLocalBinds        #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE TypeOperators         #-}
diff --git a/src/Diagrams/Core/Measure.hs b/src/Diagrams/Core/Measure.hs
--- a/src/Diagrams/Core/Measure.hs
+++ b/src/Diagrams/Core/Measure.hs
@@ -2,6 +2,10 @@
 {-# LANGUAGE DeriveFunctor              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE TypeFamilies               #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+  -- for Data.Semigroup import, which becomes redundant under GHC 8.4
+
 module Diagrams.Core.Measure
   ( Measured (..)
   , Measure
diff --git a/src/Diagrams/Core/Names.hs b/src/Diagrams/Core/Names.hs
--- a/src/Diagrams/Core/Names.hs
+++ b/src/Diagrams/Core/Names.hs
@@ -6,6 +6,9 @@
 {-# LANGUAGE TypeFamilies               #-}
 {-# LANGUAGE TypeSynonymInstances       #-}
 
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+  -- for Data.Semigroup import, which becomes redundant under GHC 8.4
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Diagrams.Core.Names
diff --git a/src/Diagrams/Core/Trace.hs b/src/Diagrams/Core/Trace.hs
--- a/src/Diagrams/Core/Trace.hs
+++ b/src/Diagrams/Core/Trace.hs
@@ -7,6 +7,9 @@
 {-# LANGUAGE TypeFamilies               #-}
 {-# LANGUAGE UndecidableInstances       #-}
 
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+  -- for Data.Semigroup import, which becomes redundant under GHC 8.4
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Diagrams.Core.Trace
diff --git a/src/Diagrams/Core/Types.hs b/src/Diagrams/Core/Types.hs
--- a/src/Diagrams/Core/Types.hs
+++ b/src/Diagrams/Core/Types.hs
@@ -966,9 +966,14 @@
 --
 -- because it overlaps with the Renderable instance for NullPrim.
 
+instance Semigroup (Render NullBackend v n) where
+  _ <> _ = NullBackendRender
+
 instance Monoid (Render NullBackend v n) where
-  mempty      = NullBackendRender
-  mappend _ _ = NullBackendRender
+  mempty  = NullBackendRender
+#if !MIN_VERSION_base(4,11,0)
+  mappend = (<>)
+#endif
 
 instance Backend NullBackend v n where
   data Render NullBackend v n = NullBackendRender
