[Haskell-cafe] Re: [Haskell] Re: Trying to install binary-0.4
simonmarhaskell at gmail.com
Tue Oct 16 08:08:49 EDT 2007
Several good points have been raised in this thread, and while I might not
agree with everything, I think we can all agree on the goal: things
shouldn't break so often.
So rather than keep replying to individual points, I'd like to make some
concrete proposals so we can make progress.
1. Document the version numbering policy.
We should have done this earlier, but we didn't. The proposed policy, for
the sake of completeness is: x.y where:
x changes ==> API changed
x constant but y changes ==> API extended only
x and y constant ==> API is identical
further sub-versions may be added after the x.y, their meaning is
package-defined. Ordering on versions is lexicographic, given multiple
versions that satisfy a dependency Cabal will pick the latest.
2. Precise dependencies.
As suggested by various people in this thread: we change the convention so
that dependencies must specify a single x.y API version, or a range of
versions with an upper bound. Cabal or Hackage can refuse to accept
packages that don't follow this convention (perhaps Hackage is a better
place to enforce it, and Cabal should just warn, I'm not sure).
Yes, earlier I argued that not specifying precise dependencies allows some
packages to continue working even when dependencies change, and that having
precise dependencies means that all packages are guaranteed to break when
base is updated. However, I agree that specifying precise dependencies is
ultimately the right thing, we'll get better errors when things break,
There's lots more to discuss, but I think the above 2 proposals are a step
in the right direction, agreed?
More information about the Haskell-Cafe