diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml
index b404cacfb08faad4dfb638382741673112bdef84..4ac3a7f2349133648cb4dbf060e29459c09f9395 100644
--- a/.github/workflows/bootstrap.yml
+++ b/.github/workflows/bootstrap.yml
@@ -19,7 +19,7 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-latest]
-        ghc: ["8.6.5", "8.8.4", "8.10.7", "9.0.2", "9.2.3"]
+        ghc: ["8.6.5", "8.8.4", "8.10.7", "9.0.2", "9.2.3", "9.4.4"]
         include:
           - os: macos-latest
             ghc: "9.2.3"
diff --git a/.github/workflows/quick-jobs.yml b/.github/workflows/quick-jobs.yml
index 466ec4d57dca06bcff066410e6e71a0fe902522a..633c9842fe85e13771b41bc994b5c5d5c906554e 100644
--- a/.github/workflows/quick-jobs.yml
+++ b/.github/workflows/quick-jobs.yml
@@ -65,14 +65,6 @@ jobs:
       - name: Set PATH
         run: |
           echo "$HOME/.cabal/bin" >> $GITHUB_PATH
-      - name: Install cabal-env
-        run: |
-          mkdir -p $HOME/.cabal/bin
-          curl -sL https://github.com/phadej/cabal-extras/releases/download/preview-20191225/cabal-env-snapshot-20191225-x86_64-linux.xz > cabal-env.xz
-          echo "1b567d529c5f627fd8c956e57ae8f0d9f11ee66d6db34b7fb0cb1c370b4edf01  cabal-env.xz" | sha256sum -c -
-          xz -d < cabal-env.xz > $HOME/.cabal/bin/cabal-env
-          rm -f cabal-env.xz
-          chmod a+x $HOME/.cabal/bin/cabal-env
       - uses: actions/cache@v1
         with:
           path: ~/.cabal/store
@@ -91,17 +83,12 @@ jobs:
         run: |
           ghcup --version
           ghcup config set cache true
-          ghcup install ghc recommended
-          ghcup set ghc recommended
+          ghcup install ghc --set recommended
+          ghcup install cabal --set latest
       - name: Update Hackage index
         run: cabal v2-update
-      - name: Install doctest
-        run: cabal v2-install doctest
-      - name: Install libraries
-        run: |
-          cabal-env --transitive QuickCheck
-          cabal-env array bytestring containers deepseq directory filepath pretty process time binary unix text parsec mtl
-          cat $HOME/.ghc/*/environments/default
       - uses: actions/checkout@v3
+      - name: Install doctest
+        run: make doctest-install
       - name: Doctest
         run: make doctest
diff --git a/Cabal-syntax/Cabal-syntax.cabal b/Cabal-syntax/Cabal-syntax.cabal
index b0c7244764823909fbbe76ec926974ed17c355a3..8bc06f8080ceda626b3b3f535710b79561a4edb9 100644
--- a/Cabal-syntax/Cabal-syntax.cabal
+++ b/Cabal-syntax/Cabal-syntax.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 name:          Cabal-syntax
 version:       3.9.0.0
-copyright:     2003-2022, Cabal Development Team (see AUTHORS file)
+copyright:     2003-2023, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
 author:        Cabal Development Team <cabal-devel@haskell.org>
diff --git a/Cabal-syntax/LICENSE b/Cabal-syntax/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/Cabal-syntax/LICENSE
+++ b/Cabal-syntax/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/Cabal-tests/Cabal-tests.cabal b/Cabal-tests/Cabal-tests.cabal
index 1f6a9b6d814b294476c50ab33b8e3d3b424e0293..2ae09c0928ee23c396a3b2a7ad5634b33ac35079 100644
--- a/Cabal-tests/Cabal-tests.cabal
+++ b/Cabal-tests/Cabal-tests.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 name:          Cabal-tests
 version:       3
-copyright:     2003-2022, Cabal Development Team (see AUTHORS file)
+copyright:     2003-2023, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
 author:        Cabal Development Team <cabal-devel@haskell.org>
diff --git a/Cabal-tests/LICENSE b/Cabal-tests/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/Cabal-tests/LICENSE
+++ b/Cabal-tests/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/Cabal/Cabal.cabal b/Cabal/Cabal.cabal
index c75d24df96763b3fb1a2325eaceb154d825cf3af..3ad7d51753596238fbd7eadfefc443adbf6f0b54 100644
--- a/Cabal/Cabal.cabal
+++ b/Cabal/Cabal.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 name:          Cabal
 version:       3.9.0.0
-copyright:     2003-2022, Cabal Development Team (see AUTHORS file)
+copyright:     2003-2023, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
 author:        Cabal Development Team <cabal-devel@haskell.org>
diff --git a/Cabal/LICENSE b/Cabal/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/Cabal/LICENSE
+++ b/Cabal/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/LICENSE b/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/Makefile b/Makefile
index 1ffbec77c663ff6b29f590f108f87a72581f1954..e61ac22e03a455d3da32421dd0850f4907e08391 100644
--- a/Makefile
+++ b/Makefile
@@ -71,15 +71,27 @@ ghcid-lib :
 ghcid-cli :
 	ghcid -c 'cabal v2-repl cabal-install'
 
-# doctests (relies on .ghc.environment files)
-
+# Artem, 2023-02-03, https://github.com/haskell/cabal/issues/8504
+# The new and prefered way to call the doctest tool (as of now) is based on cabal repl --with-ghc=doctest.
+# The call below reflects the current documentation of the doctest tool except one caveat,
+# which is https://github.com/haskell/cabal/issues/6859, i.e. we have to hide allow-newer in our project
+# file from cabal/doctest. This is easy: we just select a project file with no allow-newer (e.g. cabal.project.libonly).
+#
+# TODO: Cabal-described should be added here but its doctests currently broken, see:
+#       https://github.com/haskell/cabal/issues/8734
+#       Just as well, cabal-install(-solver) doctests (the target below) bitrotted and need some care.
 doctest :
-	doctest --fast -XHaskell2010 Cabal-syntax/src Cabal/src
+	cabal repl --with-ghc=doctest --build-depends=QuickCheck --build-depends=template-haskell --repl-options="-w" --project-file="cabal.project.validate" Cabal-syntax
+	cabal repl --with-ghc=doctest --build-depends=QuickCheck --build-depends=template-haskell --repl-options="-w" --project-file="cabal.project.validate" Cabal
+
 
 # This is not run as part of validate.sh (we need hackage-security, which is tricky to get).
 doctest-cli :
 	doctest -D__DOCTEST__ --fast cabal-install/src cabal-install-solver/src cabal-install-solver/src-assertion
 
+doctest-install:
+	cabal install doctest --overwrite-policy=always --ignore-project
+
 # tests
 
 check-tests :
@@ -183,7 +195,7 @@ bootstrap-json-%: phony
 	cd bootstrap && cabal v2-run -v0 cabal-bootstrap-gen -- linux-$*.plan.json \
 		| python3 -m json.tool > linux-$*.json
 
-BOOTSTRAP_GHC_VERSIONS := 8.6.5 8.8.4 8.10.7 9.0.2 9.2.3
+BOOTSTRAP_GHC_VERSIONS := 8.6.5 8.8.4 8.10.7 9.0.2 9.2.3 9.4.4
 
 bootstrap-jsons: $(BOOTSTRAP_GHC_VERSIONS:%=bootstrap-json-%)
 
diff --git a/bootstrap/cabal-bootstrap-gen.cabal b/bootstrap/cabal-bootstrap-gen.cabal
index a8e0ad0ad8893b043332a2fcddcffc80d6171fd4..70092314108a2484dbb41c2a333b03ec0050ff2f 100644
--- a/bootstrap/cabal-bootstrap-gen.cabal
+++ b/bootstrap/cabal-bootstrap-gen.cabal
@@ -8,18 +8,14 @@ executable cabal-bootstrap-gen
   ghc-options:      -Wall
   main-is:          Main.hs
   build-depends:
-    , aeson                  ^>=1.5.2.0  || ^>=2.0.3.0
-        -- Not yet picked up: (*)        || ^>=2.1.0.0
-    , base                   ^>=4.12.0.0 || ^>=4.13.0.0 || ^>=4.14.0.0 || ^>=4.15.0.0 || ^>=4.16.0.0
+    , aeson                  ^>=1.5.2.0  || ^>=2.0.3.0 || ^>=2.1.0.0
+    , base                   ^>=4.12.0.0 || ^>=4.13.0.0 || ^>=4.14.0.0 || ^>=4.15.0.0 || ^>=4.16.0.0 || ^>=4.17.0.0
     , bytestring             ^>=0.10.8.2 || ^>=0.11.0.0
-    , Cabal                  ^>=3.2.0.0  || ^>=3.4.1.0  || ^>=3.6.3.0
-        -- Not yet picked up: (*)        || ^>=3.8.1.0
-    , cabal-install-parsers  ^>=0.3.0.1  || ^>=0.4.5
+    , Cabal                  ^>=3.2.0.0  || ^>=3.4.1.0  || ^>=3.6.3.0 || ^>=3.8.1.0
+    , Cabal-syntax           ^>=3.8.1.0
+    , cabal-install-parsers  ^>=0.3.0.1  || ^>=0.4.5 || ^>=0.6
     , cabal-plan             ^>=0.7.0.0
     , containers             ^>=0.6.0.1
-    , text                   ^>=1.2.3.0
-        -- Not yet picked up: (*)        || ^>=2.0.1
+    , text                   ^>=1.2.3.0  || ^>=2.0.1
     , topograph              ^>=1.0.0.1
-    , transformers           ^>=0.5.6.2
-        -- Not yet picked up: (*)        || ^>=0.6.0.4
-        -- (*) as of 2022-08-19
+    , transformers           ^>=0.5.6.2  || ^>=0.6.0.4
diff --git a/bootstrap/linux-9.4.4.json b/bootstrap/linux-9.4.4.json
new file mode 100644
index 0000000000000000000000000000000000000000..342772b24c5271e77f7a546b24742ec2cd3e17c5
--- /dev/null
+++ b/bootstrap/linux-9.4.4.json
@@ -0,0 +1 @@
+{"builtin":[{"package":"rts","version":"1.0.2"},{"package":"ghc-prim","version":"0.9.0"},{"package":"ghc-bignum","version":"1.3"},{"package":"base","version":"4.17.0.0"},{"package":"array","version":"0.5.4.0"},{"package":"deepseq","version":"1.4.8.0"},{"package":"ghc-boot-th","version":"9.4.4"},{"package":"pretty","version":"1.1.3.6"},{"package":"template-haskell","version":"2.19.0.0"},{"package":"bytestring","version":"0.11.3.1"},{"package":"containers","version":"0.6.6"},{"package":"binary","version":"0.8.9.1"},{"package":"filepath","version":"1.4.2.2"},{"package":"time","version":"1.12.2"},{"package":"unix","version":"2.7.3"},{"package":"directory","version":"1.3.7.1"},{"package":"transformers","version":"0.5.6.2"},{"package":"mtl","version":"2.2.2"},{"package":"text","version":"2.0.1"},{"package":"parsec","version":"3.1.15.0"},{"package":"process","version":"1.6.16.0"},{"package":"stm","version":"2.5.1.0"},{"package":"exceptions","version":"0.10.5"}],"dependencies":[{"cabal_sha256":null,"flags":[],"package":"Cabal-syntax","revision":null,"source":"local","src_sha256":null,"version":"3.9.0.0"},{"cabal_sha256":null,"flags":[],"package":"Cabal","revision":null,"source":"local","src_sha256":null,"version":"3.9.0.0"},{"cabal_sha256":"db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e","flags":["-optimised-mixer"],"package":"splitmix","revision":2,"source":"hackage","src_sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","version":"0.1.0.4"},{"cabal_sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","flags":[],"package":"random","revision":0,"source":"hackage","src_sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","version":"1.2.1.1"},{"cabal_sha256":"02acedd7ac829b52756fe481a1d53294d8f5d42aaa56df560c62c6cec3587a14","flags":["+integer-gmp","-random-initial-seed"],"package":"hashable","revision":0,"source":"hackage","src_sha256":"1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8","version":"1.4.2.0"},{"cabal_sha256":"2b9409023536823233ce3134558565d01b3382e651fa54ac8cb8a99967e023c9","flags":["-bench"],"package":"async","revision":2,"source":"hackage","src_sha256":"484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725","version":"2.2.4"},{"cabal_sha256":"bc14969ea4adfec6eee20264decf4a07c4002b38b2aa802d58d86b1a2cf7b895","flags":["-old-bytestring","-old-time"],"package":"tar","revision":5,"source":"hackage","src_sha256":"b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de","version":"0.5.1.1"},{"cabal_sha256":"e3d78b13db9512aeb106e44a334ab42b7aa48d26c097299084084cb8be5c5568","flags":["-devel"],"package":"network","revision":0,"source":"hackage","src_sha256":"7f7620fef1a1af3d3d6747f510e73223a5c600e7d7fd9ace073d1222bdc63d85","version":"3.1.2.7"},{"cabal_sha256":"6ca77c4e80b4e4109e30549c269631a9cc295c8fc2431ce4123972a5f80f7bfc","flags":[],"package":"th-compat","revision":0,"source":"hackage","src_sha256":"d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8","version":"0.1.4"},{"cabal_sha256":"1fde59abf5d82a9666b4415bc2b2e9e33f6c1309074fda12d50410c7dbd95f3b","flags":[],"package":"network-uri","revision":0,"source":"hackage","src_sha256":"9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228","version":"2.6.4.2"},{"cabal_sha256":"b878d575c470bd1f72d37af6654d924ab2b9489d88de8a71bd74d9d5d726c013","flags":["-conduit10","+network-uri","-warn-as-error","-warp-tests"],"package":"HTTP","revision":1,"source":"hackage","src_sha256":"df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453","version":"4000.4.1"},{"cabal_sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","flags":[],"package":"base16-bytestring","revision":0,"source":"hackage","src_sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","version":"1.0.2.0"},{"cabal_sha256":"50ec0e229255d4c45cbdd568da011311b8887f304b931564886016f4984334d8","flags":[],"package":"base64-bytestring","revision":0,"source":"hackage","src_sha256":"fbf8ed30edde271eb605352021431d8f1b055f95a56af31fe2eacf6bdfdc49c9","version":"1.2.1.0"},{"cabal_sha256":"4d33a49cd383d50af090f1b888642d10116e43809f9da6023d9fc6f67d2656ee","flags":[],"package":"edit-distance","revision":1,"source":"hackage","src_sha256":"3e8885ee2f56ad4da940f043ae8f981ee2fe336b5e8e4ba3f7436cff4f526c4a","version":"0.2.2.1"},{"cabal_sha256":null,"flags":["-debug-conflict-sets","-debug-expensive-assertions","-debug-tracetree"],"package":"cabal-install-solver","revision":null,"source":"local","src_sha256":null,"version":"3.9.0.0"},{"cabal_sha256":"facd0c04925ef925ec05243471fd16055229fdf51f64db1a1049de0cc6c6dfc3","flags":["-exe","+use-cbits"],"package":"cryptohash-sha256","revision":1,"source":"hackage","src_sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","version":"0.11.102.1"},{"cabal_sha256":"ccce771562c49a2b29a52046ca68c62179e97e8fbeacdae32ca84a85445e8f42","flags":["-example"],"package":"echo","revision":0,"source":"hackage","src_sha256":"c9fe1bf2904825a65b667251ec644f197b71dc5c209d2d254be5de3d496b0e43","version":"0.1.4"},{"cabal_sha256":"885c9e2410e5d91a08b199897df0867fecedf818216d7329a2d43a512833dd63","flags":["+no-donna","+test-doctests","+test-hlint","+test-properties"],"package":"ed25519","revision":6,"source":"hackage","src_sha256":"d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d","version":"0.0.5.0"},{"cabal_sha256":"efd4c08c4df1ac3f423858a834c0e3b5b4909febda66a901d12a8e1d57bddaa8","flags":["+ofd-locking"],"package":"lukko","revision":3,"source":"hackage","src_sha256":"a80efb60cfa3dae18682c01980d76d5f7e413e191cd186992e1bf7388d48ab1f","version":"0.1.1.3"},{"cabal_sha256":"9adce39e4ca0b7a87d45df0a243134816c57059a08e28cff5469c98ae1f54dfc","flags":["-bundled-c-zlib","-non-blocking-ffi","-pkg-config"],"package":"zlib","revision":1,"source":"hackage","src_sha256":"9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da","version":"0.6.3.0"},{"cabal_sha256":"64fc60f3f4d02047c54956b6976c0e4fc72722891c6875ab10d95359bc00355a","flags":["+base48","+cabal-syntax","+lukko","-mtl21","-old-directory","+use-network-uri"],"package":"hackage-security","revision":0,"source":"hackage","src_sha256":"52ee0576971955571d846b8e6c09638f89f4f7881f4a95173e44ccc0d856a066","version":"0.6.2.3"},{"cabal_sha256":"4ff4425c710cddf440dfbac6cd52310bb6b23e17902390ff71c9fc7eaafc4fcc","flags":[],"package":"regex-base","revision":1,"source":"hackage","src_sha256":"7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1","version":"0.94.0.2"},{"cabal_sha256":"9dbba4b65a3bb6975d9740814be5593c6b2d2d6a0b3febc8ec940edb9a9bbdf4","flags":["-_regex-posix-clib"],"package":"regex-posix","revision":1,"source":"hackage","src_sha256":"c7827c391919227711e1cff0a762b1678fd8739f9c902fc183041ff34f59259c","version":"0.96.0.1"},{"cabal_sha256":"61e2d98ff634b8b4b3db467772420c0f9c79c2da9ddf3d2daeb2af2417f2c535","flags":[],"package":"resolv","revision":5,"source":"hackage","src_sha256":"81a2bafad484db123cf8d17a02d98bb388a127fd0f822fa022589468a0e64671","version":"0.1.2.0"},{"cabal_sha256":"6e9b1b233af80cc0aa17ea858d2641ba146fb11cbcc5970a52649e89d77282e2","flags":[],"package":"safe-exceptions","revision":0,"source":"hackage","src_sha256":"91ce28d8f8a6efd31788d4827ed5cdcb9a546ad4053a86c56f7947c66a30b5bf","version":"0.1.7.3"},{"cabal_sha256":null,"flags":["+lukko","+native-dns"],"package":"cabal-install","revision":null,"source":"local","src_sha256":null,"version":"3.9.0.0"}]}
diff --git a/bootstrap/src/Main.hs b/bootstrap/src/Main.hs
index c289851671986c7edecc75c40e2ef07ee761aad7..0ca636ea0207adfb6ed300eaddd69951609fa098 100644
--- a/bootstrap/src/Main.hs
+++ b/bootstrap/src/Main.hs
@@ -93,7 +93,7 @@ main2 meta plan = do
                         return
                             ( Hackage
                             , Just $ fromIntegral (I.riRevision relInfo)
-                            , P.sha256FromByteString $ I.getSHA256 $ I.riCabal relInfo
+                            , P.sha256FromByteString $ I.getSHA256 $ getHash relInfo
                             )
 
                     Nothing -> case P.uType unit of
@@ -117,6 +117,12 @@ main2 meta plan = do
         { resBuiltin      = builtin
         , resDependencies = deps
         }
+  where
+#if MIN_VERSION_cabal_install_parsers(0,6,0)
+    getHash = I.riCabalHash
+#else
+    getHash = I.riCabal
+#endif
 
 bfs :: P.PlanJson -> P.Unit -> IO [P.Unit]
 bfs plan unit0 = do
diff --git a/cabal-benchmarks/LICENSE b/cabal-benchmarks/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/cabal-benchmarks/LICENSE
+++ b/cabal-benchmarks/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/cabal-benchmarks/cabal-benchmarks.cabal b/cabal-benchmarks/cabal-benchmarks.cabal
index 86d2a2e1456643a7753e41d21fbcec88c06c4603..4e91191832178eb9f289ead46c28f5c2e9f452a8 100644
--- a/cabal-benchmarks/cabal-benchmarks.cabal
+++ b/cabal-benchmarks/cabal-benchmarks.cabal
@@ -1,7 +1,7 @@
 cabal-version:      2.2
 name:               cabal-benchmarks
 version:            3
-copyright:          2003-2022, Cabal Development Team (see AUTHORS file)
+copyright:          2003-2023, Cabal Development Team (see AUTHORS file)
 license:            BSD-3-Clause
 license-file:       LICENSE
 author:             Cabal Development Team <cabal-devel@haskell.org>
diff --git a/cabal-dev-scripts/LICENSE b/cabal-dev-scripts/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/cabal-dev-scripts/LICENSE
+++ b/cabal-dev-scripts/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/cabal-install-solver/LICENSE b/cabal-install-solver/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/cabal-install-solver/LICENSE
+++ b/cabal-install-solver/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/cabal-install-solver/cabal-install-solver.cabal b/cabal-install-solver/cabal-install-solver.cabal
index 1b03d228a688c5f3995675e65b3996265b7246d1..28d962ad2e1eac0873812ffa3fef33ea71190b6e 100644
--- a/cabal-install-solver/cabal-install-solver.cabal
+++ b/cabal-install-solver/cabal-install-solver.cabal
@@ -11,7 +11,7 @@ license:       BSD-3-Clause
 license-file:  LICENSE
 author:        Cabal Development Team (see AUTHORS file)
 maintainer:    Cabal Development Team <cabal-devel@haskell.org>
-copyright:     2003-2022, Cabal Development Team
+copyright:     2003-2023, Cabal Development Team
 category:      Distribution
 build-type:    Simple
 Extra-Source-Files:
diff --git a/cabal-install/LICENSE b/cabal-install/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/cabal-install/LICENSE
+++ b/cabal-install/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal
index 747d353276b3ffdc42339b4a657e76bd09abfa1b..15e813494b7fe226711fef7904a9781e350c70f6 100644
--- a/cabal-install/cabal-install.cabal
+++ b/cabal-install/cabal-install.cabal
@@ -13,7 +13,7 @@ License:            BSD-3-Clause
 License-File:       LICENSE
 Author:             Cabal Development Team (see AUTHORS file)
 Maintainer:         Cabal Development Team <cabal-devel@haskell.org>
-Copyright:          2003-2022, Cabal Development Team
+Copyright:          2003-2023, Cabal Development Team
 Category:           Distribution
 Build-type:         Simple
 Extra-Source-Files:
diff --git a/cabal-install/src/Distribution/Client/Configure.hs b/cabal-install/src/Distribution/Client/Configure.hs
index 554785ff847fe8aea35e13859a929cde04d9b6b1..2cbe16096a456e7d1c89be2fae4fea793356f05b 100644
--- a/cabal-install/src/Distribution/Client/Configure.hs
+++ b/cabal-install/src/Distribution/Client/Configure.hs
@@ -154,9 +154,6 @@ configure verbosity packageDBs repoCtxt comp platform progdb
         (fromFlagOrDefault
            (useDistPref defaultSetupScriptOptions)
            (configDistPref configFlags))
-        (fromFlagOrDefault
-            (setupConfigDynamic defaultSetupScriptOptions)
-            (configDynExe configFlags))
         (chooseCabalVersion
            configExFlags
            (flagToMaybe (configCabalVersion configExFlags)))
@@ -170,7 +167,6 @@ configureSetupScript :: PackageDBStack
                      -> Platform
                      -> ProgramDb
                      -> FilePath
-                     -> Bool
                      -> VersionRange
                      -> Maybe Lock
                      -> Bool
@@ -182,7 +178,6 @@ configureSetupScript packageDBs
                      platform
                      progdb
                      distPref
-                     dynExe
                      cabalVersion
                      lock
                      forceExternal
@@ -214,7 +209,6 @@ configureSetupScript packageDBs
     , useDependenciesExclusive = not defaultSetupDeps && isJust explicitSetupDeps
     , useVersionMacros         = not defaultSetupDeps && isJust explicitSetupDeps
     , isInteractive            = False
-    , setupConfigDynamic       = dynExe
     }
   where
     -- When we are compiling a legacy setup script without an explicit
diff --git a/cabal-install/src/Distribution/Client/FetchUtils.hs b/cabal-install/src/Distribution/Client/FetchUtils.hs
index f14ef418bd24d85c8339c090eeb82dce47c7603c..0a493d493f70015eb12695125db5dc437f199c67 100644
--- a/cabal-install/src/Distribution/Client/FetchUtils.hs
+++ b/cabal-install/src/Distribution/Client/FetchUtils.hs
@@ -134,7 +134,7 @@ verifyFetchedTarball verbosity repoCtxt repo pkgid =
    in handleError $ do
         exists <- doesFileExist file
         if not exists
-          then return False
+          then return True -- if the file does not exist, it vacuously passes validation, since it will be downloaded as necessary with what we will then check is a valid hash.
           else case repo of
             -- a secure repo has hashes we can compare against to confirm this is the correct file.
                 RepoSecure{} ->
diff --git a/cabal-install/src/Distribution/Client/Init/Interactive/Command.hs b/cabal-install/src/Distribution/Client/Init/Interactive/Command.hs
index 8bef0f115debbabe847dee8d42c9f40be9833ef5..d2073b399f93774aee85a7f2e512c9d028d6fba6 100644
--- a/cabal-install/src/Distribution/Client/Init/Interactive/Command.hs
+++ b/cabal-install/src/Distribution/Client/Init/Interactive/Command.hs
@@ -336,7 +336,7 @@ licensePrompt flags = getLicense flags $ do
     let csv = fromFlagOrDefault defaultCabalVersion (cabalVersion flags)
     l <- promptList "Please choose a license"
       (licenses csv)
-      MandatoryPrompt
+      (DefaultPrompt "BSD-3-Clause")
       Nothing
       True
 
diff --git a/cabal-install/src/Distribution/Client/Install.hs b/cabal-install/src/Distribution/Client/Install.hs
index a53c7ded1aa046c1273aa3bf8ebf6d6259eb0167..2baa8af9e49c01f70fe834f5819209bcf11f42d7 100644
--- a/cabal-install/src/Distribution/Client/Install.hs
+++ b/cabal-install/src/Distribution/Client/Install.hs
@@ -1059,7 +1059,6 @@ performInstallations verbosity
         platform
         progdb
         distPref
-        (fromFlagOrDefault (setupConfigDynamic defaultSetupScriptOptions) $ configDynExe configFlags)
         (chooseCabalVersion configExFlags (libVersion miscOptions))
         (Just lock)
         parallelInstall
diff --git a/cabal-install/src/Distribution/Client/ProjectPlanOutput.hs b/cabal-install/src/Distribution/Client/ProjectPlanOutput.hs
index fde7ea8b97a99a30aa5d319bf45be93eac34399a..c9243c310e0c53d846fa015d4d44c8aa37327ead 100644
--- a/cabal-install/src/Distribution/Client/ProjectPlanOutput.hs
+++ b/cabal-install/src/Distribution/Client/ProjectPlanOutput.hs
@@ -272,9 +272,9 @@ encodePlanAsJson distDirLayout elaboratedInstallPlan elaboratedSharedConfig =
     comp2str = prettyShow
 
     style2str :: Bool -> BuildStyle -> String
-    style2str _     BuildAndInstall  = "global"
     style2str True  _                = "local"
     style2str False BuildInplaceOnly = "inplace"
+    style2str False BuildAndInstall  = "global"
 
     jdisplay :: Pretty a => a -> J.Value
     jdisplay = J.String . prettyShow
diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs
index 4ec141037b7886af566e4e9b5c440e03e43f521a..8d8947ae8a81867ca3d48c2c9f8d991860bb9d07 100644
--- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs
+++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs
@@ -672,7 +672,6 @@ rebuildInstallPlan verbosity
                          projectConfigAllPackages,
                          projectConfigLocalPackages,
                          projectConfigSpecificPackage,
-                         projectPackagesNamed,
                          projectConfigBuildOnly
                        }
                        (compiler, platform, progdb) pkgConfigDB
@@ -698,7 +697,6 @@ rebuildInstallPlan verbosity
                 localPackages
                 sourcePackageHashes
                 installDirs
-                projectPackagesNamed
                 projectConfigShared
                 projectConfigAllPackages
                 projectConfigLocalPackages
@@ -1363,7 +1361,6 @@ elaborateInstallPlan
   -> [PackageSpecifier (SourcePackage (PackageLocation loc))]
   -> Map PackageId PackageSourceHash
   -> InstallDirs.InstallDirTemplates
-  -> [PackageVersionConstraint]
   -> ProjectConfigShared
   -> PackageConfig
   -> PackageConfig
@@ -1375,7 +1372,6 @@ elaborateInstallPlan verbosity platform compiler compilerprogdb pkgConfigDB
                      solverPlan localPackages
                      sourcePackageHashes
                      defaultInstallDirs
-                     extraPackages
                      sharedPackageConfig
                      allPackagesConfig
                      localPackagesConfig
@@ -2046,21 +2042,15 @@ elaborateInstallPlan verbosity platform compiler compilerprogdb pkgConfigDB
       $ map packageId
       $ SolverInstallPlan.reverseDependencyClosure
           solverPlan
-          (map PlannedId (Set.toList pkgsInplaceToProject))
+          (map PlannedId (Set.toList pkgsLocalToProject))
 
     isLocalToProject :: Package pkg => pkg -> Bool
     isLocalToProject pkg = Set.member (packageId pkg)
                                       pkgsLocalToProject
 
-    pkgsInplaceToProject :: Set PackageId
-    pkgsInplaceToProject =
-        Set.fromList (catMaybes (map shouldBeLocal localPackages))
-        --TODO: localPackages is a misnomer, it's all project packages
-        -- here is where we decide which ones will be local!
-
     pkgsLocalToProject :: Set PackageId
     pkgsLocalToProject =
-        Set.fromList (catMaybes (map (isInLocal extraPackages) localPackages))
+        Set.fromList (catMaybes (map shouldBeLocal localPackages))
         --TODO: localPackages is a misnomer, it's all project packages
         -- here is where we decide which ones will be local!
 
@@ -2129,28 +2119,6 @@ shouldBeLocal (SpecificSourcePackage pkg) = case srcpkgSource pkg of
     LocalUnpackedPackage _ -> Just (packageId pkg)
     _                      -> Nothing
 
--- Used to determine which packages are affected by local package configuration
--- flags like ‘--enable-shared --enable-executable-dynamic --disable-library-vanilla’.
-isInLocal :: [PackageVersionConstraint] -> PackageSpecifier (SourcePackage (PackageLocation loc)) -> Maybe PackageId
-isInLocal _              NamedPackage{}              = Nothing
-isInLocal _extraPackages (SpecificSourcePackage pkg) = case srcpkgSource pkg of
-    LocalUnpackedPackage _ -> Just (packageId pkg)
-    -- LocalTarballPackage is matched here too, because otherwise ‘sdistize’
-    -- produces for ‘localPackages’ in the ‘ProjectBaseContext’ a
-    -- LocalTarballPackage, and ‘shouldBeLocal’ will make flags like
-    -- ‘--disable-library-vanilla’ have no effect for a typical
-    -- ‘cabal install --lib --enable-shared enable-executable-dynamic --disable-library-vanilla’,
-    -- as these flags would apply to local packages, but the sdist would
-    -- erroneously not get categorized as a local package, so the flags would be
-    -- ignored and produce a package with an unchanged hash.
-    LocalTarballPackage  _ -> Just (packageId pkg)
-    -- TODO: the docs say ‘extra-packages’ is implemented in cabal project
-    -- files.  We can fix that here by checking that the version range matches.
-    --RemoteTarballPackage    _ -> _
-    --RepoTarballPackage      _ -> _
-    --RemoteSourceRepoPackage _ -> _
-    _                      -> Nothing
-
 -- | Given a 'ElaboratedPlanPackage', report if it matches a 'ComponentName'.
 matchPlanPkg :: (ComponentName -> Bool) -> ElaboratedPlanPackage -> Bool
 matchPlanPkg p = InstallPlan.foldPlanPackage (p . ipiComponentName) (matchElabPkg p)
@@ -3430,8 +3398,7 @@ setupHsScriptOptions (ReadyPackage elab@ElaboratedConfiguredPackage{..})
       useWin32CleanHack        = False,   --TODO: [required eventually]
       forceExternalSetupMethod = isParallelBuild,
       setupCacheLock           = Just cacheLock,
-      isInteractive            = False,
-      setupConfigDynamic       = elabDynExe
+      isInteractive            = False
     }
 
 
diff --git a/cabal-install/src/Distribution/Client/SetupWrapper.hs b/cabal-install/src/Distribution/Client/SetupWrapper.hs
index 239e1a37908f9d3d36d635663f882fb432fb6497..e4885ed07c639639200aeb2a805145725f7cbdf2 100644
--- a/cabal-install/src/Distribution/Client/SetupWrapper.hs
+++ b/cabal-install/src/Distribution/Client/SetupWrapper.hs
@@ -71,7 +71,7 @@ import Distribution.Simple.BuildPaths
 import Distribution.Simple.Command
          ( CommandUI(..), commandShowOptions )
 import Distribution.Simple.Program.GHC
-         ( GhcMode(..), GhcDynLinkMode(..), GhcOptions(..), renderGhcOptions )
+         ( GhcMode(..), GhcOptions(..), renderGhcOptions )
 import qualified Distribution.Simple.PackageIndex as PackageIndex
 import Distribution.Simple.PackageIndex (InstalledPackageIndex)
 import qualified Distribution.InstalledPackageInfo as IPI
@@ -249,12 +249,7 @@ data SetupScriptOptions = SetupScriptOptions {
     -- | Is the task we are going to run an interactive foreground task,
     -- or an non-interactive background task? Based on this flag we
     -- decide whether or not to delegate ctrl+c to the spawned task
-    isInteractive            :: Bool,
-
-    -- Also track build output artifact configuration.
-
-    -- | Pass `-dynamic` to `ghc` for dynamic rather than static linking.
-    setupConfigDynamic       :: Bool
+    isInteractive            :: Bool
   }
 
 defaultSetupScriptOptions :: SetupScriptOptions
@@ -277,8 +272,7 @@ defaultSetupScriptOptions = SetupScriptOptions {
     useWin32CleanHack        = False,
     forceExternalSetupMethod = False,
     setupCacheLock           = Nothing,
-    isInteractive            = False,
-    setupConfigDynamic       = False
+    isInteractive            = False
   }
 
 workingDir :: SetupScriptOptions -> FilePath
@@ -846,9 +840,6 @@ getExternalSetupMethod verbosity options pkg bt = do
               -- --ghc-option=-v instead!
               ghcOptVerbosity       = Flag (min verbosity normal)
             , ghcOptMode            = Flag GhcModeMake
-            , ghcOptDynLinkMode     = case setupConfigDynamic options'' of
-                                      True  -> Flag GhcDynamicOnly
-                                      False -> Flag GhcStaticOnly
             , ghcOptInputFiles      = toNubListR [setupHs]
             , ghcOptOutputFile      = Flag setupProgFile
             , ghcOptObjDir          = Flag setupDir
diff --git a/cabal-install/tests/IntegrationTests2.hs b/cabal-install/tests/IntegrationTests2.hs
index 6b81643fe0b5a138a8336c9979d2b0913acfe51e..90d272aacaed1a6782d09af9e0c971cea8e651e6 100644
--- a/cabal-install/tests/IntegrationTests2.hs
+++ b/cabal-install/tests/IntegrationTests2.hs
@@ -1591,7 +1591,7 @@ testProgramOptionsLocal config0 = do
                 (Just [ghcFlag])
                 (getProgArgs localPackages "q")
     assertEqual "p"
-                (Just [ghcFlag])
+                Nothing
                 (getProgArgs localPackages "p")
   where
     testdir = "regression/program-options"
diff --git a/cabal-testsuite/LICENSE b/cabal-testsuite/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/cabal-testsuite/LICENSE
+++ b/cabal-testsuite/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/cabal-testsuite/PackageTests/Init/init-interactive.test.hs b/cabal-testsuite/PackageTests/Init/init-interactive.test.hs
index 95ff4b3aaee2e59dd69464aeedeef0ae8be483bd..86bda8b028af090960960c81ce86a1b7a42a91bc 100644
--- a/cabal-testsuite/PackageTests/Init/init-interactive.test.hs
+++ b/cabal-testsuite/PackageTests/Init/init-interactive.test.hs
@@ -6,7 +6,7 @@ main = cabalTest $
 
     buildOut <- withDirectory cwd $ do
       cabalWithStdin "init" ["-i"]
-        "2\n\n5\n\n\n2\n\n\n\n\n\n\n\n\n\n"
+        "2\n\n5\n\n\n\n\n\n\n\n\n\n\n\n\n"
       setup "configure" []
       setup' "build" ["app"]
 
diff --git a/cabal-testsuite/PackageTests/LinkerOptions/NonignoredConfigs/cabal.test.hs b/cabal-testsuite/PackageTests/LinkerOptions/NonignoredConfigs/cabal.test.hs
index 9da924366f4b97d4c3c073c9807bc1ad6c9058ba..2e8dac23a20c84314ba4a4b42bffe342ff79f1dc 100644
--- a/cabal-testsuite/PackageTests/LinkerOptions/NonignoredConfigs/cabal.test.hs
+++ b/cabal-testsuite/PackageTests/LinkerOptions/NonignoredConfigs/cabal.test.hs
@@ -50,7 +50,7 @@ linkConfigFlags Dynamic =
 lrun :: [Linking]
 lrun = [Static, Dynamic, Static, Dynamic]
 
-main = cabalTest $ do
+main = cabalTest . expectBroken 8744 $ do
     -- Skip if on Windows, since my default Chocolatey Windows setup (and the CI
     -- server setup at the time, presumably) lacks support for dynamic builds
     -- since the base package appears to be static only, lacking e.g. ‘.dyn_o’
diff --git a/cabal-testsuite/README.md b/cabal-testsuite/README.md
index 4b6643eec56c7b0e9b25d1064406ca08ceea79c9..0bf85b760c103cbdf44d67b8e97b9fff45c9573c 100644
--- a/cabal-testsuite/README.md
+++ b/cabal-testsuite/README.md
@@ -25,6 +25,28 @@ There are a few useful flags:
   the autodetection doesn't work correctly (which may be the
   case for old versions of GHC.)
 
+doctests
+========
+
+You need to install the doctest tool. Make sure it's compiled with your current
+GHC, and don't forget to reinstall it every time you switch GHC version:
+
+``` shellsession
+cabal install doctest --overwrite-policy=always --ignore-project
+```
+
+After that you can run doctests for a component of your choice via the following command:
+
+``` shellsession
+cabal repl --with-ghc=doctest --build-depends=QuickCheck --build-depends=template-haskell --repl-options="-w" --project-file="cabal.project.validate" Cabal-syntax
+```
+
+In this example we have run doctests in `Cabal-syntax`. Notice, that some
+components have broken doctests
+([#8734](https://github.com/haskell/cabal/issues/8734));
+our CI currently checks that `Cabal-syntax` and `Cabal` doctests pass via
+`make doctest-install && make doctest` (you can use this make-based workflow too).
+
 How to write
 ------------
 
diff --git a/cabal-testsuite/cabal-testsuite.cabal b/cabal-testsuite/cabal-testsuite.cabal
index e78435b3ec9616801cb3ff7a85536951fe6b8dbd..849ca565d6a27a81538e3a63d4f0f8986b572ec7 100644
--- a/cabal-testsuite/cabal-testsuite.cabal
+++ b/cabal-testsuite/cabal-testsuite.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 name:          cabal-testsuite
 version:       3
-copyright:     2003-2022, Cabal Development Team (see AUTHORS file)
+copyright:     2003-2023, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
 author:        Cabal Development Team <cabal-devel@haskell.org>
diff --git a/cabal-testsuite/src/Test/Cabal/Monad.hs b/cabal-testsuite/src/Test/Cabal/Monad.hs
index 078351723c03330dd52c9f4b8949c2c8b510d06d..93207511ea34046e09189f8be3dc2cf4db57669b 100644
--- a/cabal-testsuite/src/Test/Cabal/Monad.hs
+++ b/cabal-testsuite/src/Test/Cabal/Monad.hs
@@ -336,7 +336,6 @@ runTestM mode m = withSystemTempDirectory "cabal-testsuite" $ \tmp_dir -> do
                     testPlan = Nothing,
                     testRecordDefaultMode = DoNotRecord,
                     testRecordUserMode = Nothing,
-                    testRecordNormalizer = id,
                     testSourceCopyRelativeDir = "source"
                 }
     let go = do cleanup
@@ -527,12 +526,11 @@ data TestEnv = TestEnv
     , testRecordDefaultMode :: RecordMode
     -- | User explicitly set record mode.  Not implemented ATM.
     , testRecordUserMode :: Maybe RecordMode
-    -- | Function to normalize recorded output
-    , testRecordNormalizer :: String -> String
     -- | Name of the subdirectory we copied the test's sources to,
     -- relative to 'testSourceDir'
     , testSourceCopyRelativeDir :: FilePath
     }
+    deriving Show
 
 testRecordMode :: TestEnv -> RecordMode
 testRecordMode env = fromMaybe (testRecordDefaultMode env) (testRecordUserMode env)
diff --git a/cabal-testsuite/src/Test/Cabal/Plan.hs b/cabal-testsuite/src/Test/Cabal/Plan.hs
index 0665de9a9b9b21b1222ea424b4aa7eecd883bf3c..274f11f83a61e75d5f95fc21669669441ab1d66c 100644
--- a/cabal-testsuite/src/Test/Cabal/Plan.hs
+++ b/cabal-testsuite/src/Test/Cabal/Plan.hs
@@ -19,11 +19,13 @@ import Control.Monad
 
 -- TODO: index this
 data Plan = Plan { planInstallPlan :: [InstallItem] }
+  deriving Show
 
 data InstallItem
     = APreExisting
     | AConfiguredGlobal ConfiguredGlobal
     | AConfiguredInplace ConfiguredInplace
+  deriving Show
 
 -- local or inplace package
 data ConfiguredInplace = ConfiguredInplace
@@ -31,11 +33,13 @@ data ConfiguredInplace = ConfiguredInplace
     , configuredInplaceBuildInfo     :: Maybe FilePath
     , configuredInplacePackageName   :: PackageName
     , configuredInplaceComponentName :: Maybe ComponentName }
+  deriving Show
 
 data ConfiguredGlobal = ConfiguredGlobal
     { configuredGlobalBinFile       :: Maybe FilePath
     , configuredGlobalPackageName   :: PackageName
     , configuredGlobalComponentName :: Maybe ComponentName }
+  deriving Show
 
 instance FromJSON Plan where
     parseJSON (Object v) = fmap Plan (v .: "install-plan")
diff --git a/cabal-testsuite/src/Test/Cabal/Prelude.hs b/cabal-testsuite/src/Test/Cabal/Prelude.hs
index 4ad7b68d1162b9b73a49a5c04ffbc727e9b60ee5..10a3ac287ef0d6219dd375261d889589141cb7ae 100644
--- a/cabal-testsuite/src/Test/Cabal/Prelude.hs
+++ b/cabal-testsuite/src/Test/Cabal/Prelude.hs
@@ -679,7 +679,7 @@ recordHeader args = do
     env <- getTestEnv
     let mode = testRecordMode env
         str_header = "# " ++ intercalate " " args ++ "\n"
-        header = C.pack (testRecordNormalizer env str_header)
+        header = C.pack str_header
     case mode of
         DoNotRecord -> return ()
         _ -> do
@@ -696,7 +696,7 @@ recordLog res = do
     liftIO $ C.appendFile (testWorkDir env </> "test.log")
                          (C.pack $ "+ " ++ resultCommand res ++ "\n"
                             ++ resultOutput res ++ "\n\n")
-    liftIO . C.appendFile (testActualFile env) . C.pack . testRecordNormalizer env $
+    liftIO . C.appendFile (testActualFile env) . C.pack $
         case mode of
             RecordAll    -> unlines (lines (resultOutput res))
             RecordMarked -> getMarkedOutput (resultOutput res)
@@ -787,10 +787,6 @@ recordMode mode = withReaderT (\env -> env {
     testRecordUserMode = Just mode
     })
 
-recordNormalizer :: (String -> String) -> TestM a -> TestM a
-recordNormalizer f =
-    withReaderT (\env -> env { testRecordNormalizer = testRecordNormalizer env . f })
-
 assertOutputContains :: MonadIO m => WithCallStack (String -> Result -> m ())
 assertOutputContains needle result =
     withFrozenCallStack $
diff --git a/cabal-testsuite/src/Test/Cabal/Script.hs b/cabal-testsuite/src/Test/Cabal/Script.hs
index d509e6efe4a7558ca1a2505d615deeb6d93703a8..a7ce082a97b0cd877a3fb5c52a9214c4799757e0 100644
--- a/cabal-testsuite/src/Test/Cabal/Script.hs
+++ b/cabal-testsuite/src/Test/Cabal/Script.hs
@@ -37,6 +37,7 @@ data ScriptEnv = ScriptEnv
         , runnerPackages        :: [(OpenUnitId, ModuleRenaming)]
         , runnerWithSharedLib   :: Bool
         }
+    deriving Show
 
 {-
 
diff --git a/changelog.d/issue-8757 b/changelog.d/issue-8757
new file mode 100644
index 0000000000000000000000000000000000000000..5b8512c5763baee1b93bea1233d385e4ad0655d9
--- /dev/null
+++ b/changelog.d/issue-8757
@@ -0,0 +1,4 @@
+synopsis: cabal init: suggest BSD-3 as default license
+packages: cabal-install
+prs: #8764
+issues: #8757
diff --git a/changelog.d/pr-8623 b/changelog.d/pr-8623
deleted file mode 100644
index 29c9c3bb2c5a85b65c61413b982db933be62c7b6..0000000000000000000000000000000000000000
--- a/changelog.d/pr-8623
+++ /dev/null
@@ -1,7 +0,0 @@
-synopsis: Fix project-local flags being ignored
-packages: cabal-install
-prs: #8623
-description: {
-    Fix some cases of configuration flags being dropped, e.g. with `v2-install`
-    and `--enable-shared --enable-executable-dynamic --disable-library-vanilla`.
-}
diff --git a/doc/conf.py b/doc/conf.py
index 80bd6fba55403df56dd280b0caf27e28240a76fe..f540d7191f22066842023be18d758bf69891364d 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -39,7 +39,7 @@ extlinks = {
 
 # General information about the project.
 project = u'Cabal'
-copyright = u'2003-2022, Cabal Team'
+copyright = u'2003-2023, Cabal Team'
 # N.B. version comes from ghc_config
 release = version  # The full version, including alpha/beta/rc tags.
 
diff --git a/doc/nix-local-build.rst b/doc/nix-local-build.rst
index 70ebd28359dd834823c11d94585f8af6def0df15..207a65a3770a0362de20803ad0c2970e24a485c6 100644
--- a/doc/nix-local-build.rst
+++ b/doc/nix-local-build.rst
@@ -268,7 +268,7 @@ this folder (the most important two are first):
     ``cabal sdist --list-only``. Thus if you do not list all your
     source files in a Cabal file, Cabal may fail to recompile when you
     edit them.
-``config`` (same format as ``cabal.project``)
+``config`` (binary)
     The full project configuration, merged from ``cabal.project`` (and
     friends) as well as the command line arguments.
 ``compiler`` (binary)
diff --git a/solver-benchmarks/LICENSE b/solver-benchmarks/LICENSE
index 0a4969ac8269bd5f0d13cb011040195627a623c0..a3a25c7d9e4d78349b97cb077d9e1337122deacb 100644
--- a/solver-benchmarks/LICENSE
+++ b/solver-benchmarks/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003-2022, Cabal Development Team.
+Copyright (c) 2003-2023, Cabal Development Team.
 See the AUTHORS file for the full list of copyright holders.
 
 See */LICENSE for the copyright holders of the subcomponents.
diff --git a/solver-benchmarks/solver-benchmarks.cabal b/solver-benchmarks/solver-benchmarks.cabal
index a1c974a6cb832bddcad04bfbff5c983fef14a808..26517503b76fe1e6d271eb32e028d9d5f9f657c9 100644
--- a/solver-benchmarks/solver-benchmarks.cabal
+++ b/solver-benchmarks/solver-benchmarks.cabal
@@ -1,7 +1,7 @@
 cabal-version:  2.2
 name:          solver-benchmarks
 version:       3
-copyright:     2003-2022, Cabal Development Team (see AUTHORS file)
+copyright:     2003-2023, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
 author:        Cabal Development Team <cabal-devel@haskell.org>