diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,8 @@
 # Changelog for `proto-lens-setup`
 
+## v0.4.0.9
+- Relax upper bounds for ghc-9.10.
+
 ## v0.4.0.6
 - Relax upper bounds for ghc-9.2
 
diff --git a/proto-lens-setup.cabal b/proto-lens-setup.cabal
--- a/proto-lens-setup.cabal
+++ b/proto-lens-setup.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.36.0.
+-- This file has been generated from package.yaml by hpack version 0.37.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           proto-lens-setup
-version:        0.4.0.8
+version:        0.4.0.9
 synopsis:       Cabal support for codegen with proto-lens.
 description:    This package provides Cabal support for the @proto-lens@ package.
                 It automatically generates Haskell source files from protocol buffer
@@ -68,15 +68,15 @@
   hs-source-dirs:
       src
   build-depends:
-      Cabal >=2.0 && <3.12
-    , base >=4.10 && <4.20
+      Cabal >=2.0 && <3.13
+    , base >=4.10 && <4.21
     , bytestring >=0.10 && <0.13
     , containers >=0.5 && <0.8
     , deepseq >=1.4 && <1.6
     , directory >=1.2 && <1.4
     , filepath >=1.4 && <1.6
     , process >=1.2 && <1.7
-    , proto-lens-protoc >=0.4 && <0.9
+    , proto-lens-protoc >=0.4 && <0.10
     , temporary >=1.2 && <1.4
     , text >=1.2 && <2.2
   default-language: Haskell2010
diff --git a/src/Data/ProtoLens/Setup.hs b/src/Data/ProtoLens/Setup.hs
--- a/src/Data/ProtoLens/Setup.hs
+++ b/src/Data/ProtoLens/Setup.hs
@@ -14,7 +14,6 @@
 --
 -- See @README.md@ for instructions on how to use proto-lens with Cabal.
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE BangPatterns #-}
 module Data.ProtoLens.Setup
     ( defaultMainGeneratingProtos
     , defaultMainGeneratingSpecificProtos
@@ -24,7 +23,7 @@
     , generateProtos
     ) where
 
-import Control.Monad (filterM, forM_, when)
+import Control.Monad (filterM, forM_, unless, when)
 import qualified Data.ByteString as BS
 import qualified Data.Map as Map
 import Data.Maybe (maybeToList)
@@ -241,7 +240,7 @@
     -- Generate .hs files for all active components into a single temporary
     -- directory.
     let activeModules = collectActiveModules l
-    let allModules = Set.fromList . concat . map snd $ activeModules
+    let allModules = Set.fromList . concatMap snd $ activeModules
     let usedInComponent f = ModuleName.fromString (protoModuleName f)
                           `Set.member` allModules
     generateProtosWithImports (root : importDirs) tmpDir
@@ -274,7 +273,7 @@
                 targetContents <- BS.readFile targetPath
                 return (sourceContents == targetContents)
     -- Do the move if necessary.
-    when (not identical) $ do
+    unless identical $ do
         createDirectoryIfMissing True (takeDirectory targetPath)
         copyFile sourcePath targetPath
 
