Skip to content
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

Backward incompatibility of 0.17.0 #266

Closed
catostrophe opened this issue Sep 3, 2020 · 5 comments
Closed

Backward incompatibility of 0.17.0 #266

catostrophe opened this issue Sep 3, 2020 · 5 comments

Comments

@catostrophe
Copy link

#257 has broken the backward compatibility of magnolia.

When I bumped version, I got a runtime error in a lib dependent on 0.16.0:

java.lang.NoSuchMethodError: 'magnolia.Param magnolia.Param$.apply(java.lang.String, int, boolean, magnolia.CallByNeed, magnolia.CallByNeed, java.lang.Object[])'

The newly added param should have been with the default value.

@joroKr21
Copy link
Contributor

joroKr21 commented Sep 4, 2020

To promise backwards compatibility we would have to release 1.0

@catostrophe
Copy link
Author

Magnolia has become a widely used library. The thing is that in a relatively small project it comes as a transitive dependency from 4 different libs.

If only one lib updates magnolia to 0.17.0, and the others don't come up with new releases, the whole app may be spoilt silently (will break at runtime). That's what really happened.

It doesn't cost much to support backward compatibility when you add a new argument such as an array of annotations.

@joroKr21
Copy link
Contributor

joroKr21 commented Sep 4, 2020

I'm not even against releasing 1.0 but if we go through with #247 and #256 they will for sure not be binary compatible.
And the only way to be sure is to add MiMa to the build.

@propensive
Copy link
Collaborator

Thanks for reporting, @catostrophe. I want to move to version 1.0 quite soon now, though it does need a bit of admin work, which I haven't had time for.

@propensive
Copy link
Collaborator

#247 can actually be binary compatible, as the methods aren't part of any binary API. But in any case, I would support split and join as aliases for dispatch and combine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants