diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,14 @@
+1.12.0
+
+* Additional changes to support GHC 8.4
+    * See: https://github.com/dhall-lang/dhall-haskell/pull/331
+* BREAKING CHANGE TO API: Replace dependency on `text-format` with `formatting`
+    * This replace the `Data.Text.Buildable.Buildable` instances with
+      `Formatting.Buildable.Buildable` instances, which is why this is a
+       breaking change
+    * `text-format` is no longer maintained and blocking GHC 8.4 support
+    * See: https://github.com/dhall-lang/dhall-haskell/pull/330
+
 1.11.1
 
 * Support GHC 8.4
diff --git a/dhall.cabal b/dhall.cabal
--- a/dhall.cabal
+++ b/dhall.cabal
@@ -1,5 +1,5 @@
 Name: dhall
-Version: 1.11.1
+Version: 1.12.0
 Cabal-Version: >=1.8.0.2
 Build-Type: Simple
 Tested-With: GHC == 8.0.1
@@ -164,6 +164,7 @@
         exceptions                  >= 0.8.3    && < 0.11,
         directory                   >= 1.3      && < 1.4 ,
         filepath                    >= 1.4      && < 1.5 ,
+        formatting                  >= 6.3      && < 6.4 ,
         http-client                 >= 0.4.30   && < 0.6 ,
         http-client-tls             >= 0.2.0    && < 0.4 ,
         insert-ordered-containers   >= 0.1.0.1  && < 0.3 ,
@@ -174,7 +175,6 @@
         prettyprinter-ansi-terminal >= 1.1.1    && < 1.2 ,
         scientific                  >= 0.3.0.0  && < 0.4 ,
         text                        >= 0.11.1.0 && < 1.3 ,
-        text-format                              < 0.4 ,
         transformers                >= 0.2.0.0  && < 0.6 ,
         trifecta                    >= 1.6      && < 1.8 ,
         unordered-containers        >= 0.1.3.0  && < 0.3 ,
@@ -190,7 +190,7 @@
         Dhall.TypeCheck
     Other-Modules:
         Dhall.Pretty.Internal
-    GHC-Options: -Wall
+    GHC-Options: -Wall -Wcompat
 
 Executable dhall
     Hs-Source-Dirs: dhall
@@ -204,7 +204,7 @@
         prettyprinter-ansi-terminal >= 1.1.1    && < 1.2 ,
         trifecta                    >= 1.6      && < 1.8 ,
         text                        >= 0.11.1.0 && < 1.3
-    GHC-Options: -Wall
+    GHC-Options: -Wall -Wcompat
     Other-Modules:
         Paths_dhall
 
@@ -222,7 +222,7 @@
         prettyprinter-ansi-terminal           ,
         text                                  ,
         trifecta
-    GHC-Options: -Wall
+    GHC-Options: -Wall -Wcompat
 
 Executable dhall-format
     Hs-Source-Dirs: dhall-format
@@ -236,7 +236,7 @@
         prettyprinter-ansi-terminal >= 1.1.1    && < 1.2 ,
         trifecta                    >= 1.6      && < 1.8 ,
         text                        >= 0.11.1.0 && < 1.3
-    GHC-Options: -Wall
+    GHC-Options: -Wall -Wcompat
     Other-Modules:
         Paths_dhall
 
@@ -256,7 +256,7 @@
     Type: exitcode-stdio-1.0
     Hs-Source-Dirs: tests
     Main-Is: Tests.hs
-    GHC-Options: -Wall
+    GHC-Options: -Wall -Wcompat
     Other-Modules:
         Format
         Normalization
diff --git a/src/Dhall.hs b/src/Dhall.hs
--- a/src/Dhall.hs
+++ b/src/Dhall.hs
@@ -70,7 +70,6 @@
 import Data.Monoid ((<>))
 import Data.Scientific (Scientific)
 import Data.Sequence (Seq)
-import Data.Text.Buildable (Buildable(..))
 import Data.Text.Lazy (Text)
 import Data.Typeable (Typeable)
 import Data.Vector (Vector)
@@ -79,6 +78,7 @@
 import Dhall.Import (Imported(..))
 import Dhall.Parser (Src(..))
 import Dhall.TypeCheck (DetailedTypeError(..), TypeError, X)
+import Formatting.Buildable (Buildable(..))
 import GHC.Generics
 import Numeric.Natural (Natural)
 import Prelude hiding (maybe, sequence)
diff --git a/src/Dhall/Core.hs b/src/Dhall/Core.hs
--- a/src/Dhall/Core.hs
+++ b/src/Dhall/Core.hs
@@ -58,16 +58,16 @@
 import Data.Foldable
 import Data.HashMap.Strict.InsOrd (InsOrdHashMap)
 import Data.HashSet (HashSet)
-import Data.Monoid ((<>))
 import Data.String (IsString(..))
 import Data.Scientific (Scientific)
 import Data.Sequence (Seq, ViewL(..), ViewR(..))
-import Data.Text.Buildable (Buildable(..))
+import Data.Semigroup (Semigroup(..))
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Builder (Builder)
 import Data.Text.Prettyprint.Doc (Pretty)
 import Data.Traversable
 import {-# SOURCE #-} Dhall.Pretty.Internal
+import Formatting.Buildable (Buildable(..))
 import Numeric.Natural (Natural)
 import Prelude hiding (succ)
 
@@ -468,20 +468,17 @@
 data Chunks s a = Chunks [(Builder, Expr s a)] Builder
     deriving (Functor, Foldable, Traversable, Show, Eq)
 
+instance Data.Semigroup.Semigroup (Chunks s a) where
+    Chunks xysL zL <> Chunks         []    zR =
+        Chunks xysL (zL <> zR)
+    Chunks xysL zL <> Chunks ((x, y):xysR) zR =
+        Chunks (xysL ++ (zL <> x, y):xysR) zR
+
 instance Monoid (Chunks s a) where
     mempty = Chunks [] mempty
 
-#if MIN_VERSION_base(4,11,0)
-instance Semigroup (Chunks s a) where
-    (<>) (Chunks xysL zL) (Chunks         []    zR) =
-        Chunks xysL (zL <> zR)
-    (<>) (Chunks xysL zL) (Chunks ((x, y):xysR) zR) =
-        Chunks (xysL ++ (zL <> x, y):xysR) zR
-#else
-    mappend (Chunks xysL zL) (Chunks         []    zR) =
-        Chunks xysL (zL <> zR)
-    mappend (Chunks xysL zL) (Chunks ((x, y):xysR) zR) =
-        Chunks (xysL ++ (zL <> x, y):xysR) zR
+#if !(MIN_VERSION_base(4,11,0))
+    mappend = (<>)
 #endif
 
 instance IsString (Chunks s a) where
diff --git a/src/Dhall/Import.hs b/src/Dhall/Import.hs
--- a/src/Dhall/Import.hs
+++ b/src/Dhall/Import.hs
@@ -129,7 +129,6 @@
 import Data.CaseInsensitive (CI)
 import Data.Map (Map)
 import Data.Monoid ((<>))
-import Data.Text.Buildable (build)
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Builder (Builder)
 #if MIN_VERSION_base(4,8,0)
@@ -137,6 +136,7 @@
 import Data.Traversable (traverse)
 #endif
 import Data.Typeable (Typeable)
+import Formatting.Buildable (build)
 import System.FilePath ((</>))
 import Dhall.Core
     ( Expr(..)
diff --git a/src/Dhall/Parser.hs b/src/Dhall/Parser.hs
--- a/src/Dhall/Parser.hs
+++ b/src/Dhall/Parser.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP               #-}
+{-# LANGUAGE CPP                        #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE OverloadedStrings          #-}
@@ -26,15 +26,15 @@
 import Data.ByteString (ByteString)
 import Data.Functor (void)
 import Data.HashMap.Strict.InsOrd (InsOrdHashMap)
-import Data.Monoid ((<>))
 import Data.Sequence (ViewL(..))
+import Data.Semigroup (Semigroup(..))
 import Data.Scientific (Scientific)
 import Data.String (IsString(..))
-import Data.Text.Buildable (Buildable(..))
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Builder (Builder)
 import Data.Typeable (Typeable)
 import Dhall.Core
+import Formatting.Buildable (Buildable(..))
 import Numeric.Natural (Natural)
 import Prelude hiding (const, pi)
 import Text.PrettyPrint.ANSI.Leijen (Doc)
@@ -95,14 +95,14 @@
     ,   MarkParsing Delta
     )
 
-instance Monoid a => Monoid (Parser a) where
+instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (Parser a) where
+    (<>) = liftA2 (<>)
+
+instance (Data.Semigroup.Semigroup a, Monoid a) => Monoid (Parser a) where
     mempty = pure mempty
 
-#if MIN_VERSION_base(4,11,0)
-instance Semigroup a => Semigroup (Parser a) where
-    (<>) = liftA2 (<>)
-#else
-    mappend = liftA2 mappend
+#if !(MIN_VERSION_base(4,11,0))
+    mappend = (<>)
 #endif
 
 instance IsString a => IsString (Parser a) where
@@ -127,10 +127,10 @@
     after      <- Text.Trifecta.position
     return (Note (Src before after bytes) e)
 
-count :: Monoid a => Int -> Parser a -> Parser a
+count :: (Semigroup a, Monoid a) => Int -> Parser a -> Parser a
 count n parser = mconcat (replicate n parser)
 
-range :: Monoid a => Int -> Int -> Parser a -> Parser a
+range :: (Semigroup a, Monoid a) => Int -> Int -> Parser a -> Parser a
 range minimumBound maximumMatches parser =
     count minimumBound parser <> loop maximumMatches
   where
diff --git a/src/Dhall/Pretty/Internal.hs b/src/Dhall/Pretty/Internal.hs
--- a/src/Dhall/Pretty/Internal.hs
+++ b/src/Dhall/Pretty/Internal.hs
@@ -30,10 +30,10 @@
 import Data.HashMap.Strict.InsOrd (InsOrdHashMap)
 import Data.Monoid ((<>))
 import Data.Scientific (Scientific)
-import Data.Text.Buildable (Buildable(..))
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Builder (Builder)
 import Data.Text.Prettyprint.Doc (Doc, Pretty, space)
+import Formatting.Buildable (Buildable(..))
 import Numeric.Natural (Natural)
 import Prelude hiding (succ)
 import qualified Data.Text.Prettyprint.Doc.Render.Terminal as Terminal
diff --git a/src/Dhall/Pretty/Internal.hs-boot b/src/Dhall/Pretty/Internal.hs-boot
--- a/src/Dhall/Pretty/Internal.hs-boot
+++ b/src/Dhall/Pretty/Internal.hs-boot
@@ -1,10 +1,10 @@
 module Dhall.Pretty.Internal where
 
 import Data.Scientific (Scientific)
-import Data.Text.Buildable (Buildable)
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Builder (Builder)
 import Data.Text.Prettyprint.Doc (Pretty, Doc)
+import Formatting.Buildable (Buildable)
 import Numeric.Natural (Natural)
 import Prelude
 
diff --git a/src/Dhall/TypeCheck.hs b/src/Dhall/TypeCheck.hs
--- a/src/Dhall/TypeCheck.hs
+++ b/src/Dhall/TypeCheck.hs
@@ -26,7 +26,6 @@
 import Data.Monoid ((<>))
 import Data.Sequence (Seq, ViewL(..))
 import Data.Set (Set)
-import Data.Text.Buildable (Buildable(..))
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Builder (Builder)
 import Data.Text.Prettyprint.Doc (Pretty(..))
@@ -34,6 +33,7 @@
 import Data.Typeable (Typeable)
 import Dhall.Core (Const(..), Chunks(..), Expr(..), Var(..))
 import Dhall.Context (Context)
+import Formatting.Buildable (Buildable(..))
 
 import qualified Data.Foldable
 import qualified Data.HashMap.Strict.InsOrd
