diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+1.4.3
+  - Support GHC 9.8
+  - Support GHC 9.6
+
 1.4.2
   - Support GHC 9.4
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -25,3 +25,30 @@
 ```text
 stack build [--test] [--haddock]
 ```
+
+### GHC Versions
+
+#### GHC 9.8
+
+Supported on Linux and Darwin.
+
+#### GHC 9.6
+
+Supported on Linux and Darwin.
+
+#### GHC 9.4
+
+Supported on Linux and Darwin.
+
+#### GHC 9.2
+
+Supported on Linux and Darwin.
+
+#### GHC 9.0
+
+Supported only on Linux because "crypton" fails a test on Darwin,
+probably due to [this issue](https://github.com/kazu-yamamoto/crypton/issues/35).
+
+#### GHC 8.10.7
+
+Supported on Linux and Darwin.
diff --git a/proto3-wire.cabal b/proto3-wire.cabal
--- a/proto3-wire.cabal
+++ b/proto3-wire.cabal
@@ -1,7 +1,7 @@
 cabal-version: >=1.10
 
 name:         proto3-wire
-version:      1.4.2
+version:      1.4.3
 synopsis:     A low-level implementation of the Protocol Buffers (version 3) wire format
 license:      Apache-2.0
 license-file: LICENSE
@@ -35,18 +35,18 @@
 
   build-depends:
       base >=4.12 && <=5.0
-    , bytestring >=0.10.6.0 && <0.12.0
+    , bytestring >=0.10.6.0 && <0.13.0
     , cereal >= 0.5.1 && <0.6
-    , containers >=0.5 && < 0.7
+    , containers >=0.5 && < 0.8
     , deepseq >=1.4 && <1.6
     , hashable <1.5
     , parameterized >=0.5.0.0 && <1
-    , primitive >=0.6.4 && <0.9
+    , primitive >=0.6.4 && <0.10
     , safe ==0.3.*
-    , template-haskell >= 2.15.0 && < 2.22
-    , text >= 0.2 && <2.1
+    , template-haskell >= 2.15.0 && < 2.23
+    , text >= 0.2 && <2.2
     , text-short ==0.1.*
-    , transformers >=0.5.6.2 && <0.6
+    , transformers >=0.5.6.2 && <0.7
     , unordered-containers >= 0.1.0.0 && <0.3
     , vector >=0.12.0.2 && <0.14
     , QuickCheck >=2.8 && <3.0
@@ -75,17 +75,17 @@
 
   build-depends:
       base >=4.9 && <=5.0
-    , bytestring >=0.10.6.0 && <0.12.0
+    , bytestring >=0.10.6.0 && <0.13.0
     , cereal >= 0.5.1 && <0.6
-    , doctest >= 0.7.0 && <0.21.0
+    , doctest >= 0.7.0 && <0.23.0
     , proto3-wire
     , QuickCheck >=2.8 && <3.0
-    , tasty >= 0.11 && <1.5
+    , tasty >= 0.11 && <1.6
     , tasty-hunit >= 0.9 && <0.11
     , tasty-quickcheck >= 0.8.4 && <0.11
-    , text >= 0.2 && <2.1
+    , text >= 0.2 && <2.2
     , text-short ==0.1.*
-    , transformers >=0.5.6.2 && <0.6
+    , transformers >=0.5.6.2 && <0.7
     , vector >=0.12.0.2 && <0.14
 
 benchmark bench
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -34,7 +34,8 @@
 import           Data.Either           ( isLeft )
 import           Data.Maybe            ( fromMaybe )
 import           Data.Int
-import           Data.List             ( group, sort )
+import           Data.List             ( sort )
+import qualified Data.List.NonEmpty    as NE
 import qualified Data.Text.Lazy        as T
 import qualified Data.Text.Short       as TS
 import qualified Data.Vector           as V
@@ -320,7 +321,7 @@
 -- | Run-length encode lazy a 'BL.ByteString'
 -- for concise display in test results.
 rle :: BL.ByteString -> [(Int, Word8)]
-rle = map (length &&& head) . group . BL.unpack
+rle = map (NE.length &&& NE.head) . NE.group . BL.unpack
 
 -- | Please adjust this expected size of the metadata header
 -- to match that expected of the current implementation.
