[Haskell-cafe] Platform Versioning Policy: upper bounds are not our friends

Joey Adams joeyadams3.14159 at gmail.com
Fri Aug 17 00:07:06 CEST 2012

On Wed, Aug 15, 2012 at 3:38 PM, Bryan O'Sullivan <bos at serpentine.com> wrote:
> I propose that the sense of the recommendation around upper bounds in the
> PVP be reversed: upper bounds should be specified only when there is a known
> problem with a new version of a depended-upon package.

I, too, agree.  Here is my assortment of thoughts on the matter.

Here's some bad news: with cabal 1.14 (released with Haskell Platform
2012.2), cabal init defaults to bounds like these:

      build-depends:       base ==4.5.*, bytestring ==0.9.*, http-types ==0.6.*

Also, one problem with upper bounds is that they often backfire.  If
version 0.2 of your package does not have upper bounds, but 0.2.1 does
(because you found out about a breaking upstream change), users who
try to install your package may get 0.2 instead of the latest, and
still get the problem you were trying to shield against.

A neat feature would be a cabal option to ignore upper bounds.  With
--ignore-upper-bounds, cabal would select the latest version of
everything, and print a list of packages with violated upper bounds.


More information about the Haskell-Cafe mailing list