diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+0.9.1
+-----
+* Support Cabal 2.2
+* Tested with GHC 8.4.2
+
 0.9.0
 -----
 * Support cabal 2.0
diff --git a/cabal-cargs.cabal b/cabal-cargs.cabal
--- a/cabal-cargs.cabal
+++ b/cabal-cargs.cabal
@@ -1,5 +1,5 @@
 name: cabal-cargs
-version: 0.9.0
+version: 0.9.1
 cabal-version: >=1.9.2
 build-type: Simple
 license: BSD3
@@ -11,7 +11,7 @@
 category: Utils, Development
 author: Daniel Trstenjak
 tested-with: GHC ==7.6.2 GHC ==7.6.3 GHC ==7.8.3 GHC ==7.10.1
-             GHC ==8.0.1 GHC ==8.2.1
+             GHC ==8.0.1 GHC ==8.2.1 GHC ==8.4.2
 extra-source-files:
     README.md
     CHANGELOG
@@ -47,17 +47,17 @@
     build-depends:
         base >=3 && <5,
         cmdargs >=0.10.5 && <0.11,
-        lens >=4.0.1 && <4.16,
+        lens >=4.0.1 && <4.17,
         directory >=1.0 && <1.4,
-        strict >=0.3.2 && <0.4,
         transformers >=0.3.0.0 && <0.6,
-        either >=4.1.1 && <4.5,
+        either >=4.1.1 && <4.6,
         text >=1.1.0.1 && <1.3,
         system-filepath >=0.4.9 && <0.5,
         system-fileio >=0.3.12 && <0.4,
         unordered-containers >=0.2.3.3 && <0.3,
-        cabal-lenses >=0.6.0 && <0.7,
-        Cabal >=2.0.0.2 && <2.1
+        cabal-lenses >=0.6.0 && <0.8,
+        Cabal >=2.2.0.0 && <2.3,
+        bytestring >=0.9 && <0.11
     cpp-options: -DCABAL
     hs-source-dirs: lib
     other-modules:
@@ -78,7 +78,7 @@
     main-is: Main.hs
     build-depends:
         base >=3 && <5,
-        tasty >=0.9.0.1 && <0.12,
+        tasty >=0.9.0.1 && <1.2,
         tasty-golden >=2.2.0.2 && <2.4,
         filepath >=1.3.0.1 && <1.5,
         cabal-cargs -any
diff --git a/lib/CabalCargs/Spec.hs b/lib/CabalCargs/Spec.hs
--- a/lib/CabalCargs/Spec.hs
+++ b/lib/CabalCargs/Spec.hs
@@ -6,13 +6,13 @@
    ) where
 
 import Distribution.PackageDescription (GenericPackageDescription)
-import Distribution.PackageDescription.Parse (parseGenericPackageDescription, ParseResult(..))
+import Distribution.PackageDescription.Parsec (parseGenericPackageDescription, runParseResult, ParseResult(..))
+import Distribution.Parsec.Common (PWarning)
 import qualified Distribution.System as Sys
 import CabalCargs.Args (Args)
 import qualified CabalCargs.Args as A
 import qualified CabalCargs.Fields as F
 import qualified CabalLenses as CL
-import qualified System.IO.Strict as Strict
 import Control.Monad.Trans.Either (EitherT, left, right, runEitherT)
 import Control.Monad.IO.Class
 import Control.Lens
@@ -23,6 +23,7 @@
 import Data.List ((\\))
 import qualified Data.List as L
 import Data.Maybe (isJust)
+import qualified Data.ByteString as BS
 
 #if __GLASGOW_HASKELL__ < 710
 import Control.Applicative ((<$>))
@@ -181,10 +182,17 @@
 
 packageDescription :: FilePath -> EitherT Error IO GenericPackageDescription
 packageDescription file = do
-   contents <- io $ Strict.readFile file
-   case parseGenericPackageDescription contents of
-        ParseFailed error   -> left $ show error
-        ParseOk _ pkgDescrp -> right pkgDescrp
+   contents <- io $ BS.readFile file
+   let (warnings, result) = runParseResult $ parseGenericPackageDescription contents
+   io $ showWarnings warnings
+   case result of
+        Left (_, errors) -> left $ show errors
+        Right pkgDescrp  -> right pkgDescrp
+
+   where
+      showWarnings :: [PWarning] -> IO ()
+      showWarnings [] = return ()
+      showWarnings ws = putStrLn $ "cabal-cargs: " ++ (L.intercalate ", " $ map show ws)
 
 
 -- | Find matching sections in the package description for the given source file.
