diff --git a/Cabal.cabal b/Cabal.cabal
--- a/Cabal.cabal
+++ b/Cabal.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name:          Cabal
-version:       3.6.2.0
+version:       3.6.3.0
 copyright:     2003-2021, Cabal Development Team (see AUTHORS file)
 license:       BSD3
 license-file:  LICENSE
@@ -46,7 +46,7 @@
     filepath   >= 1.3.0.1  && < 1.5,
     pretty     >= 1.1.1    && < 1.2,
     process    >= 1.1.0.2  && < 1.7,
-    time       >= 1.4.0.1  && < 1.12
+    time       >= 1.4.0.1  && < 1.13
 
   if flag(bundled-binary-generic)
     build-depends: binary >= 0.5.1.1 && < 0.7
@@ -68,7 +68,7 @@
   if !impl(ghc >= 8.0)
     -- at least one of lib:Cabal's dependency (i.e. `parsec`)
     -- already depends on `fail` and `semigroups` transitively
-    build-depends: fail == 4.9.*, semigroups >= 0.18.3 && < 0.20
+    build-depends: fail == 4.9.*, semigroups >= 0.18.3 && < 0.21
 
   if !impl(ghc >= 7.10)
     build-depends: void >= 0.7.3 && < 0.8
@@ -269,7 +269,7 @@
     -- See also https://github.com/ekmett/transformers-compat/issues/35
     transformers (>= 0.3      && < 0.4) || (>=0.4.1.0 && <0.6),
     mtl           >= 2.1      && < 2.3,
-    text          >= 1.2.3.0  && < 1.3,
+    text         (>= 1.2.3.0  && < 1.3) || (>= 2.0 && < 2.1),
     parsec        >= 3.1.13.0 && < 3.2
   exposed-modules:
     Distribution.Compat.Parsing
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,6 @@
+# 3.6.3.0 March 2022
+  * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.6.3.0.md
+
 # 3.6.2.0 [Emily Pillmore](mailgo:emilypi@cohomolo.gy) October 2021
   * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.6.2.0.md
 
diff --git a/src/Distribution/Compat/Process.hs b/src/Distribution/Compat/Process.hs
--- a/src/Distribution/Compat/Process.hs
+++ b/src/Distribution/Compat/Process.hs
@@ -18,23 +18,44 @@
 import           System.Process (waitForProcess)
 #endif
 
+#if defined(mingw32_HOST_OS) && MIN_VERSION_process(1,6,9)
+import           System.IO.Unsafe (unsafePerformIO)
+import           System.Win32.Info.Version (dwMajorVersion, dwMinorVersion, getVersionEx)
+#endif
+
 -------------------------------------------------------------------------------
 -- enableProcessJobs
 -------------------------------------------------------------------------------
 
+#if defined(mingw32_HOST_OS) && MIN_VERSION_process(1,6,9)
+-- This exception, needed to support Windows 7, could be removed when
+-- the lowest GHC version cabal supports is a GHC that doesn’t support
+-- Windows 7 any more.
+{-# NOINLINE isWindows8OrLater #-}
+isWindows8OrLater :: Bool
+isWindows8OrLater = unsafePerformIO $ do
+  v <- getVersionEx
+  pure $ (dwMajorVersion v, dwMinorVersion v) >= (6, 2)
+#endif
+
 -- | Enable process jobs to ensure accurate determination of process completion
 -- in the presence of @exec(3)@ on Windows.
 --
 -- Unfortunately the process job support is badly broken in @process@ releases
 -- prior to 1.6.9, so we disable it in these versions, despite the fact that
--- this means we may see sporatic build failures without jobs.
+-- this means we may see sporadic build failures without jobs.
+--
+-- On Windows 7 or before the jobs are disabled due to the fact that
+-- processes on these systems can only have one job. This prevents
+-- spawned process from assigning jobs to its own children. Suppose
+-- processs A spawns process B. The B process has a job assigned (call
+-- it J1) and when it tries to spawn a new process C the C
+-- automatically inherits the job. But at it also tries to assign a
+-- new job J2 to C since it doesn’t have access J1. This fails on
+-- Windows 7 or before.
 enableProcessJobs :: CreateProcess -> CreateProcess
-#ifdef MIN_VERSION_process
-#if MIN_VERSION_process(1,6,9)
-enableProcessJobs cp = cp {Process.use_process_jobs = True}
-#else
-enableProcessJobs cp = cp
-#endif
+#if defined(mingw32_HOST_OS) && MIN_VERSION_process(1,6,9)
+enableProcessJobs cp = cp {Process.use_process_jobs = isWindows8OrLater}
 #else
 enableProcessJobs cp = cp
 #endif
