diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.4.0 (2022-10-19)
+  * Update to fortran-src 0.12.0 (bumps minimum compiler version to GHC 9.0)
+  * Set upper bounds for various dependencies
+
 ## 0.3.2 (2022-08-22)
   * Update to fortran-src 0.10.1
   * Serializer: add include inlining support (F77e only)
diff --git a/app/Language/Fortran/Extras/CLI/Serialize.hs b/app/Language/Fortran/Extras/CLI/Serialize.hs
--- a/app/Language/Fortran/Extras/CLI/Serialize.hs
+++ b/app/Language/Fortran/Extras/CLI/Serialize.hs
@@ -7,7 +7,6 @@
 import Control.Monad.IO.Class
 import qualified Options.Applicative as OA
 import qualified Language.Fortran.Parser as F.Parser
-import qualified Language.Fortran.Parser.Monad as F.Parser -- TODO moved to Parser in next version
 import Language.Fortran.Version
 import qualified Language.Fortran.Util.ModFile as F.ModFile
 import qualified Raehik.CLI.Stream as CLI
@@ -109,7 +108,7 @@
           InlineIncludes ->
             case cfgVersion cfg of
               Fortran77Extended -> do
-                let parserM = F.Parser.f77lIncludes ("." : cfgIncludeDirs cfg) F.ModFile.emptyModFiles
+                let parserM = F.Parser.f77lInlineIncludes ("." : cfgIncludeDirs cfg) F.ModFile.emptyModFiles
                 src <- liftIO $ parserM (CLI.inStreamFileName sIn) bsIn
                 runEncodeAndPrint (cfgFormat cfg) sOut src
                 return $ Right ()
diff --git a/fortran-src-extras.cabal b/fortran-src-extras.cabal
--- a/fortran-src-extras.cabal
+++ b/fortran-src-extras.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.4.
+-- This file has been generated from package.yaml by hpack version 0.35.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           fortran-src-extras
-version:        0.3.2
+version:        0.4.0
 synopsis:       Common functions and utils for fortran-src.
 description:    Various utility functions and orphan instances which may be useful when using fortran-src.
 category:       Language
@@ -61,19 +61,17 @@
       TupleSections
   ghc-options: -Wall
   build-depends:
-      GenericPretty >=1.2.1
-    , aeson >=1.5.0.0
+      GenericPretty >=1.2.1 && <1.3
+    , aeson >=1.5 && <2.2
     , base >=4.7 && <5
-    , binary >=0.8.5.1
-    , bytestring >=0.10.8.1
-    , containers >=0.5.0.0
-    , directory >=1.3.0.2
+    , bytestring >=0.10 && <0.12
+    , containers >=0.5 && <0.7
     , either >=5.0.0 && <5.1
-    , filepath >=1.4.1.2
-    , fortran-src >=0.10.1
-    , optparse-applicative >=0.14
-    , text >=1.2.2.2
-    , uniplate >=1.6.10
+    , filepath >=1.4.1.2 && <1.5
+    , fortran-src >=0.12.0 && <0.13
+    , optparse-applicative >=0.14 && <0.18
+    , text >=1.2 && <2.1
+    , uniplate >=1.6.10 && <1.7
   default-language: Haskell2010
 
 executable fortran-src-extras
@@ -105,16 +103,16 @@
       TupleSections
   ghc-options: -Wall
   build-depends:
-      GenericPretty >=1.2.1
-    , aeson >=1.5.0.0
+      GenericPretty >=1.2.1 && <1.3
+    , aeson >=1.5 && <2.2
     , base >=4.7 && <5
-    , bytestring >=0.10.8.1
-    , containers >=0.5.0.0
-    , fortran-src >=0.10.1
+    , bytestring >=0.10 && <0.12
+    , containers >=0.5 && <0.7
+    , fortran-src >=0.12.0 && <0.13
     , fortran-src-extras
-    , optparse-applicative >=0.14
-    , text >=1.2.2.2
-    , uniplate >=1.6.10
+    , optparse-applicative >=0.14 && <0.18
+    , text >=1.2 && <2.1
+    , uniplate >=1.6.10 && <1.7
     , yaml >=0.11.8.0 && <0.12
   default-language: Haskell2010
 
@@ -150,16 +148,16 @@
   build-tool-depends:
       hspec-discover:hspec-discover
   build-depends:
-      GenericPretty >=1.2.1
-    , aeson >=1.5.0.0
+      GenericPretty >=1.2.1 && <1.3
+    , aeson >=1.5 && <2.2
     , base >=4.7 && <5
-    , bytestring >=0.10.8.1
-    , containers >=0.5.0.0
-    , fortran-src >=0.10.1
+    , bytestring >=0.10 && <0.12
+    , containers >=0.5 && <0.7
+    , fortran-src >=0.12.0 && <0.13
     , fortran-src-extras
     , hspec >=2.2 && <3
-    , optparse-applicative >=0.14
+    , optparse-applicative >=0.14 && <0.18
     , silently ==1.2.*
-    , text >=1.2.2.2
-    , uniplate >=1.6.10
+    , text >=1.2 && <2.1
+    , uniplate >=1.6.10 && <1.7
   default-language: Haskell2010
diff --git a/src/Language/Fortran/Extras.hs b/src/Language/Fortran/Extras.hs
--- a/src/Language/Fortran/Extras.hs
+++ b/src/Language/Fortran/Extras.hs
@@ -32,7 +32,7 @@
                                                 , stderr
                                                 )
 import           Options.Applicative
-import           Language.Fortran.Parser        ( f77lIncIncludes )
+import qualified Language.Fortran.Parser as Parser
 import qualified Language.Fortran.Extras.ProgramFile
                                                as P
 import qualified Language.Fortran.Extras.Analysis
@@ -93,8 +93,8 @@
 
 incFile :: FortranSrcRunOptions -> IO [Block A0]
 incFile options = do
-  (pfPath, pfContents, pfIncludes, _fVersion) <- unwrapFortranSrcOptions options
-  f77lIncIncludes pfIncludes pfPath pfContents
+  (pfPath, pfContents, _pfIncludes, _fVersion) <- unwrapFortranSrcOptions options
+  Parser.throwIOLeft $ Parser.f77lIncludesNoTransform pfPath pfContents
 
 -- | Get a 'ProgramFile' with 'Analysis' from version and path specified
 -- in 'FortranSrcRunOptions'
diff --git a/src/Language/Fortran/Extras/ProgramFile.hs b/src/Language/Fortran/Extras/ProgramFile.hs
--- a/src/Language/Fortran/Extras/ProgramFile.hs
+++ b/src/Language/Fortran/Extras/ProgramFile.hs
@@ -22,7 +22,7 @@
 versionedExpandedProgramFile v importDirs path contents =
     case v of
       Fortran77Legacy ->
-        Parser.f77lIncludes (takeDirectory path : importDirs) [] path contents
+        Parser.f77lInlineIncludes (takeDirectory path : importDirs) [] path contents
       _ -> error $ "Unsupported version: " ++ show v
 
 -- | Obtain a 'ProgramFile' from a specific version of the parser.
