diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,6 @@
+- 0.6.0.3: Remove cryptohash dependencies
+- 0.6.0.2: Update haddock
+- 0.6.0.0: Use `addDependentFile` so separate compilation is not needed.
 - 0.5.6.0: Add `ForeignPtr` anti-quoter
 - 0.5.5.9: Make tests work with QuickCheck < 2.9
 - 0.5.5.8: Add workaround for QuickCheck-2.9 bug. See issue #51
diff --git a/inline-c.cabal b/inline-c.cabal
--- a/inline-c.cabal
+++ b/inline-c.cabal
@@ -1,5 +1,5 @@
 name:                inline-c
-version:             0.6.0.2
+version:             0.6.0.3
 synopsis:            Write Haskell source files including C code inline. No FFI required.
 description:         See <https://github.com/fpco/inline-c/blob/master/README.md>.
 license:             MIT
@@ -35,10 +35,8 @@
   build-depends:       base >=4.7 && <5
                      , QuickCheck
                      , ansi-wl-pprint
-                     , binary
                      , bytestring
                      , containers
-                     , cryptohash
                      , hashable
                      , mtl
                      , parsec >= 3
diff --git a/src/Language/C/Inline/Internal.hs b/src/Language/C/Inline/Internal.hs
--- a/src/Language/C/Inline/Internal.hs
+++ b/src/Language/C/Inline/Internal.hs
@@ -54,8 +54,6 @@
 import           Control.Monad (forM, void, msum)
 import           Control.Monad.State (evalStateT, StateT, get, put)
 import           Control.Monad.Trans.Class (lift)
-import qualified Crypto.Hash as CryptoHash
-import qualified Data.Binary as Binary
 import           Data.Foldable (forM_)
 import qualified Data.Map as Map
 import           Data.Maybe (fromMaybe)
@@ -278,29 +276,25 @@
   TH.addTopDecls [dec]
   TH.varE ffiImportName
 
-uniqueCName
-  :: String
-  -- ^ Some string identifying the body of the symbol the name will
-  -- refer too -- e.g. the function arguments + body.  This is used to
-  -- generate persistent names: we do not want completely random names
-  -- since this causes issues when cabal builds things repeatedly, for
-  -- example when building with profiling.
-  -> TH.Q String
-uniqueCName x = do
+uniqueCName :: TH.Q String
+uniqueCName = do
   -- The name looks like this:
-  -- inline_c_MODULE_INDEX_HASH
+  -- inline_c_MODULE_INDEX
   --
   -- Where:
   --  * MODULE is the module name but with _s instead of .s;
   --  * INDEX is a counter that keeps track of how many names we're generating
-  --    for each module;
-  --  * HASH is the SHA1 hash of the contents.
+  --    for each module.
+  --
+  -- we previously also generated a hash from the contents of the
+  -- C code because of problems when cabal recompiled but now this
+  -- is not needed anymore since we use 'addDependentFile' to compile
+  -- the C code.
   c' <- bumpGeneratedNames
-  let unique :: CryptoHash.Digest CryptoHash.SHA1 = CryptoHash.hashlazy $ Binary.encode x
   module_ <- TH.loc_module <$> TH.location
   let replaceDot '.' = '_'
       replaceDot c = c
-  return $ "inline_c_" ++ map replaceDot module_ ++ "_" ++ show c' ++ "_" ++ show unique
+  return $ "inline_c_" ++ map replaceDot module_ ++ "_" ++ show c'
 
 -- | Same as 'inlineCItems', but with a single expression.
 --
@@ -360,7 +354,7 @@
 inlineItems callSafety type_ cRetType cParams cItems = do
   let mkParam (id', paramTy) = C.ParameterDeclaration (Just id') paramTy
   let proto = C.Proto cRetType (map mkParam cParams)
-  funName <- uniqueCName $ show proto ++ cItems
+  funName <- uniqueCName
   cFunName <- case C.cIdentifierFromString funName of
     Left err -> fail $ "inlineItems: impossible, generated bad C identifier " ++
                        "funName:\n" ++ err
