#1604: Coarse-grained recompilation checking
----------------------+-----------------------------------------------------
 Reporter:  simonmar  |          Owner:             
     Type:  task      |         Status:  new        
 Priority:  normal    |      Milestone:  6.10 branch
Component:  Compiler  |        Version:  6.6.1      
 Severity:  normal    |     Resolution:             
 Keywords:            |     Difficulty:  Unknown    
 Testcase:            |   Architecture:  Unknown    
       Os:  Unknown   |  
----------------------+-----------------------------------------------------
Old description:

> GHC's recompilation checker is very clever: it tracks changes at the
> level of an individual function or type, and only recompiles a module
> when the entities it actually depends on have changed.
>
> However, there are some drawbacks to doing this:
>
>  * It is complicated and hard to get right
>  * It adds extra information to .hi files
>  * It takes time to check the dependencies (probably not much, though)
>
> Furthermore,
>
>  * we have virtually no tests for it
>  * when it goes wrong, the bug is very hard to reproduce, which means
> that
>    failures are often not reported.
>
> So we propose:
>
>  * Simplify the recompilation checker so that it tracks changes at the
> level of a
>    module only.  This will cause more recompilation, but it will be much
> easier
>    to get right and to test.
>  * As an intermediate step, we could implement both schemes and generate
> some output
>    to indicate when they give different results.

New description:

 GHC's recompilation checker is very clever: it tracks changes at the level
 of an individual function or type, and only recompiles a module when the
 entities it actually depends on have changed.

 However, there are some drawbacks to doing this:

  * It is complicated and hard to get right
  * It adds extra information to .hi files
  * It takes time to check the dependencies (probably not much, though)

 Furthermore,

  * we have virtually no tests for it
  * when it goes wrong, the bug is very hard to reproduce, which means that
    failures are often not reported.

 So we propose:

  * Simplify the recompilation checker so that it tracks changes at the
 level of a
    module only.  This will cause more recompilation, but it will be much
 easier
    to get right and to test.
  * As an intermediate step, we could implement both schemes and generate
 some output
    to indicate when they give different results.

 See [wiki:Commentary/Compiler/RecompilationAvoidance] for more discussion.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1604#comment:1>
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