diff --git a/megaparsec-tests.cabal b/megaparsec-tests.cabal
--- a/megaparsec-tests.cabal
+++ b/megaparsec-tests.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.4
 name:            megaparsec-tests
-version:         9.7.1
+version:         9.8.0
 license:         BSD-2-Clause
 license-file:    LICENSE.md
 maintainer:      Mark Karpov <markkarpov92@gmail.com>
@@ -30,7 +30,7 @@
         containers >=0.5 && <0.9,
         hspec >=2 && <3,
         hspec-megaparsec >=2 && <3,
-        megaparsec ==9.7.1,
+        megaparsec ==9.8.0,
         mtl >=2.2.2 && <3,
         text >=0.2 && <2.2,
         transformers >=0.4 && <0.7
@@ -70,7 +70,7 @@
         containers >=0.5 && <0.9,
         hspec >=2 && <3,
         hspec-megaparsec >=2 && <3,
-        megaparsec ==9.7.1,
+        megaparsec ==9.8.0,
         megaparsec-tests,
         mtl >=2.2.2 && <3,
         scientific >=0.3.1 && <0.4,
@@ -81,7 +81,7 @@
     if flag(dev)
         ghc-options:
             -Wall -Werror -Wredundant-constraints -Wpartial-fields
-            -Wunused-packages -Wno-unused-imports
+            -Wunused-packages
 
     else
         ghc-options: -O2 -Wall
diff --git a/tests/Text/Megaparsec/Byte/LexerSpec.hs b/tests/Text/Megaparsec/Byte/LexerSpec.hs
--- a/tests/Text/Megaparsec/Byte/LexerSpec.hs
+++ b/tests/Text/Megaparsec/Byte/LexerSpec.hs
@@ -64,6 +64,13 @@
               s = B8.pack (showInt n "")
           prs p s `shouldParse` n
           prs' p s `succeedsLeaving` ""
+    context "when parsing Float values (issue #479)" $
+      it "maintains precision without accumulated floating-point errors" $ do
+        let p = decimal :: Parser Float
+            s = "655361200000"
+            expected = fromIntegral (655361200000 :: Integer) :: Float
+        prs p s `shouldParse` expected
+        prs' p s `succeedsLeaving` ""
     context "when stream does not begin with decimal digits" $
       it "signals correct parse error" $
         property $ \a as ->
diff --git a/tests/Text/Megaparsec/Char/LexerSpec.hs b/tests/Text/Megaparsec/Char/LexerSpec.hs
--- a/tests/Text/Megaparsec/Char/LexerSpec.hs
+++ b/tests/Text/Megaparsec/Char/LexerSpec.hs
@@ -307,6 +307,13 @@
               s = showInt n ""
           prs p s `shouldParse` n
           prs' p s `succeedsLeaving` ""
+    context "when parsing Float values (issue #479)" $
+      it "maintains precision without accumulated floating-point errors" $ do
+        let p = decimal :: Parser Float
+            s = "655361200000"
+            expected = fromIntegral (655361200000 :: Integer) :: Float
+        prs p s `shouldParse` expected
+        prs' p s `succeedsLeaving` ""
     context "when stream does not begin with decimal digits" $
       it "signals correct parse error" $
         property $ \a as ->
diff --git a/tests/Text/Megaparsec/ErrorSpec.hs b/tests/Text/Megaparsec/ErrorSpec.hs
--- a/tests/Text/Megaparsec/ErrorSpec.hs
+++ b/tests/Text/Megaparsec/ErrorSpec.hs
@@ -101,6 +101,11 @@
           pe = err 1 (utok 's' <> etok 'x') :: PE
       mkBundlePE s pe
         `shouldBe` "1:9:\n  |\n1 |         something\n  |         ^\nunexpected 's'\nexpecting 'x'\n"
+    it "shows offending line in the presence of zero-width characters correctly (issue #572)" $ do
+      let s = "abc\SOHdef\SOHghi" :: String
+          pe = err 4 (utok 'd' <> etok 'x') :: PE
+      mkBundlePE s pe
+        `shouldBe` "1:4:\n  |\n1 | abc\SOHdef\SOHghi\n  |    ^\nunexpected 'd'\nexpecting 'x'\n"
     it "uses continuous highlighting properly (trivial)" $ do
       let s = "\tfoobar" :: String
           pe = err 1 (utoks "foo" <> utoks "rar") :: PE
diff --git a/tests/Text/Megaparsec/StreamSpec.hs b/tests/Text/Megaparsec/StreamSpec.hs
--- a/tests/Text/Megaparsec/StreamSpec.hs
+++ b/tests/Text/Megaparsec/StreamSpec.hs
@@ -8,7 +8,6 @@
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Lazy as BL
 import Data.Char (chr, isControl, isLetter, isSpace)
-import Data.List (foldl')
 import Data.List.NonEmpty (NonEmpty (..))
 import qualified Data.List.NonEmpty as NE
 import Data.Proxy
diff --git a/tests/Text/MegaparsecSpec.hs b/tests/Text/MegaparsecSpec.hs
--- a/tests/Text/MegaparsecSpec.hs
+++ b/tests/Text/MegaparsecSpec.hs
@@ -214,6 +214,20 @@
             property $ \a b -> do
               let p = char a <|> (char b *> char a)
               prs p "" `shouldFailWith` err 0 (ueof <> etok a <> etok b)
+      context "when testing associativity with try" $ do
+        let a = try (char 'a' >> empty)
+            b = void (char 'b')
+            c = pure ()
+            pLeftAssociative = ((a <|> b) <|> c) >> char 'd'
+            pRightAssociative = (a <|> (b <|> c)) >> char 'd'
+            e = err 0 (utok 'a' <> etok 'd' <> etok 'b')
+            s = "aaa"
+        context "left associative" $
+          it "fails with the right error" $
+            prs pLeftAssociative s `shouldFailWith` e
+        context "right associative" $
+          it "fails with the right error" $
+            prs pRightAssociative s `shouldFailWith` e
       it "associativity of fold over alternatives should not matter" $ do
         let p = asum [empty, string ">>>", empty, return "foo"] <?> "bar"
             p' = bsum [empty, string ">>>", empty, return "foo"] <?> "bar"
