#8144: Interface hashes include time stamp of dependent files (UsageFile mtime) -------------------------------------------------+------------------------- Reporter: nh2 | Owner: nh2 Type: bug | Status: patch Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time performance bug | Unknown/Multiple Test Case: | Difficulty: Blocking: | Unknown | Blocked By: | Related Tickets: -------------------------------------------------+------------------------- Comment (by Austin Seipp <aseipp@…>): In [changeset:677820ee3a3aadbf2ed414deb3926381d94b13a8/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="677820ee3a3aadbf2ed414deb3926381d94b13a8" Fix interface hashes including time stamp of dependent files. Fixes #8144. Before, the modification time of e.g. #included files (and everything that ends up as a UsageFile, e.g. via addDependentFile) was taken as input for the interface hash of a module. This lead to different hashes for identical inputs on every compilation. We now use file content hashes instead. This changes the interface file format. You will get "Binary.get(Usage): 50" when you try to do an incremental using .hi files that were created with a GHC 7.7 (only) older than this commit. To calculate the md5 hash (`Fingerprint`) of a file in constant space, there now is GHC.Fingerprint.getFileHash, and a fallback version for older GHCs that needs to load the file into memory completely (only used when compiling stage1 with an older GHC). Signed-off-by: Austin Seipp <aseipp@pobox.com> }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8144#comment:13> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler