patch applied (ghc): Use MD5 checksums for recompilation checking (fixes #1372, #1959)

Simon Marlow marlowsd at gmail.com
Wed May 28 09:33:11 EDT 2008


Isaac Dupree wrote:
> I guess this change is orthogonal to #835 
> http://hackage.haskell.org/trac/ghc/ticket/835 , which involves what 
> information goes into interface-files in the first place (rather than 
> fixing it or making it worse)?

Yes, it's orthogonal.  However, it doesn't seem trivial to change things as 
the ticket suggests: for example, even though a constructor may not be 
exported, it might still be referred to in an unfolding, and hence is part 
of the ABI of the module.  I suspect that putting abstract data 
declarations in interface files only makes sense with -O0, if at all.

Cheers,
	Simon


> Simon Marlow wrote:
>> Wed May 28 05:52:58 PDT 2008  Simon Marlow <marlowsd at gmail.com>
>>   * Use MD5 checksums for recompilation checking (fixes #1372, #1959)
>>     This is a much more robust way to do recompilation checking.  The 
>> idea
>>   is to create a fingerprint of the ABI of an interface, and track
>>   dependencies by recording the fingerprints of ABIs that a module
>>   depends on.  If any of those ABIs have changed, then we need to
>>   recompile.
>>     In bug #1372 we weren't recording dependencies on package modules,
>>   this patch fixes that by recording fingerprints of package modules
>>   that we depend on.  Within a package there is still fine-grained
>>   recompilation avoidance as before.
>>     We currently use MD5 for fingerprints, being a good compromise 
>> between
>>   efficiency and security.  We're not worried about attackers, but we
>>   are worried about accidental collisions.
>>     All the MD5 sums do make interface files a bit bigger, but compile
>>   times on the whole are about the same as before.  Recompilation
>>   avoidance should be a bit more accurate than in 6.8.2 due to fixing
>>   #1959, especially when using -O.
>>
>>     M ./compiler/Makefile -1 +1
>>     M ./compiler/basicTypes/Module.lhs -3 +19
>>     M ./compiler/basicTypes/Name.lhs -17 +3
>>     M ./compiler/basicTypes/OccName.lhs +1
>>     M ./compiler/coreSyn/CoreLint.lhs +11
>>     M ./compiler/ghci/InteractiveUI.hs -1 +2
>>     M ./compiler/iface/BinIface.hs -30 +102
>>     M ./compiler/iface/IfaceSyn.lhs -362 +101
>>     M ./compiler/iface/LoadIface.lhs -27 +21
>>     M ./compiler/iface/MkIface.lhs -439 +534
>>     M ./compiler/main/HscMain.lhs -3 +4
>>     M ./compiler/main/HscTypes.lhs -52 +59
>>     M ./compiler/main/TidyPgm.lhs -1 +1
>>     M ./compiler/rename/RnNames.lhs -3 +3
>>     M ./compiler/simplCore/OccurAnal.lhs -3 +6
>>     M ./compiler/simplCore/SimplUtils.lhs +4
>>     M ./compiler/typecheck/TcRnDriver.lhs -11 +114
>>     M ./compiler/typecheck/TcRnTypes.lhs -5 +2
>>     M ./compiler/types/Type.lhs -1 +4
>>     M ./compiler/utils/Binary.hs -60 +61
>>     M ./compiler/utils/FastMutInt.lhs -1 +41
>>     A ./compiler/utils/Fingerprint.hsc
>>     A ./compiler/utils/md5.c
>>     A ./compiler/utils/md5.h
>>     M ./utils/hsc2hs/Makefile +8
>>
>> View patch online:
>> http://darcs.haskell.org/ghc/_darcs/patches/20080528125258-12142-86f70dd9e977d96ca433fd15adb4c752b0e2dc80.gz 
>>
>>
>> _______________________________________________
>> Cvs-ghc mailing list
>> Cvs-ghc at haskell.org
>> http://www.haskell.org/mailman/listinfo/cvs-ghc
>>
> 



More information about the Cvs-ghc mailing list