
On Fri, 2008-10-03 at 14:27 +0100, Claus Reinke wrote:
Perhaps we could even go as far as saying "base >= 3.0" is equivalent to "base == 3.0.*". i.e. if you don't supply an upper bound, then we'll give you a conservative one. I wonder how much stuff would break if we did that.
All open-ended dependencies are lies..
Yes!
Well, actually they are optimistic approximations (some programs will work with base 3 or base 4), and closed dependency ranges are pessimistic approximations (few programs need all of base 3). The problem is that there is no definite interface spec.
Yes. Don and I are rather of the opinion that we need to look much more carefully at the package system. We're basically operating without the reassuring assistance of the type checker. There are some practical things we can do to make the current system work considerably better though. If we get the platform packages to opt into the package versioning policy and get cabal/hackage to warn about upwardly open version ranges then that'd go a long way to making things better. We should also write a tool using the ghc-api to compare apis of different versions of packages to inform people of changes and enforce the versioning policy for packages that have opted in. Having those interface specs around might also help a more robust package composition consistency checker or solver. Duncan