#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