attoparsec icon indicating copy to clipboard operation
attoparsec copied to clipboard

Lower bound on transformers

Open andrewthad opened this issue 6 years ago • 5 comments

Attoparsec uses Data.Functor.Identity. Consequently, it should require transformers >= 0.4.1.0.

andrewthad avatar Sep 12 '18 11:09 andrewthad

This only shows up when building with older versions of GHC. Try this for example to see the failure:

cabal new-build --constraint='transformers==0.4.0.0` -w ghc-7.4.2

andrewthad avatar Sep 12 '18 11:09 andrewthad

I've fixed up the affected releases (@bgamari, so everything that's now left to do is to update the .cabal file for the sake of future attoparsec releases)

  • https://hackage.haskell.org/package/attoparsec-0.13.0.0/revisions/
  • https://hackage.haskell.org/package/attoparsec-0.13.0.1/revisions/
  • https://hackage.haskell.org/package/attoparsec-0.13.0.2/revisions/
  • https://hackage.haskell.org/package/attoparsec-0.13.1.0/revisions/
  • https://hackage.haskell.org/package/attoparsec-0.13.2.0/revisions/
  • https://hackage.haskell.org/package/attoparsec-0.13.2.1/revisions/
  • https://hackage.haskell.org/package/attoparsec-0.13.2.2/revisions/

hvr avatar Sep 13 '18 09:09 hvr

Awesome. Thanks!

andrewthad avatar Sep 13 '18 12:09 andrewthad

Unfortunately, these revisions are causing various build failures for me (criterion example).

Also, these new version bounds are too conservative. Data.Functor.Identity was introduced in transformers-0.2.0.0, not 0.4.1.0. The reason that attoparsec was failing to build was because it is importing Identity(runIdentity), and transformers-0.4.0.0 made the strange decision to not export runIdentity as a record selector:

$ cabal build
Preprocessing library for attoparsec-0.13.2.2..
Building library for attoparsec-0.13.2.2..
[ 5 of 21] Compiling Data.Attoparsec.Zepto ( Data/Attoparsec/Zepto.hs, dist/build/Data/Attoparsec/Zepto.o )

Data/Attoparsec/Zepto.hs:44:31:
    Module
    `Data.Functor.Identity'
    does not export
    `Identity(runIdentity)'

This is why attoparsec fails to build against that particular version of transformers. For that reason, transformers-0.4.0.0 was deprecated on Hackage. (All other versions of transformers between 0.2.0.0 and 0.5.5.0 do export runIdentity as a record selector.)

If you really want to be sure that attoparsec never builds against transformers-0.4.0.0, you should change the version bounds to transformers >= 0.2 && < 0.4 || >=0.4.1 && <0.6. I don't have the ability to change this myself—can a Hackage trustee please do this?

RyanGlScott avatar Sep 15 '18 20:09 RyanGlScott

@RyanGlScott Oh dear... I totally missed that :-/

I've fixed up the version bound as you suggested; would have been easier to turn that soft-blacklist of transformers-0.4 into a hard-blacklist...

hvr avatar Sep 15 '18 21:09 hvr