diff --git a/Cabal-syntax.cabal b/Cabal-syntax.cabal
--- a/Cabal-syntax.cabal
+++ b/Cabal-syntax.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name:          Cabal-syntax
-version:       3.12.0.0
+version:       3.12.1.0
 copyright:     2003-2024, Cabal Development Team (see AUTHORS file)
 license:       BSD-3-Clause
 license-file:  LICENSE
@@ -29,7 +29,7 @@
 
   build-depends:
     array      >= 0.4.0.1  && < 0.6,
-    base       >= 4.9      && < 5,
+    base       >= 4.11     && < 5,
     binary     >= 0.7      && < 0.9,
     bytestring >= 0.10.0.0 && < 0.13,
     containers >= 0.5.0.0  && < 0.8,
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,1 +1,1 @@
-Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.0.0.md
+Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.1.0.md
diff --git a/src/Distribution/Compiler.hs b/src/Distribution/Compiler.hs
--- a/src/Distribution/Compiler.hs
+++ b/src/Distribution/Compiler.hs
@@ -75,6 +75,7 @@
   | LHC
   | UHC
   | Eta
+  | MHS -- MicroHS, see https://github.com/augustss/MicroHs
   | HaskellSuite String -- string is the id of the actual compiler
   | OtherCompiler String
   deriving (Generic, Show, Read, Eq, Ord, Typeable, Data)
@@ -85,7 +86,7 @@
 
 knownCompilerFlavors :: [CompilerFlavor]
 knownCompilerFlavors =
-  [GHC, GHCJS, NHC, YHC, Hugs, HBC, Helium, JHC, LHC, UHC, Eta]
+  [GHC, GHCJS, NHC, YHC, Hugs, HBC, Helium, JHC, LHC, UHC, Eta, MHS]
 
 instance Pretty CompilerFlavor where
   pretty (OtherCompiler name) = Disp.text name
diff --git a/src/Distribution/PackageDescription/Parsec.hs b/src/Distribution/PackageDescription/Parsec.hs
--- a/src/Distribution/PackageDescription/Parsec.hs
+++ b/src/Distribution/PackageDescription/Parsec.hs
@@ -88,7 +88,10 @@
       Just csv -> return (Just csv)
       Nothing ->
         parseFatalFailure zeroPos $
-          "Unsupported cabal-version " ++ prettyShow v ++ ". See https://github.com/haskell/cabal/issues/4899."
+          "Unsupported cabal format version in cabal-version field: "
+            ++ prettyShow v
+            ++ ".\n"
+            ++ cabalFormatVersionsDesc
     _ -> pure Nothing
 
   case readFields' bs'' of
@@ -175,8 +178,8 @@
         -- if it were at the beginning, scanner would found it
         when (v >= CabalSpecV2_2) $
           parseFailure pos $
-            "cabal-version should be at the beginning of the file starting with spec version 2.2. "
-              ++ "See https://github.com/haskell/cabal/issues/4899"
+            "cabal-version should be at the beginning of the file starting with spec version 2.2.\n"
+              ++ cabalFormatVersionsDesc
 
         return v
 
@@ -233,6 +236,10 @@
               ++ prettyShow (SpecVersion (specVersion pkg))
               ++ "' must use section syntax. See the Cabal user guide for details."
     maybeWarnCabalVersion _ _ = return ()
+
+-- See #4899
+cabalFormatVersionsDesc :: String
+cabalFormatVersionsDesc = "Current cabal-version values are listed at https://cabal.readthedocs.io/en/stable/file-format-changelog.html."
 
 goSections :: CabalSpecVersion -> [Field Position] -> SectionParser ()
 goSections specVer = traverse_ process
