diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### 0.9.0.8
+
+* Support GHC 9.8
+
 ### 0.9.0.7
 
 * Support GHC 9.4
diff --git a/hint.cabal b/hint.cabal
--- a/hint.cabal
+++ b/hint.cabal
@@ -1,5 +1,5 @@
 name:         hint
-version:      0.9.0.7
+version:      0.9.0.8
 description:
         This library defines an Interpreter monad. It allows to load Haskell
         modules, browse them, type-check and evaluate strings with Haskell
@@ -23,6 +23,7 @@
             , ghc == 9.2.7
             , ghc == 9.4.5
             , ghc == 9.6.1
+            , ghc == 9.8.1
 
 cabal-version: >= 1.10
 build-type:    Simple
@@ -71,7 +72,7 @@
   default-language: Haskell2010
   build-depends: base == 4.*,
                  containers,
-                 ghc >= 8.4 && < 9.7,
+                 ghc >= 8.4 && < 9.9,
                  ghc-paths,
                  ghc-boot,
                  transformers,
diff --git a/src/Hint/Context.hs b/src/Hint/Context.hs
--- a/src/Hint/Context.hs
+++ b/src/Hint/Context.hs
@@ -32,7 +32,6 @@
 import System.FilePath
 import System.Directory
 
-import Data.Maybe (maybe)
 import Hint.Configuration (setGhcOption)
 import System.IO.Temp
 
@@ -115,7 +114,6 @@
     do pm <- newPhantomModule
        df <- runGhc GHC.getSessionDynFlags
        let t = GHC.fileTarget df (pmFile pm)
-           m = GHC.mkModuleName (pmName pm)
        --
        liftIO $ writeFile (pmFile pm) (mod_text $ pmName pm)
        --
diff --git a/src/Hint/GHC.hs b/src/Hint/GHC.hs
--- a/src/Hint/GHC.hs
+++ b/src/Hint/GHC.hs
@@ -47,6 +47,11 @@
                        )
 import Control.Monad.Ghc as X (GhcT, runGhcT)
 
+#if MIN_VERSION_ghc(9,8,0)
+import GHC.Types.Error (ResolvedDiagnosticReason(..), Messages)
+import GHC.Driver.Errors.Types (DriverMessage)
+#endif
+
 #if MIN_VERSION_ghc(9,4,0)
 import GHC.Types.SourceError as X (SourceError, srcErrorMessages)
 
@@ -429,10 +434,21 @@
 pushLogHook :: (GHC.LogAction -> GHC.LogAction) -> Logger -> Logger
 modifyLogger :: GhcMonad m => (Logger -> Logger) -> m ()
 mkLogAction :: (String -> a) -> IORef [a] -> GHC.LogAction
-#if MIN_VERSION_ghc(9,6,0)
+#if MIN_VERSION_ghc(9,8,0)
 data WarnReason = NoReason
 type Logger = GHC.Logger
 initLogger = GHC.initLogger
+putLogMsg logger _df _wn sev = GHC.putLogMsg logger (GHC.logFlags logger) (GHC.MCDiagnostic sev (ResolvedDiagnosticReason GHC.ErrorWithoutFlag) Nothing)
+pushLogHook = GHC.pushLogHook
+modifyLogger = GHC.modifyLogger
+mkLogAction f r = \lf mc src msg ->
+    let renderErrMsg = GHC.renderWithContext (GHC.log_default_user_context lf)
+        errorEntry   = f (renderErrMsg (GHC.mkLocMessage mc src msg))
+    in modifyIORef r (errorEntry :)
+#elif MIN_VERSION_ghc(9,6,0)
+data WarnReason = NoReason
+type Logger = GHC.Logger
+initLogger = GHC.initLogger
 putLogMsg logger _df _wn sev = GHC.putLogMsg logger (GHC.logFlags logger) (GHC.MCDiagnostic sev GHC.ErrorWithoutFlag Nothing)
 pushLogHook = GHC.pushLogHook
 modifyLogger = GHC.modifyLogger
@@ -606,11 +622,17 @@
 #endif
 
 -- parseDynamicFlags
-parseDynamicFlags :: MonadIO m => Logger -> DynFlags -> [Located String] -> m (DynFlags, [Located String], [Warn])
+
+#if MIN_VERSION_ghc(9,8,0)
+parseDynamicFlags :: MonadIO m => Logger -> DynFlags -> [Located String] -> m (DynFlags, [Located String], Messages DriverMessage)
+parseDynamicFlags = GHC.parseDynamicFlags
+#else
 #if MIN_VERSION_ghc(9,2,0)
+parseDynamicFlags :: MonadIO m => Logger -> DynFlags -> [Located String] -> m (DynFlags, [Located String], [Warn])
 parseDynamicFlags = GHC.parseDynamicFlags
 #else
 parseDynamicFlags _ = GHC.parseDynamicFlags
+#endif
 #endif
 
 pprTypeForUser :: Type -> SDoc
