Library versioning policy

Bulat Ziganshin bulat.ziganshin at
Fri Nov 24 09:33:12 EST 2006

Hello Simon,

Friday, November 24, 2006, 2:32:14 PM, you wrote:

>> Build-Depends: Streams 1.2.*

> You can already say

>    build-depends: Streams >= 1.2 && < 1.3

> The 1.2.* syntax would be just sugar (sugar is nice, though).

yes, it is that i mean. the only real question - is Cabal selects
*latest* version when there are few in requested range, say 1.2.0,
1.2.1, 1.2.3 ?

to be exact, when one use Stream 1.2.1, he should request either

Build-Depends: Streams 1.2.*
Build-Depends: Streams >= 1.2 && < 2.0

(1.* will not work in general because new functionality may be added
in middle versions)

> I think adopting a consistent versioning policy is a good thing, but we (the
> Cabal designers) didn't want to impose a versioning policy because we felt that
> doing so would be too restrictive - people often want to be free to choose their
> own.

> So I think having a *recommended* policy, and clearly documenting it, is the way
> to go.

"other policies may be used as well, library developer should just
declare his policy at the library birth and use it consistently"

to be exact, policy may be changed at any point where no
backward compatibility is promised, i.e. for standard policy - on any
major version

also i should add that standard policy for libraries not reached 1.0
version should be

* no promises for 0.8 -> 0.9
* backward compatible for 0.8 -> 0.8.1
* bug-fixes and internal changes for 0.8 ->

Best regards,
 Bulat                            mailto:Bulat.Ziganshin at

More information about the Libraries mailing list