-
Notifications
You must be signed in to change notification settings - Fork 710
RFC: Dropping build support for GHC < 8 #7531
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
Comments
I do maintain libraries that support versions of GHC older than the GHCs I "use" myself, so I'm wondering if 1% is perhaps an underestimation of who this might affect in some way. (That said, I don't think I actually still support GHC 7.x on anything, because 8.0 added Semigroup.) One nicety that might make this entirely painless for some "niche case" users: Could the default Cabal version in the setup GitHub action be "the latest Cabal version that supports the requested GHC version"? That might spare some people the extra brain space of mapping GHC versions to appropriate Cabal versions themselves. |
@chris-martin there are two types of Cabal-GHC compatibility at play. One is which GHC is needed to build Cabal from the sources, and I assume the ticket is about this (is it?). Another one is which GHC bindists are supported by Cabal in runtime (this is what matters for consumers such as GitHub actions). |
Ah. In that case I don't even understand how it would be possible to be affected by this. |
I've heard-say that some people are running GHC 7.2 still in production and want progressive fixes for it 😁. This would obviously put those people out, but the burden is too great for this team. |
Off the top of my head I can't think of a compelling argument for why Cabal should continue supporting GHC < 8. If there is anyone using GHC < 8 in production, I think it's perfectly reasonable that they should also be able to pin to an older Cabal release as well. |
Yes please, drop support. |
The unique project i maintained requiring ghc-7.10.3 was eta-lang: https://github.com/typelead/eta/blob/97ee2251bbc52294efbf60fa4342ce6f52c0d25c/stack.yaml#L1 and its fork of cabal, etlas https://github.com/typelead/etlas/blob/bbd7c558169e1fda086e759e1a6f8c8ca2807583/stack.yaml#L37 But being them both hard forks, Sad to have to speak about it in past tense 😞 |
I second this proposal, the engineering burden for a nigh-defunct compiler version is too high. This will also help us refine our general backward compatibility requirements. |
An arguments to keep at least 7.10.3 would be it is still supported in haskell actions and ghcup and from a quick search So maybe a little bit more conservative option could be keep only 7.10.3, as 7.10.* would be in theory easy to port on and we will give users a window time to migrate their code. |
@jneira I'm a solid +1 on dropping support for building cabal with GHC < 8, if my above summary is correct. :) |
Is there an automated way to search Hackage for projects that have both
|
Aha, thanks for the clarification i missed your first comment about. In that case i would be fine too. |
I think +61 upvotes and not a single response to the contrary is a good indicator that this will go through. Thanks for getting the feedback to us so quickly 😄 |
I'm not too worried about CI time since each compiler is tested in parallel. However Cabal/cabal-install currently contains way to much code. We absolutely do need to find ways to delete as much of it as possible and this can help with that. |
I agree with nuance as articulated by @merijn |
@cartazio Cabal's support for GHC < 8 for projects is a different issue, we're talking here about cleaning-up the codebase of Cabal itself to remove CPP statements so that this codebase can be freed of old compilers. |
Yup that’s what I throughly Merijn was clarifying |
How about dropping support when usage stayed below 5% for a year? Something like that would give a heads up to people next time. |
I still think it would be great to do that query, to know for sure what packages will be impacted |
@jneira I think it'd be useful to compare that with the packages that are already unbuildable and see how much that number would increase |
Rather than this, it makes more sense to have something like an LTS model. Explicitly state that (all|only some) versions will be supported for $LENGTH. Letting user behavior dictate this is just asking for trouble. |
Completely agree @isovector. A version policy that includes sunset dates allows an explicit contract that users can plan around. |
@isovector There is already an LTS model, and it is (per phadej's comment) that building Cabal is supported by any GHC of the past 5 years and cabal-install with any GHC of the past 3. Edit: Heh, now I can't find where I read his comment. |
Not sure what is the protocol to follow with RFCs, but we are taking steps towards this so i would say #8079 would close this as rfc accepted and implemented |
Also there is a note in the readme stating the window support for ghc versions used to build cabal and cabalinstall: |
I'm looking at this, and For me this issue doesn't seem to be solved, at least properly. |
Agreed. PR welcome. See also #8715 |
I won't make a PR. I hope that uploaders of Cabal/-syntax will fix these before uploading packages to Hackage. |
It looks like, the current lower bound |
I'd be willing to have a go at cutting a PR for this. It looks like we'll need to bump to Line 28 in 054108f
Footnotes
|
@philderbeast In #8079 I had inlined the conditionals but failed to reflect that in the version bounds.
I am not sure what you mean here, we still have GHC 8.4 in CI. |
I was looking at the default |
Great minds think alike: #9372 (comment) |
Hi Everyone,
This project currently supports GHC >=7. However, as of the latest Haskell Survey, roughly 1% of the community is using a GHC < 8.0:
However, looking at CI times, on average, we spend roughly 47% of CI time on GHC < 8.0. This means that we're spending close to half of all build time supporting 1% of the community for a niche case that disproportionately negatively affects the 99%. Dropping GHCs would significantly improve the contributor pipeline, and help ease the burden going forward for both users and maintainers. Part of me suspects that we support old GHCs in order to not cast anyone into the lurch if they happen to not be able to upgrade. However, I think having a concrete stability policy is just as good, and will set expectations appropriately so that people know what's coming and can act accordingly. So, my proposal is this:
cabal-install
. Older GHC users can always use older versions of Cabal. The point to stress here is that we want to put cap ongoing support at roughly 5 years for a particular GHC.The text was updated successfully, but these errors were encountered: