diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## MMark 0.0.7.5
+
+* The test suite now passes with `modern-uri-0.3.4.3`.
+
 ## MMark 0.0.7.4
 
 * The test suite has been fixed again and for good.
diff --git a/mmark.cabal b/mmark.cabal
--- a/mmark.cabal
+++ b/mmark.cabal
@@ -1,11 +1,11 @@
-cabal-version:   1.18
+cabal-version:   2.4
 name:            mmark
-version:         0.0.7.4
-license:         BSD3
+version:         0.0.7.5
+license:         BSD-3-Clause
 license-file:    LICENSE.md
 maintainer:      Mark Karpov <markkarpov92@gmail.com>
 author:          Mark Karpov <markkarpov92@gmail.com>
-tested-with:     ghc ==8.8.4 ghc ==8.10.5 ghc ==9.0.1
+tested-with:     ghc ==8.10.7 ghc ==9.0.2 ghc ==9.2.1
 homepage:        https://github.com/mmark-md/mmark
 bug-reports:     https://github.com/mmark-md/mmark/issues
 synopsis:        Strict markdown processor for writers
@@ -53,16 +53,16 @@
         dlist >=0.8 && <2.0,
         email-validate >=2.2 && <2.4,
         foldl >=1.2 && <1.5,
-        hashable >=1 && <1.4,
+        hashable >=1 && <1.5,
         html-entity-map >=0.1 && <0.2,
         lucid >=2.9.13 && <3.0,
         megaparsec >=8.0 && <10.0,
         microlens >=0.4 && <0.5,
         microlens-th >=0.4 && <0.5,
-        modern-uri >=0.3.4 && <0.4,
+        modern-uri >=0.3.4.3 && <0.4,
         mtl >=2.0 && <3.0,
         parser-combinators >=0.4 && <2.0,
-        text >=0.2 && <1.3,
+        text >=0.2 && <2.1,
         text-metrics >=0.3 && <0.4,
         unordered-containers >=0.2.5 && <0.3
 
@@ -103,8 +103,8 @@
         lucid >=2.9.13 && <3.0,
         megaparsec >=8.0 && <10.0,
         mmark,
-        modern-uri >=0.3 && <0.4,
-        text >=0.2 && <1.3
+        modern-uri >=0.3.4.3 && <0.4,
+        text >=0.2 && <2.1
 
     if flag(dev)
         ghc-options: -O0 -Wall -Werror
@@ -124,7 +124,7 @@
         base >=4.13 && <5.0,
         criterion >=0.6.2.1 && <1.6,
         mmark,
-        text >=0.2 && <1.3
+        text >=0.2 && <2.1
 
     if flag(dev)
         ghc-options: -O2 -Wall -Werror
@@ -143,7 +143,7 @@
     build-depends:
         base >=4.13 && <5.0,
         mmark,
-        text >=0.2 && <1.3,
+        text >=0.2 && <2.1,
         weigh >=0.0.4
 
     if flag(dev)
diff --git a/tests/Text/MMarkSpec.hs b/tests/Text/MMarkSpec.hs
--- a/tests/Text/MMarkSpec.hs
+++ b/tests/Text/MMarkSpec.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
@@ -889,10 +888,10 @@
           ==-> "<p>&lt;a href=&quot;\246\246.html&quot;&gt;</p>\n"
       it "CM309" $
         "[foo](/f&ouml;&ouml; \"f&ouml;&ouml;\")"
-          ##-> p_ (a_ [href_ "/f&ouml;&ouml;", title_ "f\246\246"] "foo")
+          ##-> p_ (a_ [href_ "/f%26ouml%3b%26ouml%3b", title_ "f\246\246"] "foo")
       it "CM310" $
         "[foo]\n\n[foo]: /f&ouml;&ouml; \"f&ouml;&ouml;\""
-          ##-> p_ (a_ [href_ "/f&ouml;&ouml;", title_ "f\246\246"] "foo")
+          ##-> p_ (a_ [href_ "/f%26ouml%3b%26ouml%3b", title_ "f\246\246"] "foo")
       it "CM311" $
         "``` f&ouml;&ouml;\nfoo\n```"
           ==-> "<pre><code class=\"language-f\246\246\">foo\n</code></pre>\n"
@@ -1356,13 +1355,13 @@
                 )
       it "CM468" $
         "[link](foo(and(bar)))\n"
-          ==-> "<p><a href=\"foo(and(bar\">link</a>))</p>\n"
+          ==-> "<p><a href=\"foo%28and%28bar\">link</a>))</p>\n"
       it "CM469" $
         let s = "[link](foo\\(and\\(bar\\))"
          in s ~-> err 10 (utok '\\' <> euric <> euri)
       it "CM470" $
         "[link](<foo(and(bar)>)"
-          ==-> "<p><a href=\"foo(and(bar)\">link</a></p>\n"
+          ==-> "<p><a href=\"foo%28and%28bar%29\">link</a></p>\n"
       it "CM471" $
         let s = "[link](foo\\)\\:)"
          in s ~-> err 10 (utok '\\' <> euric <> euri)
@@ -1374,7 +1373,7 @@
          in s ~-> err 10 (utok '\\' <> euric <> euri)
       it "CM474" $
         "[link](foo%20b&auml;)"
-          ==-> "<p><a href=\"foo%20b&amp;auml;\">link</a></p>\n"
+          ==-> "<p><a href=\"foo%20b%26auml%3b\">link</a></p>\n"
       it "CM475" $
         let s = "[link](\"title\")"
          in s
@@ -1706,13 +1705,13 @@
           ==-> "<p><a href=\"irc://foo.bar:2233/baz\">irc://foo.bar:2233/baz</a></p>\n"
       it "CM568" $
         "<MAILTO:FOO@BAR.BAZ>"
-          ==-> "<p><a href=\"mailto:FOO@BAR.BAZ\">FOO@BAR.BAZ</a></p>\n"
+          ==-> "<p><a href=\"mailto:FOO%40BAR.BAZ\">FOO@BAR.BAZ</a></p>\n"
       it "CM569" $
         "<a+b+c:d>"
           ==-> "<p><a href=\"a+b+c:d\">a+b+c:d</a></p>\n"
       it "CM570" $
         "<made-up-scheme://foo,bar>"
-          ==-> "<p><a href=\"made-up-scheme://foo/,bar\">made-up-scheme://foo/,bar</a></p>\n"
+          ==-> "<p><a href=\"made-up-scheme://foo/%2cbar\">made-up-scheme://foo/%2cbar</a></p>\n"
       it "CM571" $
         "<http://../>"
           ==-> "<p><a href=\"http://..\">http://..</a></p>\n"
@@ -1727,10 +1726,10 @@
           ==-> "<p>&lt;http://example.com/[&gt;</p>\n"
       it "CM575" $
         "<foo@bar.example.com>"
-          ==-> "<p><a href=\"mailto:foo@bar.example.com\">foo@bar.example.com</a></p>\n"
+          ==-> "<p><a href=\"mailto:foo%40bar.example.com\">foo@bar.example.com</a></p>\n"
       it "CM576" $
         "<foo+special@Bar.baz-bar0.com>"
-          ==-> "<p><a href=\"mailto:foo+special@Bar.baz-bar0.com\">foo+special@Bar.baz-bar0.com</a></p>\n"
+          ==-> "<p><a href=\"mailto:foo%2bspecial%40Bar.baz-bar0.com\">foo+special@Bar.baz-bar0.com</a></p>\n"
       it "CM577" $
         "<foo\\+@bar.example.com>"
           ==-> "<p>&lt;foo+@bar.example.com&gt;</p>\n"
@@ -2046,34 +2045,30 @@
         MMark.projectYaml doc `shouldBe` Nothing
     context "when document contains a YAML section" $ do
       context "when it is valid" $ do
-#ifdef ghcjs_HOST_OS
-        let r = object []
-#else
-        let r = object
-              [ "x" .= Number 100
-              , "y" .= Number 200 ]
-#endif
+        let r =
+              object
+                [ "x" .= Number 100,
+                  "y" .= Number 200
+                ]
         it "returns the YAML section (1)" $ do
           doc <- mkDoc "---\nx: 100\ny: 200\n---\nHere we go."
           MMark.projectYaml doc `shouldBe` Just r
         it "returns the YAML section (2)" $ do
           doc <- mkDoc "---\nx: 100\ny: 200\n---\n\n"
           MMark.projectYaml doc `shouldBe` Just r
-
-#ifndef ghcjs_HOST_OS
       context "when it is invalid" $ do
-        let mappingErr = fancy . ErrorCustom . YamlParseError $
-              "mapping values are not allowed in this context"
+        let mappingErr =
+              fancy . ErrorCustom . YamlParseError $
+                "mapping values are not allowed in this context"
         it "signals correct parse error" $
           let s = "---\nx: 100\ny: x:\n---\nHere we go."
-          in s ~-> errFancy 15 mappingErr
+           in s ~-> errFancy 15 mappingErr
         it "does not choke and can report more parse errors" $
           let s = "---\nx: 100\ny: x:\n---\nHere we *go."
-          in s ~~->
-              [ errFancy 15 mappingErr
-              , err 33 (ueib <> etok '*' <> eic)
-              ]
-#endif
+           in s
+                ~~-> [ errFancy 15 mappingErr,
+                       err 33 (ueib <> etok '*' <> eic)
+                     ]
 
 ----------------------------------------------------------------------------
 -- Testing extensions
