diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+0.5
+---
+
+* Use `attoparsec-iso8601-1.1.0.0`.
+  `Day` and `UTCTime` parsers require at least 4 digits now, which is a breaking change.
+* Drop GHC-7.8 and GHC-7.10 support.
+
 0.4.3
 -----
 
diff --git a/http-api-data.cabal b/http-api-data.cabal
--- a/http-api-data.cabal
+++ b/http-api-data.cabal
@@ -1,6 +1,6 @@
 cabal-version:   >= 1.10
 name:            http-api-data
-version:         0.4.3
+version:         0.5
 
 synopsis:        Converting to/from HTTP API data like URL pieces, headers and query parameters.
 category:        Web
@@ -24,14 +24,15 @@
   README.md
 
 tested-with:
-  GHC==7.8.4,
-  GHC==7.10.3,
   GHC==8.0.2,
   GHC==8.2.2,
   GHC==8.4.4,
   GHC==8.6.5,
   GHC==8.8.4,
-  GHC==8.10.3
+  GHC==8.10.7,
+  GHC==9.0.2,
+  GHC==9.2.3,
+  GHC==9.4.1
 
 flag use-text-show
   description: Use text-show library for efficient ToHttpApiData implementations.
@@ -43,40 +44,28 @@
     include-dirs:   include/
 
     -- GHC bundled
-    build-depends:   base                  >= 4.7      && < 4.15
-                   , bytestring            >= 0.10.4.0 && < 0.12
-                   , containers            >= 0.5.5.1  && < 0.7
-                   , text                  >= 1.2.3.0  && < 1.3
-                   , transformers          >= 0.3      && < 0.6
-
-    -- so Semigroup Builder exists
-    if impl(ghc >= 8.0)
-      build-depends: bytestring >= 0.10.8.1
+    build-depends:   base                  >= 4.9      && < 4.17
+                   , bytestring            >= 0.10.8.1 && < 0.12
+                   , containers            >= 0.5.7.1  && < 0.7
+                   , text                  >= 1.2.3.0  && < 1.3 || >=2.0 && <2.1
+                   , transformers          >= 0.5.2.0  && < 0.7
 
     -- other-dependencies
     build-depends:
-                     attoparsec            >= 0.13.2.2 && < 0.14
-                   , attoparsec-iso8601    >= 1.0.2.0  && < 1.1
-                   , base-compat           >= 0.10.5   && < 0.12
+                     attoparsec            >= 0.13.2.2 && < 0.15
+                   , attoparsec-iso8601    >= 1.1.0.0  && < 1.2
+                   , base-compat           >= 0.10.5   && < 0.13
                    , cookie                >= 0.4.3    && < 0.5
-                   , hashable              >= 1.2.7.0  && < 1.4
+                   , hashable              >= 1.2.7.0  && < 1.5
                    , http-types            >= 0.12.3   && < 0.13
                    , tagged                >= 0.8.5    && < 0.9
                    , time-compat           >= 1.9.5    && < 1.10
                    , unordered-containers  >= 0.2.10.0 && < 0.3
                    , uuid-types            >= 1.0.3    && < 1.1
 
-    if !impl(ghc >= 7.10)
-      build-depends:
-        nats >= 1.1.2 && < 1.2,
-        void >= 0.7.3 && < 0.8
-
-    if !impl(ghc >= 8.0)
-      build-depends: semigroups            >= 0.18.5   && < 0.20
-
     if flag(use-text-show)
       cpp-options: -DUSE_TEXT_SHOW
-      build-depends: text-show        >= 3.8.2 && <3.9
+      build-depends: text-show        >= 3.8.2 && <3.10
 
     exposed-modules:
       Web.HttpApiData
@@ -96,7 +85,7 @@
     hs-source-dirs: test
     ghc-options:   -Wall
     default-language: Haskell2010
-    build-tool-depends: hspec-discover:hspec-discover >= 2.7.1 && <2.8
+    build-tool-depends: hspec-discover:hspec-discover >= 2.7.1 && <2.11
     -- inherited  depndencies
     build-depends:
                      base
@@ -113,7 +102,7 @@
       build-depends: nats
 
     build-depends:   HUnit                >= 1.6.0.0  && <1.7
-                   , hspec                >= 2.7.1    && <2.8
+                   , hspec                >= 2.7.1    && <2.11
                    , QuickCheck           >= 2.13.1   && <2.15
                    , quickcheck-instances >= 0.3.25.2 && <0.4
 
diff --git a/src/Web/Internal/HttpApiData.hs b/src/Web/Internal/HttpApiData.hs
--- a/src/Web/Internal/HttpApiData.hs
+++ b/src/Web/Internal/HttpApiData.hs
@@ -32,6 +32,7 @@
 import qualified Data.Fixed                   as F
 import           Data.Functor.Identity        (Identity(Identity))
 import           Data.Int                     (Int16, Int32, Int64, Int8)
+import           Data.Kind                    (Type)
 import qualified Data.Map                     as Map
 import           Data.Monoid                  (All (..), Any (..), Dual (..),
                                                First (..), Last (..),
@@ -70,12 +71,6 @@
 import           Text.Read                    (readMaybe)
 import           Web.Cookie                   (SetCookie, parseSetCookie,
                                                renderSetCookie)
-
-#if MIN_VERSION_base(4,9,0)
-import Data.Kind (Type)
-#else
-#define Type *
-#endif
 
 #if USE_TEXT_SHOW
 import           TextShow                     (TextShow, showt)
