#1372: Recompilation checker should consider package versions (and other 
factors)
----------------------+-----------------------------------------------------
 Reporter:  bringert  |          Owner:  simonmar  
     Type:  bug       |         Status:  new       
 Priority:  normal    |      Milestone:  6.8 branch
Component:  Compiler  |        Version:  6.8.1     
 Severity:  normal    |     Resolution:            
 Keywords:            |     Difficulty:  Unknown   
 Testcase:            |   Architecture:  Unknown   
       Os:  Unknown   |  
----------------------+-----------------------------------------------------
Comment (by simonmar):

 Simon PJ pointed out to me that I should say a bit more about what our
 long-term plans are to address this problem.

 We understand the issues, and we want to implement the right fix.  We
 believe the right fix is to

  * include a fingerprint in each `.hi` file, calculated over the whole
 contents
    of the interface.

  * in the dependencies of an interface, give the fingerprints of modules
 depended
    on, including fingerprints of package modules (perhaps only directly
 imported
    package modules, I'm not sure of the details yet).

  * when deciding whether to recompile, compare the fingerprints of
 dependencies
    the last time we compiled against current fingerprints.  This will
    catch changes to packages, but only those changes that force a
 recompile.

 However, before we do this we want to take a critical look at the whole
 recompilation checking infrastructure, and write some commentary about it.
 I want to investigate, for example, whether it would be reasonable to
 simplify it by recording module fingerprints only, rather than versions on
 every entity as we do now.  This would entail more recompilation, but
 perhaps not significantly more, and it would vastly simplify the
 implementation.

 `<rant>` Recompilation checking is a maintenance nightmare.  It's hard to
 test, because testing it involves recompiling multiple times with changing
 sources.  It's hard to report bugs, because reproduction is so hard, so
 when it goes wrong people tend to do 'make clean' and carry on, throwing
 away the evidence.  Perhaps they report the bug anecdotally, but by then
 it's too late.  This is why I want to take a serious look at the whole
 idea and see whether we can engineer it to be simpler and more
 testable/maintainable.  `</rant>`

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1372#comment:24>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to