diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for quickcheck-lockstep
 
+## 0.5.1 -- 2024-08-27
+
+* PATCH: allow building with `ghc-9.10`
+* PATCH: bump dependency versions for `containers` and `QuickCheck`
+
 ## 0.5.0 -- 2024-03-25
 
 * BREAKING: Update `quickcheck-dynamic` dependency to `>=3.4.1`. The main change
diff --git a/quickcheck-lockstep.cabal b/quickcheck-lockstep.cabal
--- a/quickcheck-lockstep.cabal
+++ b/quickcheck-lockstep.cabal
@@ -1,94 +1,97 @@
-cabal-version:      2.4
-name:               quickcheck-lockstep
-version:            0.5.0
-license:            BSD-3-Clause
-license-file:       LICENSE
-author:             Edsko de Vries
-maintainer:         edsko@well-typed.com, joris@well-typed.com
-extra-doc-files:    README.md
-extra-source-files: CHANGELOG.md
-category:           Testing
-synopsis:           Library for lockstep-style testing with 'quickcheck-dynamic'
-description:        Lockstep-style testing is a particular approach for blackbox
-                    testing of stateful APIs: we generate a random sequence of
-                    APIs calls, then execute them both against the system under
-                    test and against a model, and compare responses up to some
-                    notion of observability.
-tested-with:        GHC ==8.10 || ==9.0 || ==9.2 || ==9.4 || ==9.6 || ==9.8
+cabal-version:   2.4
+name:            quickcheck-lockstep
+version:         0.5.1
+license:         BSD-3-Clause
+license-file:    LICENSE
+author:          Edsko de Vries
+maintainer:      edsko@well-typed.com, joris@well-typed.com
+extra-doc-files:
+  CHANGELOG.md
+  README.md
 
+category:        Testing
+synopsis:
+  Library for lockstep-style testing with 'quickcheck-dynamic'
+
+description:
+  Lockstep-style testing is a particular approach for blackbox
+  testing of stateful APIs: we generate a random sequence of
+  APIs calls, then execute them both against the system under
+  test and against a model, and compare responses up to some
+  notion of observability.
+
+tested-with:
+  GHC ==8.10 || ==9.0 || ==9.2 || ==9.4 || ==9.6 || ==9.8 || ==9.10
+
 source-repository head
   type:     git
   location: https://github.com/well-typed/quickcheck-lockstep
 
 common lang
-  default-language:
-      Haskell2010
+  default-language:   Haskell2010
   default-extensions:
-      FlexibleContexts
-      FlexibleInstances
-      GADTs
-      ImportQualifiedPost
-      LambdaCase
-      MultiParamTypeClasses
-      QuantifiedConstraints
-      RankNTypes
-      ScopedTypeVariables
-      StandaloneDeriving
-      TupleSections
-      TypeApplications
-      TypeFamilies
-  other-extensions:
-      UndecidableInstances
+    FlexibleContexts
+    FlexibleInstances
+    GADTs
+    ImportQualifiedPost
+    LambdaCase
+    MultiParamTypeClasses
+    QuantifiedConstraints
+    RankNTypes
+    ScopedTypeVariables
+    StandaloneDeriving
+    TupleSections
+    TypeApplications
+    TypeFamilies
+
+  other-extensions:   UndecidableInstances
   ghc-options:
-      -Wall
-      -Wprepositive-qualified-module
-      -Wredundant-constraints
+    -Wall -Wprepositive-qualified-module -Wredundant-constraints
 
 library
-  import:
-      lang
+  import:          lang
   exposed-modules:
-      Test.QuickCheck.StateModel.Lockstep
-      Test.QuickCheck.StateModel.Lockstep.Defaults
-      Test.QuickCheck.StateModel.Lockstep.Op
-      Test.QuickCheck.StateModel.Lockstep.Op.Identity
-      Test.QuickCheck.StateModel.Lockstep.Op.SumProd
-      Test.QuickCheck.StateModel.Lockstep.Run
+    Test.QuickCheck.StateModel.Lockstep
+    Test.QuickCheck.StateModel.Lockstep.Defaults
+    Test.QuickCheck.StateModel.Lockstep.Op
+    Test.QuickCheck.StateModel.Lockstep.Op.Identity
+    Test.QuickCheck.StateModel.Lockstep.Op.SumProd
+    Test.QuickCheck.StateModel.Lockstep.Run
+
   other-modules:
-      Test.QuickCheck.StateModel.Lockstep.API
-      Test.QuickCheck.StateModel.Lockstep.EnvF
-      Test.QuickCheck.StateModel.Lockstep.GVar
+    Test.QuickCheck.StateModel.Lockstep.API
+    Test.QuickCheck.StateModel.Lockstep.EnvF
+    Test.QuickCheck.StateModel.Lockstep.GVar
+
+  -- quickcheck-dynamic requires ghc 8.10 minimum
   build-depends:
-      -- quickcheck-dynamic requires ghc 8.10 minimum
-      base               >= 4.14   && < 4.20
-    , constraints        >= 0.13   && < 0.14
-    , mtl                >= 2.2    && < 2.4
-    , containers         >= 0.6    && < 0.7
-    , QuickCheck         >= 2.14   && < 2.15
-    , quickcheck-dynamic >= 3.4.1  && < 3.5
-  hs-source-dirs:
-      src
+    , base                >=4.14   && <4.21
+    , constraints         ^>=0.13  || ^>=0.14
+    , containers          ^>=0.6   || ^>=0.7
+    , mtl                 ^>=2.2   || ^>=2.3
+    , QuickCheck          ^>=2.14  || ^>=2.15
+    , quickcheck-dynamic  ^>=3.4.1
 
+  hs-source-dirs:  src
+
 test-suite test-quickcheck-lockstep
-  import:
-      lang
-  type:
-      exitcode-stdio-1.0
-  hs-source-dirs:
-      test
-  main-is:
-      Main.hs
+  import:             lang
+  type:               exitcode-stdio-1.0
+  hs-source-dirs:     test
+  main-is:            Main.hs
   other-modules:
-      Test.MockFS
-      Test.MockFS.Mock
-      Test.IORef.Full
-      Test.IORef.Simple
+    Test.IORef.Full
+    Test.IORef.Simple
+    Test.MockFS
+    Test.MockFS.Mock
+
   default-extensions:
-      DeriveGeneric
-      EmptyCase
+    DeriveGeneric
+    EmptyCase
+
+  -- Version bounds determined by main lib
   build-depends:
-      -- Version bounds determined by main lib
-      base
+    , base
     , constraints
     , containers
     , directory
