[Haskell] Re: Trying to install binary-0.4

Simon Marlow 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 Libraries mailing list