-
Notifications
You must be signed in to change notification settings - Fork 92
Minor cleanup #649
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
Minor cleanup #649
Conversation
removed some spurious `()`s removed some unused declarations minor cleanup
The code cleanups LGTM, but are we sure the MiMa exclusions are safe...? |
Exclusions are needed to add the last missing type annotations: it turns out that in the absence of them, different versions of the Scala compiler infer different types, so the same version of this library compiled with different versions of the Scala compiler results in binary incompatible JARs... This have been happening for a while - we just didn't know because no checks for this are run ;) With this change, the APIs actually become compatible across the versions of the Scala compiler. I think the exclusions are safe: they change some return types to more specific than what some versions of the Scala compiler infer; I do not know how to make absolutely sure that they are safe, but as a wise man once said:
Is the fact that we are increasing the minor version on the next release relevant in this context? Thank you! |
I wish I were comfortable with just shrugging at this, but sadly, this is a foundational library that is hugely common in big dependency trees. We already caused a lot of ecosystem disruption with the 1.x -> 2.x bump.
Not really, since breaking bincompat would normally imply a major version bump, not just a minor one. Are you certain that the bincompat breakage is only for Scala 3 users and not for Scala 2? I think we should be willing to take a bit more risk in a Scala 3 context, where the library is still relatively new and there isn't an army of legacy users to consider (merely a, I don't know, platoon of them? brigade?). How about this: could we have one set of MiMa exclusions for Scala 2 and one for Scala 3, so that we can know for sure that any potential bincompat breakage is only on the Scala 3 side?
Just to check, do you understand why MiMa considers the more specific types to break binary compatibility? Because I feel like we need to have a solid grasp of that in order to evaluate the risks here. In my experience, MiMa is hardly ever wrong. |
I do not - yet? |
conflicted type annotations
removed some spurious
()
sremoved some unused declarations
minor cleanup