-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revising conditionals (discussion) [WAS: Breakages caused by packages missing bounds against bytestring-0.11] #279
Comments
I made revisions for (let these be my last revisions as trustee):
I only looked, not tested whether there are compilation errors, but:
use Most breakages are invisible, as usage breaks due renaming of (internal) Note, breakages may become visible before releases with There were just a handful of older releases which broke due removed False positives are for example |
See also haskell/bytestring#287 (comment) |
In principle such issues can still be addressed with metadata edits where some dependency bounds are within I also regret my opposition to removing the support for GHC 7.x in |
the general framework for what are and aren't allowed as revisions is given here: https://github.com/haskell-infra/hackage-trustees/blob/master/revisions-information.md I think adding flags is discouraged because conditional exposure of modules could modify the semantic meaning of the version assigned to a package. The rules aren't perfect, but are designed to attempt to be conservative in enforcing this property. There might be a way to loosen them while preserving it, but that's the reason at least, as I understand it. |
Technical. The revision comparison is very naive. We (me and Herbert) discussed that adding conditional blocks with dependencies which are already present "on top level" would be useful, i.e. from build-depends: bytestring to build-depends: bytestring
if impl(ghc <8)
bytestring: <0.11 The important property to maintain is transitivity (you can make one revision instead of small steps) and symmetry of revisions (they can be reverted). Packages like https://hackage.haskell.org/package/semigroups with dozen flags make naive implementations non-feasible, check whether revision is valid should be relatively fast. An idea which I haven't explored properly is to separate I.e. I believe it can be done. So. Someone have to put few days of coding work (and poke people to deploy that to running |
And as a bonus, if we can improve the summary of what revisions have done, that would be great. E.g. when you edit dependencies in conditional block, the summary is not very descriptive. |
No description provided.
The text was updated successfully, but these errors were encountered: