diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,16 @@
 `extensions` uses [PVP Versioning][1].
 The changelog is available [on GitHub][2].
 
+## 0.1.0.1 — Oct 15, 2023
+
+* Add support for GHC-9.6
+
+* Add support for `Cabal` `3.10` and remove support for all other
+  `Cabal` versions.  This seems like the sensible thing to do, because
+  the list of extensions in the `Cabal` package changes every major
+  version.  If this causes you problems please [file an
+  issue](https://github.com/kowainik/extensions/issues/new) and we
+  will address it.
 
 ## 0.1.0.0 — Oct 14, 2022
 
diff --git a/extensions.cabal b/extensions.cabal
--- a/extensions.cabal
+++ b/extensions.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                extensions
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Parse Haskell Language Extensions
 description:         Parse Haskell Language Extensions.
                      See [README.md](https://github.com/kowainik/extensions#extensions) for more details.
@@ -20,6 +20,7 @@
                      GHC == 9.0.2
                      GHC == 9.2.4
                      GHC == 9.4.2
+                     GHC == 9.6.3
 
 flag executable
   description: Build the extensions executable
@@ -31,13 +32,14 @@
   location:            https://github.com/kowainik/extensions.git
 
 common common-options
-  build-depends:       base >= 4.13.0.0 && < 4.18
+  build-depends:       base >= 4.13.0.0 && < 4.20
 
   ghc-options:         -Wall
                        -Wcompat
                        -Widentities
                        -Wincomplete-uni-patterns
                        -Wincomplete-record-updates
+                       -Werror=incomplete-patterns
   if impl(ghc >= 8.0)
     ghc-options:       -Wredundant-constraints
   if impl(ghc >= 8.2)
@@ -80,14 +82,23 @@
                          Extensions.Package
                          Extensions.Types
 
-  build-depends:       bytestring >= 0.10 && < 0.12
-                     , Cabal >= 3.0 && < 3.9
+  build-depends:       bytestring >= 0.10 && < 0.13
+                       -- We need to pin a single major version of
+                       -- Cabal here because the main reason we use
+                       -- Cabal is for its list of extensions.  Later
+                       -- versions have strictly more extensions, and
+                       -- we'll have missing patterns if we try to
+                       -- support more than one major version.  If
+                       -- this causes problems in practice let's
+                       -- revisit this decision and come up with
+                       -- another approach.
+                     , Cabal ^>= 3.10
                      , containers ^>= 0.6
                      , directory ^>= 1.3
                      , filepath ^>= 1.4
-                     , ghc-boot-th >= 8.8.1 && < 9.5
+                     , ghc-boot-th >= 8.8.1 && < 9.9
                      , parsec ^>= 3.1
-                     , text >= 1.2.3 && < 2.1
+                     , text >= 1.2.3 && < 2.2
 
 executable extensions
   import:              common-options
@@ -118,7 +129,7 @@
                      , bytestring
                      , containers
                      , ghc-boot-th
-                     , hedgehog >= 1.0 && < 1.3
+                     , hedgehog >= 1.0 && < 1.5
                      , hspec
                      , hspec-hedgehog ^>= 0.0.1
                      , text
diff --git a/src/Extensions/Cabal.hs b/src/Extensions/Cabal.hs
--- a/src/Extensions/Cabal.hs
+++ b/src/Extensions/Cabal.hs
@@ -351,22 +351,55 @@
     Cabal.ImportQualifiedPost               -> Just ImportQualifiedPost
     Cabal.StandaloneKindSignatures          -> Just StandaloneKindSignatures
     Cabal.UnliftedNewtypes                  -> Just UnliftedNewtypes
+#else
+    Cabal.CUSKs                             -> Nothing
+    Cabal.ImportQualifiedPost               -> Nothing
+    Cabal.StandaloneKindSignatures          -> Nothing
+    Cabal.UnliftedNewtypes                  -> Nothing
 #endif
 #if __GLASGOW_HASKELL__ >= 900
     Cabal.LexicalNegation                   -> Just LexicalNegation
     Cabal.QualifiedDo                       -> Just QualifiedDo
     Cabal.LinearTypes                       -> Just LinearTypes
+#else
+    Cabal.LexicalNegation                   -> Nothing
+    Cabal.QualifiedDo                       -> Nothing
+    Cabal.LinearTypes                       -> Nothing
 #endif
 #if __GLASGOW_HASKELL__ >= 902
     Cabal.FieldSelectors                    -> Just FieldSelectors
     Cabal.OverloadedRecordDot               -> Just OverloadedRecordDot
     Cabal.UnliftedDatatypes                 -> Just UnliftedDatatypes
+#else
+    Cabal.FieldSelectors                    -> Nothing
+    Cabal.OverloadedRecordDot               -> Nothing
+    Cabal.UnliftedDatatypes                 -> Nothing
 #endif
 #if __GLASGOW_HASKELL__ >= 904
     Cabal.OverloadedRecordUpdate            -> Just OverloadedRecordUpdate
     Cabal.AlternativeLayoutRule             -> Just AlternativeLayoutRule
     Cabal.AlternativeLayoutRuleTransitional -> Just AlternativeLayoutRuleTransitional
     Cabal.RelaxedLayout                     -> Just RelaxedLayout
+#else
+    Cabal.OverloadedRecordUpdate            -> Nothing
+    Cabal.AlternativeLayoutRule             -> Nothing
+    Cabal.AlternativeLayoutRuleTransitional -> Nothing
+    Cabal.RelaxedLayout                     -> Nothing
+#endif
+#if __GLASGOW_HASKELL__ >= 906
+    Cabal.DeepSubsumption                   -> Just DeepSubsumption
+    Cabal.TypeData                          -> Just TypeData
+#else
+    Cabal.DeepSubsumption                   -> Nothing
+    Cabal.TypeData                          -> Nothing
+#endif
+#if __GLASGOW_HASKELL__ >= 910
+    -- This branch cannot be satisfied yet but we're including it so
+    -- we don't forget to enablel RequiredTypeArguments when it
+    -- becomes available.
+    Cabal.RequiredTypeArguments             -> Just RequiredTypeArguments
+#else
+    Cabal.RequiredTypeArguments             -> Nothing
 #endif
     -- GHC extensions, parsed by both Cabal and GHC, but don't have an Extension constructor
     Cabal.Safe                              -> Nothing
