diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8ab20f2c04448a341f8f80f9231243d34a8fcff5..6d9f8bf59adb2679529ec1156967fbf80868d9c3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,7 +8,7 @@ variables:
   DOCKER_REV: "4ed1a4f27828ba96a34662dc954335e29b470cd2"
 
   GHC_VERSION: 8.10.7
-  CABAL_INSTALL_VERSION: 3.6.2.0
+  CABAL_INSTALL_VERSION: 3.9.0.0
 
 workflow:
   rules:
diff --git a/Cabal-QuickCheck/Cabal-QuickCheck.cabal b/Cabal-QuickCheck/Cabal-QuickCheck.cabal
index 9400cd2ebd7cf39391eec78609089c83fa2ecb1c..2240dca999c1e14cb363db3ea3340c9f4e5e49e7 100644
--- a/Cabal-QuickCheck/Cabal-QuickCheck.cabal
+++ b/Cabal-QuickCheck/Cabal-QuickCheck.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name:          Cabal-QuickCheck
-version:       3.7.0.0
+version:       3.9.0.0
 synopsis:      QuickCheck instances for types in Cabal
 category:      Testing
 description:
@@ -13,8 +13,8 @@ library
   build-depends:
     , base
     , bytestring
-    , Cabal         ^>=3.7.0.0
-    , Cabal-syntax  ^>=3.7.0.0
+    , Cabal         ^>=3.9.0.0
+    , Cabal-syntax  ^>=3.9.0.0
     , QuickCheck    ^>=2.13.2 || ^>=2.14
 
   exposed-modules:
diff --git a/Cabal-described/Cabal-described.cabal b/Cabal-described/Cabal-described.cabal
index d377cca276d222df26bf447e3c82a299810737c5..680272a8d2b8d518977cf1765d336c721419f946 100644
--- a/Cabal-described/Cabal-described.cabal
+++ b/Cabal-described/Cabal-described.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name:          Cabal-described
-version:       3.7.0.0
+version:       3.9.0.0
 synopsis:      Described functionality for types in Cabal
 category:      Testing, Parsec
 description:   Provides rere bindings
@@ -11,8 +11,8 @@ library
   ghc-options:      -Wall
   build-depends:
     , base
-    , Cabal             ^>=3.7.0.0
-    , Cabal-syntax      ^>=3.7.0.0
+    , Cabal             ^>=3.9.0.0
+    , Cabal-syntax      ^>=3.9.0.0
     , containers
     , pretty
     , QuickCheck
diff --git a/Cabal-syntax/Cabal-syntax.cabal b/Cabal-syntax/Cabal-syntax.cabal
index 686a16e9f40983723492b092b22827ab2485f444..d07fcc67a34e2bbffdbd7253a15fe94983ada060 100644
--- a/Cabal-syntax/Cabal-syntax.cabal
+++ b/Cabal-syntax/Cabal-syntax.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.0
 name:          Cabal-syntax
-version:       3.7.0.0
+version:       3.9.0.0
 copyright:     2003-2021, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
diff --git a/Cabal-tree-diff/Cabal-tree-diff.cabal b/Cabal-tree-diff/Cabal-tree-diff.cabal
index 1affd598cbb0fc04dd902ecf5aba86e7acc354d8..4f27ba20cdd304182ef5d48b8c1f668fb69f951c 100644
--- a/Cabal-tree-diff/Cabal-tree-diff.cabal
+++ b/Cabal-tree-diff/Cabal-tree-diff.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name:          Cabal-tree-diff
-version:       3.7.0.0
+version:       3.9.0.0
 synopsis:      QuickCheck instances for types in Cabal
 category:      Testing
 description:   Provides tree-diff ToExpr instances for some types in Cabal
@@ -11,8 +11,8 @@ library
   ghc-options:      -Wall
   build-depends:
     , base
-    , Cabal-syntax  ^>=3.7.0.0
-    , Cabal         ^>=3.7.0.0
+    , Cabal-syntax  ^>=3.9.0.0
+    , Cabal         ^>=3.9.0.0
     , tree-diff     ^>=0.1 || ^>=0.2
 
   exposed-modules:  Data.TreeDiff.Instances.Cabal
diff --git a/Cabal/Cabal.cabal b/Cabal/Cabal.cabal
index 7198270cb755b87ac448212d937c239ec6d682d5..b06286d9808a66acee224112ba11e4651f50b96c 100644
--- a/Cabal/Cabal.cabal
+++ b/Cabal/Cabal.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.0
 name:          Cabal
-version:       3.7.0.0
+version:       3.9.0.0
 copyright:     2003-2021, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
@@ -34,7 +34,7 @@ library
   hs-source-dirs: src
 
   build-depends:
-    Cabal-syntax >= 3.7    && < 3.8,
+    Cabal-syntax ^>= 3.9,
     array      >= 0.4.0.1  && < 0.6,
     base       >= 4.6      && < 5,
     bytestring >= 0.10.0.0 && < 0.12,
diff --git a/Cabal/Makefile b/Cabal/Makefile
index 3d5ca7d6e13dfc39f2648234e38963b00c8b8bc5..bf89ffd18d46ab3c4b0bc230dd083440b67ecd76 100644
--- a/Cabal/Makefile
+++ b/Cabal/Makefile
@@ -1,4 +1,4 @@
-VERSION=3.6.0.0
+VERSION=3.9.0.0
 
 #KIND=devel
 KIND=rc
diff --git a/cabal-install-solver/cabal-install-solver.cabal b/cabal-install-solver/cabal-install-solver.cabal
index bc19d12663e675f5cf6be2ff5c8faf231da5698a..faf1849216a38e7d4cb4ab548a7e7bc3ae09c916 100644
--- a/cabal-install-solver/cabal-install-solver.cabal
+++ b/cabal-install-solver/cabal-install-solver.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name:          cabal-install-solver
-version:       3.7.0.0
+version:       3.9.0.0
 synopsis:      The command-line interface for Cabal and Hackage.
 description:
   The solver component used in cabal-install command-line program
@@ -105,8 +105,8 @@ library
     , array         >=0.4      && <0.6
     , base          >=4.10     && <4.17
     , bytestring    >=0.10.6.0 && <0.12
-    , Cabal         ^>=3.7
-    , Cabal-syntax  ^>=3.7
+    , Cabal         ^>=3.9
+    , Cabal-syntax  ^>=3.9
     , containers    >=0.5.6.2  && <0.7
     , edit-distance ^>= 0.2.2
     , filepath      ^>=1.4.0.0
diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal
index cac09f971575abfadb02a330850a0d1917048e3c..b1bd7922a6283078f8e18cd708c635584e42746d 100644
--- a/cabal-install/cabal-install.cabal
+++ b/cabal-install/cabal-install.cabal
@@ -1,7 +1,7 @@
 Cabal-Version:      2.2
 
 Name:               cabal-install
-Version:            3.7.0.0
+Version:            3.9.0.0
 Synopsis:           The command-line interface for Cabal and Hackage.
 Description:
     The \'cabal\' command-line program simplifies the process of managing
@@ -49,13 +49,13 @@ common base-dep
     build-depends: base >=4.10 && <4.17
 
 common cabal-dep
-    build-depends: Cabal ^>=3.7
+    build-depends: Cabal ^>=3.9
 
 common cabal-syntax-dep
-    build-depends: Cabal-syntax ^>=3.7
+    build-depends: Cabal-syntax ^>=3.9
 
 common cabal-install-solver-dep
-    build-depends: cabal-install-solver ^>=3.7
+    build-depends: cabal-install-solver ^>=3.9
 
 library
     import: warnings, base-dep, cabal-dep, cabal-syntax-dep, cabal-install-solver-dep
diff --git a/cabal-testsuite/cabal-testsuite.cabal b/cabal-testsuite/cabal-testsuite.cabal
index 841202a189047af47038d899f28bb192cc4750c1..eed36aa1a19c29667b4c1fc16a8a2a7696d3bdf6 100644
--- a/cabal-testsuite/cabal-testsuite.cabal
+++ b/cabal-testsuite/cabal-testsuite.cabal
@@ -28,8 +28,8 @@ common shared
   build-depends:
     , base >= 4.6 && <4.17
     -- this needs to match the in-tree lib:Cabal version
-    , Cabal == 3.7.0.0
-    , Cabal-syntax == 3.7.0.0
+    , Cabal ^>= 3.9.0.0
+    , Cabal-syntax ^>= 3.9.0.0
 
   ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns
 
@@ -111,6 +111,8 @@ executable setup
 
 custom-setup
   -- we only depend on even stable releases of lib:Cabal
-  setup-depends: Cabal == 2.2.* || == 2.4.* || == 3.0.* || ==3.2.* || ==3.4.* || ==3.6.*,
+  -- and due to Custom complexity and ConstraintSetupCabalMaxVersion
+  -- it can't be the current version
+  setup-depends: Cabal == 3.6.*,
                  Cabal-syntax == 3.6.*,
                  base, filepath, directory
diff --git a/doc/conf.py b/doc/conf.py
index 3350df95a4e55e93c73b7a57c5c9e25e8e1a8a53..2c9534c31d271c80504ebda8c1ecee89591ccf53 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -13,7 +13,7 @@ import sphinx_rtd_theme
 sys.path.insert(0, os.path.abspath('.'))
 import cabaldomain
 
-version = "3.6.0.0"
+version = "3.9.0.0"
 
 extensions = [
     'sphinx.ext.extlinks',
diff --git a/solver-benchmarks/solver-benchmarks.cabal b/solver-benchmarks/solver-benchmarks.cabal
index 06c8a7218906714353bdea858cd8d77f8d0a0644..a01baf9640d31a6fc8bc1d1799065e17996f1e92 100644
--- a/solver-benchmarks/solver-benchmarks.cabal
+++ b/solver-benchmarks/solver-benchmarks.cabal
@@ -31,7 +31,7 @@ library
     base,
     bytestring,
     containers,
-    Cabal-syntax >= 3.7,
+    Cabal-syntax ^>= 3.9,
     directory,
     filepath,
     optparse-applicative,