-
Notifications
You must be signed in to change notification settings - Fork 564
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
Prepare for v0.14.3 release #4128
Prepare for v0.14.3 release #4128
Conversation
K, there have definitely been some changes in |
The new error in |
This is worrying, I think we need to figure out what’s going on there before we can release. It’s a non-breaking release so it shouldn’t have breaking changes. |
|
This is more likely to be a consequence of #4064, actually. We might need to consider reverting that if it would count as a breaking change (assuming this isn't just a bug in my code, which it might be). |
I believe that #4064 is working correctly and catching an error in purescript-subcategory. The declaration instance constRestrictableFixedSourceArrow
:: ( HasPure c (c v)
, Restrictable Function c
)
=> HasConst c introduces a type named const
:: forall v0 v1
. ObjectOf c v0
=> ObjectOf c v1
=> v0
-> c v1 v0 which introduces types named (conveniently, for my purposes) const v = pure' (Proxy3 :: Proxy3 c) v is inferred to have type The global context contains an instance chain for Therefore, no instance found. But now the question before the court is, is this a breaking change (was purescript-subcategory written correctly, given the understanding of the language that existed prior to this release) or a bug fix? I believe, given the way this What says the court? |
Thank you for digging in this @rhendric! 👏
It doesn't matter what's correct, if it breaks users then it's a breaking change. |
That explanation makes sense to me. I agree with @f-f; I don’t think it would be acceptable to release this as v0.14.3 as-is, even though the problem is in the library. I expect there’s lots of places in practice where code is wrong but compiles anyway, and in many of those cases it’s probably not the end of the world that the code is wrong (maybe the paths which involve the bad code are rarely hit). From the point of view of a user who ran into one of the new bugs in 0.14.2, it’s a drag to be forced to fix an instance chain problem in code you don’t really care about to be able to benefit from the other fixes which led us to want to expedite this release.
I don’t think I agree with this; it’s often much less clear cut, because breaking changes are changes in the public API of a package, and so the question becomes “is the thing we are changing part of a public API”. I think breaking downstream code in a non-breaking release is acceptable if it’s clear that the downstream code is depending on a non-public API. For example, if we changed the representation of In the case of instance chains, I don’t think they have ever been well documented enough for us to be able to claim that any part of them is “non-public”; in the absence of docs, the interface becomes the implementation. |
Sad to say it, but I think this should be the controlling factor here. Normally, we'd wait a few more weeks before making another release. We're releasing this one earlier than normal to fix a few bugs that arose in While it's possible that this error only affects that one person's code, it's possible that it will affect others' code. So, even if the library was fixed, we don't know who else would be affected. Based on my reading of @f-f and @hdgarrood's points above, it sounds like you two both agree that this counts as a "breaking" change, even if your reasons for describing it as that differ. The immediate implication is that the breaking PR should be reverted (as much as I wish that wouldn't happen).
While #4064 should be in v0.15.0 if it's breaking, I don't think it follows that our next release should be To clarify, I'm up for a |
I understood Harry's answer as a clarification on top of mine, I agree with what he said above.
I see no reason why we'd have to include in a So I don't think releasing a small 0.15 in some weeks entails substantially more work than releasing a small 0.14.3 now. |
Note that a breaking compiler release doesn’t require updating every single core library. If the next release after 0.14.3 contains this fix but that’s the only breaking change, none of the libraries in the package set other than subcategory (and its dependents) will need updating, most likely. There’s no rule that says we have to address every planned breaking change in core libraries every time we make a breaking compiler release. |
I’m not sure I agree smaller and more frequent breaking changes are easier for users, though. I think there’s a very real risk of losing community goodwill if we are forcing people to handle breaking changes regularly in order to benefit from other non-breaking changes. This is actually one the most common reasons I’ve seen people express dissatisfaction for PureScript; even now, some people think our breaking changes are too arbitrary and frequent. |
I heard a similar complaint, but I'd argue that most of the breaking releases we had are very breaking, so I understand (as a heavy user myself) how that is really annoying to deal with. |
Oh yeah, let's fix that. |
Sorry, #4129 is now created. |
Although I have to say, I wish we used release branches for this sort of thing. One of my most frequent tools for understanding parts of the compiler is walking though the history of a line or function with git blame, and revert/revert-revert pairs in the commit history don't help with that. |
7a07aa3
to
9fa6157
Compare
#4129 has been merged. I just need an approval and then I can release v0.14.3 |
I sympathise with this but I also really don't want to deal with backporting all the time, and I also think that because of how badly git's UI sucks, lots of potential contributors can't really handle a branching strategy any more complex than "everything goes into |
Description of the change
Updates the versions in preparation for the upcoming v0.14.3 release.
To clarify, was the
purescript-cst
package updated at all? I don't believe so, but I wasn't sure if that should be bumped tov2.0.0.1
or something.A few issues that were found:
The RELEASE_GUIDE.md file doesn't instruct me to update the CHANGELOG.md file when submitting this PR.
When compiling the package set, this error was produced. See https://github.com/matthew-hilty/purescript-subcategory/blob/master/src/Functor/HasConst.purs