-
Notifications
You must be signed in to change notification settings - Fork 32
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
Deprecation of System.OsString in 1.4.200.1
#228
Comments
Because the If we re-export, we're tying it to the os-string PVP.
See https://hackage.haskell.org/package/os-string-1.0.0 for examples how to avoid module clashes:
I suspect what's really causing issues is that cabal doesn't handle boot packages well: haskell/cabal#9669 So users get overly exposed to filepath versions that are considered obsolete already. |
Are you implying that the current situation was intended? That this is not a major screw up or oversight?
|
Yes. That's the same thing that was done with Cabal-syntax split and I asked several people beforehand on how to do a package split. Do you have a better way?
Can you share the project you're trying to build and what you think is wrong? I'm having a hard time deciphering what you're trying to do. |
|
Sorry, maybe I was too brief here. I'll spell things out in detail, at the risk of boring you with things that you already know. My point is this:
This has nothing to do with haskell/cabal#9669.
While in some situations it's indeed possible to upgrade boot packages, that's not true in general. Some boot packages are not upgradable, e.g.
Both of them depend on
With what I said above, I hope we can agree that this is not the case. I am not going as far as saying " So arguing that the |
Apparently, |
I tried and I can depend on template-haskell just fine while requesting a newer filepath. The situation around |
You are maintaining It's ok to make mistakes, everybody does. But if you still were to imply that there is nothing wrong, everything as intended, then again, I think that that would be too opinionated for a boot package. It's nice to have everything nice and tidy, but if we as a community don't sustain ourselves while doing so, and in the end there is nobody left, who is going to use this tidy new world, then for what? |
How is that an option? No deprecation warning is not an improvement. You still haven't explained what is going wrong. Are you a
This is also missing the point of the package split.
I'm afraid I don't see a viable alternative. Boot packages have to be able to throw deprecation warnings. |
It's still better than a deprecation warning, with no sensible action to take.
Of course I use
I don't need you to share your sympathy. As long as we can avoid pushing opinionated agendas through boot packages, I'm fine.
From a users perspective there is no big harm. I'm not saying it's the only option here, I would be OK with it, I think there are options.
Usually you use deprecation warnings as a precursor of a breaking change. Now, breaking changes themselves are not inevitable or necessary, so "have to" Is possibly a little bit strong here. I'm not going as far as saying "never deprecate anything", but if you deprecate something and there is no sensible way to address this deprecation warning for half of the users, this is where I see a problem. |
I guess we just disagree on that.
Please refer to haskell/core-libraries-committee#262
Yes, I think this is not ideal, but this requires a proper solution and not core library maintainers to hack around a broken ghc packaging system. |
CLC now has unanonimously decided that |
At the risk that this will turn into a rant...
When migrating form GHC 9.8.1 to 9.8.2 I'm confronted with:
So yeah, moving stuff into separate packages can make sense. But wait, why doesn't
filepath
just, re-expose that module fromos-string
? Probably because they wanted to add the deprecation message? But this means that we will end up with clashing module names, uhhh... whatever, do I really care? Just usePackageImports
and be done with it... oh, wait, WHAAAAAT,filepath
does not even depend onos-path
???So what exactly am I going to do with this deprecation warning, except for ignoring it?
And how useful is a deprecation warning that provides a "course of action" that will result in compilation errors in all but the most exotic cases. How useful is a deprecation warning that you can only ignore, where there is no sensible action to take?
So what I'm going to do is add a
OPTIONS_GHC
to every affected module, to ignore the warning. This is mostly harmless, except for that it maps any other deprecation warnings, deprecation warnings that may provide actual value... and then, down the road, when I transition to a newer version of GHC / filepath I'll have to remember to remove thoseOPTIONS_GHC
s again...Sounds like a lot of wasted effort to me... for what?
The text was updated successfully, but these errors were encountered: