diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
 # Revision history for recover-rtti
 
+## 0.4.3 -- 2023-06-05
+
+* Support aeson 2.1, vector 0.13, and primitive 0.8
+  (Mitchell Rosen, #29, #35, #36)
+* Support bytestring 0.11.4
+* Support ghc 9.4 and 9.6
+
 ## 0.4.2 -- 2023-03-23
 
 * Support mtl 2.3 (requiring at least 2.3.1) (#26).
diff --git a/recover-rtti.cabal b/recover-rtti.cabal
--- a/recover-rtti.cabal
+++ b/recover-rtti.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               recover-rtti
-version:            0.4.2
+version:            0.4.3
 synopsis:           Recover run-time type information from the GHC heap
 description:        The main function in this package is 'classify', which looks
                     at the GHC heap to recover type information about arbitrary
@@ -20,7 +20,12 @@
     README.md
     CHANGELOG.md
 
-Tested-With: GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.2
+Tested-With: GHC ==8.8.4
+              || ==8.10.7
+              || ==9.0.2
+              || ==9.2.7
+              || ==9.4.5
+              || ==9.6.2
 
 source-repository head
   type:     git
@@ -45,11 +50,12 @@
                       Debug.RecoverRTTI.Util
                       Debug.RecoverRTTI.Wrappers
 
-    build-depends:    base       >= 4.13 && < 4.17
-                    , aeson      >= 1.4  && < 2.1
+    build-depends:    base       >= 4.13 && < 4.19
+                    , aeson      >= 1.4  && < 2.2
                     , bytestring >= 0.10 && < 0.12
                     , containers >= 0.6  && < 0.7
-                    , ghc-heap   >= 8.8  && < 9.3
+                    , ghc-heap   >= 8.8  && < 9.7
+                    , ghc-prim   >= 0.5  && < 0.11
                     , sop-core   >= 0.5  && < 0.6
                     , stm        >= 2.5  && < 2.6
                     , text       >= 1.2  && < 2.1
@@ -63,8 +69,8 @@
                       -- The oldest ghc we support is 8.8.
                       -- The dependencies below are the oldest versions of
                       -- these packages that compile with this ghc version.
-                    , vector    >= 0.12.1.2 && < 0.13
-                    , primitive >= 0.7      && < 0.8
+                    , vector    >= 0.12.1.2 && < 0.14
+                    , primitive >= 0.7      && < 0.9
 
     hs-source-dirs:   src
     default-language: Haskell2010
diff --git a/src/Debug/RecoverRTTI/Classify.hs b/src/Debug/RecoverRTTI/Classify.hs
--- a/src/Debug/RecoverRTTI/Classify.hs
+++ b/src/Debug/RecoverRTTI/Classify.hs
@@ -128,10 +128,11 @@
       --
 
       -- bytestring
-      --
-      -- bytestring changed from PS to BS in version 0.11
-      (inKnownModule DataByteStringInternal      -> Just "PS")    -> return $ mustBe $ C_Prim C_BS_Strict
+#if MIN_VERSION_bytestring(0,11,0)
       (inKnownModule DataByteStringInternal      -> Just "BS")    -> return $ mustBe $ C_Prim C_BS_Strict
+#else
+      (inKnownModule DataByteStringInternal      -> Just "PS")    -> return $ mustBe $ C_Prim C_BS_Strict
+#endif
       (inKnownModule DataByteStringLazyInternal  -> Just "Empty") -> return $ mustBe $ C_Prim C_BS_Lazy
       (inKnownModule DataByteStringLazyInternal  -> Just "Chunk") -> return $ mustBe $ C_Prim C_BS_Lazy
       (inKnownModule DataByteStringShortInternal -> Just "SBS")   -> return $ mustBe $ C_Prim C_BS_Short
diff --git a/src/Debug/RecoverRTTI/Modules.hs b/src/Debug/RecoverRTTI/Modules.hs
--- a/src/Debug/RecoverRTTI/Modules.hs
+++ b/src/Debug/RecoverRTTI/Modules.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP            #-}
 {-# LANGUAGE DataKinds      #-}
 {-# LANGUAGE GADTs          #-}
 {-# LANGUAGE KindSignatures #-}
@@ -185,9 +186,11 @@
   -> FlatClosure -> Maybe (String, [Box])
 inKnownModuleNested = go singPkg
   where
+    -- We ignore the package version: we assume that we are linked against only
+    -- a single version of each package, and that those versions are statically
+    -- known (that is, we can use CPP where necessary).
     go :: SPkg pkg -> KnownModule pkg -> FlatClosure -> Maybe (String, [Box])
     go knownPkg knownModl ConstrClosure{pkg, modl, name, ptrArgs} = do
-        -- We ignore the package version for now
         guard (stripVowels (namePkg knownPkg) `isPrefixOf` stripVowels pkg)
         guard (modl == nameModl knownPkg knownModl)
         return (name, ptrArgs)
@@ -210,7 +213,12 @@
     nameModl = \case
         SGhcPrim -> \case
           GhcTypes -> "GHC.Types"
+
+#if MIN_VERSION_ghc_prim(0,10,0)
+          GhcTuple -> "GHC.Tuple.Prim"
+#else
           GhcTuple -> "GHC.Tuple"
+#endif
 
         SBase -> \case
           GhcInt      -> "GHC.Int"
@@ -223,7 +231,11 @@
           DataEither  -> "Data.Either"
 
         SByteString -> \case
+#if MIN_VERSION_bytestring(0,11,4)
+          DataByteStringInternal      -> "Data.ByteString.Internal.Type"
+#else
           DataByteStringInternal      -> "Data.ByteString.Internal"
+#endif
           DataByteStringLazyInternal  -> "Data.ByteString.Lazy.Internal"
           DataByteStringShortInternal -> "Data.ByteString.Short.Internal"
 
diff --git a/src/Debug/RecoverRTTI/Reclassify.hs b/src/Debug/RecoverRTTI/Reclassify.hs
--- a/src/Debug/RecoverRTTI/Reclassify.hs
+++ b/src/Debug/RecoverRTTI/Reclassify.hs
@@ -5,6 +5,7 @@
 {-# LANGUAGE LambdaCase          #-}
 {-# LANGUAGE RankNTypes          #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeOperators       #-}
 
 -- | Support for reclassification
 module Debug.RecoverRTTI.Reclassify (
diff --git a/src/Debug/RecoverRTTI/Util.hs b/src/Debug/RecoverRTTI/Util.hs
--- a/src/Debug/RecoverRTTI/Util.hs
+++ b/src/Debug/RecoverRTTI/Util.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE PolyKinds           #-}
 {-# LANGUAGE RankNTypes          #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeOperators       #-}
 
 module Debug.RecoverRTTI.Util (
     -- * Existentials
diff --git a/tests/Test/RecoverRTTI/Classifier/Arbitrary.hs b/tests/Test/RecoverRTTI/Classifier/Arbitrary.hs
--- a/tests/Test/RecoverRTTI/Classifier/Arbitrary.hs
+++ b/tests/Test/RecoverRTTI/Classifier/Arbitrary.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE QuantifiedConstraints #-}
 {-# LANGUAGE RankNTypes            #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
+{-# LANGUAGE TypeOperators         #-}
 
 module Test.RecoverRTTI.Classifier.Arbitrary (arbitraryClassifier_) where
 
