diff --git a/Text/ProtocolBuffers/ProtoCompile/BreakRecursion.hs b/Text/ProtocolBuffers/ProtoCompile/BreakRecursion.hs
--- a/Text/ProtocolBuffers/ProtoCompile/BreakRecursion.hs
+++ b/Text/ProtocolBuffers/ProtoCompile/BreakRecursion.hs
@@ -201,9 +201,15 @@
 
 instance Monoid Result where
   mempty = Result mempty mempty mempty
-  mappend r1 r2 = Result { rKind = Map.unionWith max (rKind r1) (rKind r2)
-                         , rIBoot = mappend (rIBoot r1) (rIBoot r2)
-                         , rIKey = mappend (rIKey r1) (rIKey r2) }
+#if __GLASGOW_HASKELL__ >= 804
+instance Semigroup Result where
+  r1 <> r2 =
+#else
+  mappend r1 r2 =
+#endif
+    Result { rKind = Map.unionWith max (rKind r1) (rKind r2)
+           , rIBoot = mappend (rIBoot r1) (rIBoot r2)
+           , rIKey = mappend (rIKey r1) (rIKey r2) }
 
 getKind :: Result -> MKey -> VertexKind
 getKind r = let m = rKind r in \n -> Map.findWithDefault Simple n m
diff --git a/hprotoc.cabal b/hprotoc.cabal
--- a/hprotoc.cabal
+++ b/hprotoc.cabal
@@ -1,5 +1,5 @@
 name:           hprotoc
-version:        2.4.9
+version:        2.4.10
 cabal-version:  >= 1.6
 build-type:     Simple
 license:        BSD3
@@ -20,8 +20,8 @@
   location: git://github.com/k-bx/protocol-buffers.git
 
 Executable hprotoc
-  build-depends:   protocol-buffers == 2.4.9,
-                   protocol-buffers-descriptor == 2.4.9
+  build-depends:   protocol-buffers == 2.4.10,
+                   protocol-buffers-descriptor == 2.4.10
   Main-Is:         Text/ProtocolBuffers/ProtoCompile.hs
   Hs-Source-Dirs:  .,
                    protoc-gen-haskell
@@ -69,8 +69,8 @@
                    TypeSynonymInstances
 
 Library
-  build-depends:   protocol-buffers == 2.4.9,
-                   protocol-buffers-descriptor == 2.4.9
+  build-depends:   protocol-buffers == 2.4.10,
+                   protocol-buffers-descriptor == 2.4.10
   Hs-Source-Dirs:  .,
                    protoc-gen-haskell
   build-tools:     alex
