#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