diff --git a/Data/Text.hs b/Data/Text.hs
--- a/Data/Text.hs
+++ b/Data/Text.hs
@@ -399,7 +399,7 @@
 -- improvements.
 --
 -- The original discussion is archived here:
--- <http://groups.google.com/group/haskell-cafe/browse_thread/thread/b5bbb1b28a7e525d/0639d46852575b93 could we get a Data instance for Data.Text.Text? >
+-- <https://mail.haskell.org/pipermail/haskell-cafe/2010-January/072379.html could we get a Data instance for Data.Text.Text? >
 --
 -- The followup discussion that changed the behavior of 'Data.Set.Set'
 -- and 'Data.Map.Map' is archived here:
diff --git a/Data/Text/Internal/Builder.hs b/Data/Text/Internal/Builder.hs
--- a/Data/Text/Internal/Builder.hs
+++ b/Data/Text/Internal/Builder.hs
@@ -59,7 +59,7 @@
 
 import Control.Monad.ST (ST, runST)
 import Data.Monoid (Monoid(..))
-#if MIN_VERSION_base(4,9,0)
+#if !MIN_VERSION_base(4,11,0) && MIN_VERSION_base(4,9,0)
 import Data.Semigroup (Semigroup(..))
 #endif
 import Data.Text.Internal (Text(..))
diff --git a/Data/Text/Internal/Read.hs b/Data/Text/Internal/Read.hs
--- a/Data/Text/Internal/Read.hs
+++ b/Data/Text/Internal/Read.hs
@@ -43,7 +43,14 @@
                            Left err     -> Left err
                            Right (a,t') -> runP (k a) t'
     {-# INLINE (>>=) #-}
-    fail msg = P $ \_ -> Left msg
+
+-- If we ever need a `MonadFail` instance the definition below can be used
+--
+-- > instance MonadFail (IParser t) where
+-- >   fail msg = P $ \_ -> Left msg
+--
+-- But given the code compiles fine with a post-MFP GHC 8.6+ we don't need
+-- one just yet.
 
 data T = T !Integer !Int
 
diff --git a/Data/Text/Lazy/Builder/RealFloat.hs b/Data/Text/Lazy/Builder/RealFloat.hs
--- a/Data/Text/Lazy/Builder/RealFloat.hs
+++ b/Data/Text/Lazy/Builder/RealFloat.hs
@@ -81,17 +81,17 @@
           "0"     -> "0.0e0"
           [d]     -> singleton d <> ".0e" <> show_e'
           (d:ds') -> singleton d <> singleton '.' <> fromString ds' <> singleton 'e' <> show_e'
-          []      -> error "formatRealFloat/doFmt/Exponent: []"
+          []      -> error "formatRealFloat/doFmt/Exponent/Nothing: []"
        Just dec ->
         let dec' = max dec 1 in
         case is of
          [0] -> "0." <> fromText (T.replicate dec' "0") <> "e0"
          _ ->
-          let
-           (ei,is') = roundTo (dec'+1) is
-           (d:ds') = map i2d (if ei > 0 then init is' else is')
-          in
-          singleton d <> singleton '.' <> fromString ds' <> singleton 'e' <> decimal (e-1+ei)
+          let (ei,is') = roundTo (dec'+1) is
+              is'' = map i2d (if ei > 0 then init is' else is')
+          in case is'' of
+               [] -> error "formatRealFloat/doFmt/Exponent/Just: []"
+               (d:ds') -> singleton d <> singleton '.' <> fromString ds' <> singleton 'e' <> decimal (e-1+ei)
      Fixed ->
       let
        mk0 ls = case ls of { "" -> "0" ; _ -> fromString ls}
@@ -115,11 +115,11 @@
          in
          mk0 ls <> (if null rs then "" else singleton '.' <> fromString rs)
         else
-         let
-          (ei,is') = roundTo dec' (replicate (-e) 0 ++ is)
-          d:ds' = map i2d (if ei > 0 then is' else 0:is')
-         in
-         singleton d <> (if null ds' then "" else singleton '.' <> fromString ds')
+         let (ei,is') = roundTo dec' (replicate (-e) 0 ++ is)
+             is'' = map i2d (if ei > 0 then is' else 0:is')
+         in case is'' of
+              [] -> error "formatRealFloat/doFmt/Fixed: []"
+              (d:ds') -> singleton d <> (if null ds' then "" else singleton '.' <> fromString ds')
 
 
 -- Based on "Printing Floating-Point Numbers Quickly and Accurately"
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,8 @@
-### 1.2.3.1
+#### 1.2.3.2
+
+* Special release supporting GHC 8.10.1 / `base-4.14.0.0` only
+
+#### 1.2.3.1
 
 * Make `decodeUtf8With` fail explicitly for unsupported non-BMP
   replacement characters instead silent undefined behaviour (gh-213)
diff --git a/tests/text-tests.cabal b/tests/text-tests.cabal
--- a/tests/text-tests.cabal
+++ b/tests/text-tests.cabal
@@ -29,7 +29,6 @@
   main-is: Tests.hs
 
   other-modules:
-    Tests.IO
     Tests.Properties
     Tests.Properties.Mul
     Tests.QuickCheckUtils
diff --git a/text.cabal b/text.cabal
--- a/text.cabal
+++ b/text.cabal
@@ -1,6 +1,6 @@
-cabal-version:  >= 1.8
+cabal-version:  1.12
 name:           text
-version:        1.2.3.1
+version:        1.2.3.2
 
 homepage:       https://github.com/haskell/text
 bug-reports:    https://github.com/haskell/text/issues
@@ -43,9 +43,7 @@
 copyright:      2009-2011 Bryan O'Sullivan, 2008-2009 Tom Harper
 category:       Data, Text
 build-type:     Simple
-tested-with:    GHC==8.6.1, GHC==8.4.3,
-                GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4,
-                GHC==7.6.3, GHC==7.4.2, GHC==7.2.2, GHC==7.0.4
+tested-with:    GHC==8.10.1
 extra-source-files:
     -- scripts/CaseFolding.txt
     -- scripts/SpecialCasing.txt
@@ -71,13 +69,6 @@
     tests/scripts/*.sh
     tests/text-tests.cabal
 
-flag bytestring-builder
-  description:
-    Depend on the [bytestring-builder](https://hackage.haskell.org/package/bytestring-builder)
-    package for backwards compatibility.
-  default: False
-  manual: False
-
 flag developer
   description: operate in developer mode
   default: False
@@ -143,17 +134,12 @@
     Data.Text.Show
 
   build-depends:
-    array      >= 0.3,
-    base       >= 4.2 && < 5,
-    binary,
-    deepseq    >= 1.1.0.0,
-    ghc-prim   >= 0.2
-
-  if flag(bytestring-builder)
-    build-depends: bytestring         >= 0.9    && < 0.10.4,
-                   bytestring-builder >= 0.10.4
-  else
-    build-depends: bytestring         >= 0.10.4 && < 0.11
+    array      == 0.5.*,
+    base       == 4.14.*,
+    binary     == 0.8.*,
+    deepseq    >= 1.1.0.0 && < 1.5,
+    ghc-prim   == 0.6.*,
+    bytestring >= 0.10.4 && < 0.11
 
   ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -O2
   if flag(developer)
@@ -168,6 +154,27 @@
     cpp-options: -DINTEGER_GMP
     build-depends: integer-gmp >= 0.2 && < 1.1
 
+  -- compiler specification
+  default-language: Haskell2010
+  default-extensions:
+    NondecreasingIndentation
+  other-extensions:
+    BangPatterns
+    CPP
+    DeriveDataTypeable
+    ExistentialQuantification
+    ForeignFunctionInterface
+    GeneralizedNewtypeDeriving
+    MagicHash
+    OverloadedStrings
+    Rank2Types
+    RankNTypes
+    RecordWildCards
+    ScopedTypeVariables
+    TypeFamilies
+    UnboxedTuples
+    UnliftedFFITypes
+
 test-suite tests
   type:           exitcode-stdio-1.0
   c-sources:      cbits/cbits.c
@@ -257,13 +264,8 @@
     random,
     test-framework >= 0.4,
     test-framework-hunit >= 0.2,
-    test-framework-quickcheck2 >= 0.2
-
-  if flag(bytestring-builder)
-    build-depends: bytestring         >= 0.9    && < 0.10.4,
-                   bytestring-builder >= 0.10.4
-  else
-    build-depends: bytestring         >= 0.10.4
+    test-framework-quickcheck2 >= 0.2,
+    bytestring >= 0.10.4
 
   if flag(integer-simple)
     cpp-options: -DINTEGER_SIMPLE
@@ -271,6 +273,9 @@
   else
     cpp-options: -DINTEGER_GMP
     build-depends: integer-gmp >= 0.2
+
+  default-language: Haskell2010
+  default-extensions: NondecreasingIndentation
 
 source-repository head
   type:     git
