diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,13 @@
+## [v1.5.1](https://github.com/diagrams/diagrams-core/tree/v1.5.1) (2023-05-11)
+
+* Allow `base-4.18` and test on GHC 9.6 (thanks to @sergv)
+* Fix some warnings (thanks to @sergv)
+* Fix some documentation typos (thanks to @mchav)
+
+## [v1.5.0.1-r1](https://github.com/diagrams/diagrams-core/tree/v1.5.0.1-r1) (2022-11-30)
+
+* Allow `linear-1.22`
+
 ## [v1.5.0.1](https://github.com/diagrams/diagrams-core/tree/v1.5.0.1) (2022-08-27)
 
 * Test with up to `base-4.17` and GHC 9.4
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.5.0.1
+Version:             1.5.1
 Synopsis:            Core libraries for diagrams EDSL
 Description:         The core modules underlying diagrams,
                      an embedded domain-specific language
@@ -13,8 +13,8 @@
 Category:            Graphics
 Build-type:          Simple
 Cabal-version:       1.18
-Extra-source-files:  CHANGELOG.md, README.markdown, diagrams/*.svg
-extra-doc-files:     diagrams/*.svg
+Extra-source-files:  diagrams/*.svg
+extra-doc-files:     diagrams/*.svg, CHANGELOG.md, README.markdown
 Tested-with:         GHC ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.4 || ==9.4.1
 Source-repository head
   type:     git
@@ -36,18 +36,18 @@
                        Diagrams.Core.Types,
                        Diagrams.Core.V
 
-  Build-depends:       base >= 4.11 && < 4.18,
+  Build-depends:       base >= 4.11 && < 4.19,
                        containers >= 0.4.2 && < 0.7,
                        unordered-containers >= 0.2 && < 0.3,
                        semigroups >= 0.8.4 && < 0.21,
                        monoid-extras >= 0.6 && < 0.7,
                        dual-tree >= 0.2 && < 0.3,
                        lens >= 4.0 && < 5.3,
-                       linear >= 1.11.3 && < 1.22,
+                       linear >= 1.11.3 && < 1.23,
                        adjunctions >= 4.0 && < 5.0,
                        distributive >=0.2.2 && < 1.0,
                        profunctors >= 5.0 && < 6.0,
-                       mtl
+                       mtl >= 2.2 && < 2.4
   hs-source-dirs:      src
 
   Other-extensions:    DeriveDataTypeable
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
@@ -113,7 +113,7 @@
       (\a t -> Node (DAnnot a) [t])
       qd
 
--- | Convert a @DTree@ to an @RTree@ which can be used dirctly by backends.
+-- | Convert a @DTree@ to an @RTree@ which can be used directly by backends.
 --   A @DTree@ includes nodes of type @DTransform (Transformation v)@;
 --   in the @RTree@ transform is pushed down until it reaches a primitive node.
 fromDTree :: forall b v n. (Floating n, HasLinearMap v)
diff --git a/src/Diagrams/Core/Envelope.hs b/src/Diagrams/Core/Envelope.hs
--- a/src/Diagrams/Core/Envelope.hs
+++ b/src/Diagrams/Core/Envelope.hs
@@ -7,6 +7,7 @@
 {-# LANGUAGE RankNTypes                 #-}
 {-# LANGUAGE StandaloneDeriving         #-}
 {-# LANGUAGE TypeFamilies               #-}
+{-# LANGUAGE TypeOperators              #-}
 {-# LANGUAGE UndecidableInstances       #-}
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/Diagrams/Core/HasOrigin.hs b/src/Diagrams/Core/HasOrigin.hs
--- a/src/Diagrams/Core/HasOrigin.hs
+++ b/src/Diagrams/Core/HasOrigin.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE TypeOperators         #-}
 {-# LANGUAGE UndecidableInstances  #-}
 
 -- The UndecidableInstances flag is needed under 6.12.3 for the
diff --git a/src/Diagrams/Core/Juxtapose.hs b/src/Diagrams/Core/Juxtapose.hs
--- a/src/Diagrams/Core/Juxtapose.hs
+++ b/src/Diagrams/Core/Juxtapose.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE TypeOperators         #-}
 {-# LANGUAGE UndecidableInstances  #-}
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/Diagrams/Core/Style.hs b/src/Diagrams/Core/Style.hs
--- a/src/Diagrams/Core/Style.hs
+++ b/src/Diagrams/Core/Style.hs
@@ -69,6 +69,7 @@
 import           Control.Arrow           ((***))
 import           Control.Lens            hiding (transform)
 import qualified Data.HashMap.Strict     as HM
+import           Data.Kind               (Type)
 import qualified Data.Map                as M
 import           Data.Monoid.Action      as A
 import           Data.Semigroup
@@ -111,7 +112,7 @@
 --   are simply inert/static; some are affected by transformations;
 --   and some are affected by transformations and can be modified
 --   generically.
-data Attribute (v :: * -> *) n :: * where
+data Attribute (v :: Type -> Type) n :: Type where
   Attribute  :: AttributeClass a => a -> Attribute v n
   MAttribute :: AttributeClass a => Measured n a -> Attribute v n
   TAttribute :: (AttributeClass a, Transformable a, V a ~ v, N a ~ n) => a -> Attribute v n
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
@@ -1,11 +1,12 @@
-{-# LANGUAGE ConstraintKinds            #-}
 {-# LANGUAGE CPP                        #-}
+{-# LANGUAGE ConstraintKinds            #-}
 {-# LANGUAGE FlexibleContexts           #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses      #-}
 {-# LANGUAGE StandaloneDeriving         #-}
 {-# LANGUAGE TypeFamilies               #-}
+{-# LANGUAGE TypeOperators              #-}
 {-# LANGUAGE UndecidableInstances       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
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
@@ -136,6 +136,7 @@
                                             prism', view, (^.), _Wrapped,
                                             _Wrapping)
 import           Control.Monad             (mplus)
+import           Data.Kind                 (Type)
 import           Data.List                 (isSuffixOf)
 import qualified Data.Map                  as M
 import           Data.Maybe                (fromMaybe, listToMaybe)
@@ -841,13 +842,13 @@
   --   able to convert primitives into this type; how these rendered
   --   primitives are combined into an ultimate 'Result' is completely
   --   up to the backend.
-  data Render b v n :: *
+  data Render b v n :: Type
 
   -- | The result of running/interpreting a rendering operation.
-  type Result b v n :: *
+  type Result b v n :: Type
 
   -- | Backend-specific rendering options.
-  data Options b v n :: *
+  data Options b v n :: Type
 
   -- | 'adjustDia' allows the backend to make adjustments to the final
   --   diagram (e.g. to adjust the size based on the options) before
diff --git a/src/Diagrams/Core/V.hs b/src/Diagrams/Core/V.hs
--- a/src/Diagrams/Core/V.hs
+++ b/src/Diagrams/Core/V.hs
@@ -20,6 +20,7 @@
   , InSpace, SameSpace
   ) where
 
+import           Data.Kind (Type)
 import           Data.Map
 import           Data.Monoid.Coproduct
 import           Data.Monoid.Deletable
@@ -38,7 +39,7 @@
 --   the associated vector space. The resulting vector space has kind @* -> *@
 --   which means it takes another value (a number) and returns a concrete
 --   vector. For example 'V2' has kind @* -> *@ and @V2 Double@ is a vector.
-type family V a :: * -> *
+type family V a :: Type -> Type
 
 -- Note, to use these instances one often needs a constraint of the form
 --   V a ~ V b, etc.
@@ -56,7 +57,7 @@
 type instance V (m :+: n)     = V m
 
 -- | The numerical field for the object, the number type used for calculations.
-type family N a :: *
+type family N a :: Type
 
 type instance N (a,b)   = N a
 type instance N (a,b,c) = N a
