diff --git a/GhcDump/Ast.hs b/GhcDump/Ast.hs
--- a/GhcDump/Ast.hs
+++ b/GhcDump/Ast.hs
@@ -118,6 +118,7 @@
          | MachLabel T.Text
          | LitInteger Integer
          | LitNatural Integer
+         | LitRubbish
          deriving (Eq, Ord, Generic, Show)
 instance Serialise Lit
 
diff --git a/GhcDump/Convert.hs b/GhcDump/Convert.hs
--- a/GhcDump/Convert.hs
+++ b/GhcDump/Convert.hs
@@ -6,7 +6,9 @@
 import qualified Data.Text.Encoding as TE
 
 import Literal (Literal(..))
+#if MIN_VERSION_ghc(8,6,0)
 import qualified Literal
+#endif
 import Var (Var)
 import qualified Var
 import Id (isFCallId)
@@ -23,7 +25,8 @@
 import qualified CoreSyn
 import CoreSyn (Expr(..), CoreExpr, Bind(..), CoreAlt, CoreBind, AltCon(..))
 import HscTypes (ModGuts(..))
-import FastString (FastString, fastStringToByteString)
+import FastString (FastString)
+import qualified FastString
 #if MIN_VERSION_ghc(8,2,0)
 import TyCoRep as Type (Type(..))
 #elif MIN_VERSION_ghc(8,0,0)
@@ -45,7 +48,12 @@
 cvtSDoc = T.pack . showSDoc unsafeGlobalDynFlags
 
 fastStringToText :: FastString -> T.Text
-fastStringToText = TE.decodeUtf8 . fastStringToByteString
+fastStringToText = TE.decodeUtf8
+#if MIN_VERSION_ghc(8,10,0)
+  . FastString.bytesFS
+#else
+  . FastString.fastStringToByteString
+#endif
 
 occNameToText :: OccName -> T.Text
 occNameToText = fastStringToText . occNameFS
@@ -193,9 +201,22 @@
 cvtLit :: Literal -> Ast.Lit
 cvtLit l =
     case l of
+#if MIN_VERSION_ghc(8,8,0)
+      Literal.LitChar x -> Ast.MachChar x
+      Literal.LitString x -> Ast.MachStr x
+      Literal.LitNullAddr -> Ast.MachNullAddr
+      Literal.LitFloat x -> Ast.MachFloat x
+      Literal.LitDouble x -> Ast.MachDouble x
+      Literal.LitLabel x _ _ -> Ast.MachLabel $ fastStringToText  x
+      Literal.LitRubbish -> Ast.LitRubbish
+#else
       Literal.MachChar x -> Ast.MachChar x
       Literal.MachStr x -> Ast.MachStr x
       Literal.MachNullAddr -> Ast.MachNullAddr
+      Literal.MachFloat x -> Ast.MachFloat x
+      Literal.MachDouble x -> Ast.MachDouble x
+      Literal.MachLabel x _ _ -> Ast.MachLabel $ fastStringToText  x
+#endif
 #if MIN_VERSION_ghc(8,6,0)
       Literal.LitNumber numty n _ ->
         case numty of
@@ -212,9 +233,6 @@
       Literal.MachWord64 x -> Ast.MachWord64 x
       Literal.LitInteger x _ -> Ast.LitInteger x
 #endif
-      Literal.MachFloat x -> Ast.MachFloat x
-      Literal.MachDouble x -> Ast.MachDouble x
-      Literal.MachLabel x _ _ -> Ast.MachLabel $ fastStringToText  x
 
 cvtModule :: String -> ModGuts -> Ast.SModule
 cvtModule phase guts =
@@ -225,7 +243,9 @@
 cvtModuleName = Ast.ModuleName . fastStringToText . moduleNameFS
 
 cvtType :: Type.Type -> Ast.SType
-#if MIN_VERSION_ghc(8,2,0)
+#if MIN_VERSION_ghc(8,10,0)
+cvtType (Type.FunTy _flag a b) = Ast.FunTy (cvtType a) (cvtType b)
+#elif MIN_VERSION_ghc(8,2,0)
 cvtType (Type.FunTy a b) = Ast.FunTy (cvtType a) (cvtType b)
 #else
 cvtType t
@@ -234,7 +254,9 @@
 cvtType (Type.TyVarTy v)       = Ast.VarTy (cvtVar v)
 cvtType (Type.AppTy a b)       = Ast.AppTy (cvtType a) (cvtType b)
 cvtType (Type.TyConApp tc tys) = Ast.TyConApp (cvtTyCon tc) (map cvtType tys)
-#if MIN_VERSION_ghc(8,2,0)
+#if MIN_VERSION_ghc(8,8,0)
+cvtType (Type.ForAllTy (Var.Bndr b _) t) = Ast.ForAllTy (cvtBinder b) (cvtType t)
+#elif MIN_VERSION_ghc(8,2,0)
 cvtType (Type.ForAllTy (Var.TvBndr b _) t) = Ast.ForAllTy (cvtBinder b) (cvtType t)
 #elif MIN_VERSION_ghc(8,0,0)
 cvtType (Type.ForAllTy (Named b _) t) = Ast.ForAllTy (cvtBinder b) (cvtType t)
diff --git a/GhcDump/Plugin.hs b/GhcDump/Plugin.hs
--- a/GhcDump/Plugin.hs
+++ b/GhcDump/Plugin.hs
@@ -6,7 +6,9 @@
 import qualified Data.ByteString.Lazy as BSL
 import qualified Codec.Serialise as Ser
 import GhcPlugins hiding (TB)
+#if !MIN_VERSION_ghc(8,8,0)
 import CoreMonad (pprPassDetails)
+#endif
 import ErrUtils (showPass)
 import Text.Printf
 import System.FilePath
diff --git a/ghc-dump-core.cabal b/ghc-dump-core.cabal
--- a/ghc-dump-core.cabal
+++ b/ghc-dump-core.cabal
@@ -1,5 +1,5 @@
 name:                ghc-dump-core
-version:             0.1.1.0
+version:             0.1.2.0
 synopsis:            An AST and compiler plugin for dumping GHC's Core representation.
 description:
   @ghc-dump@ is a library, GHC plugin, and set of tools for recording and
@@ -27,7 +27,7 @@
 copyright:           (c) 2017 Ben Gamari
 category:            Development
 build-type:          Simple
-tested-with:         GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.4
+tested-with:         GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5, GHC==8.8.3, GHC==8.10.1
 cabal-version:       >=1.10
 
 source-repository head
@@ -38,16 +38,20 @@
   exposed-modules:     GhcDump.Convert, GhcDump.Ast, GhcDump.Plugin
   ghc-options:         -Wall
   other-extensions:    GeneralizedNewtypeDeriving
-  build-depends:       base >=4.8 && <4.13,
+  build-depends:       base >=4.8 && <4.15,
                        bytestring >= 0.10,
                        text >=1.2 && <1.3,
                        filepath >= 1.4,
                        serialise >= 0.2 && <0.3,
-                       ghc >= 7.10 && < 8.8,
+                       ghc >= 7.10 && < 8.11,
                        directory < 1.4
   default-language:    Haskell2010
   if impl(ghc >= 8.0)
-    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
+    ghc-options: -Wcompat
+    if impl(ghc < 8.8)
+      ghc-options:
+        -Wnoncanonical-monad-instances
+        -Wnoncanonical-monadfail-instances
   else
     -- provide/emulate `Control.Monad.Fail` and `Data.Semigroups` API for pre-GHC8
     build-depends: fail == 4.9.*, semigroups == 0.18.*
