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

high frequency of API-breaking releases #782

Closed
decathorpe opened this issue Jul 11, 2024 · 3 comments
Closed

high frequency of API-breaking releases #782

decathorpe opened this issue Jul 11, 2024 · 3 comments
Labels

Comments

@decathorpe
Copy link

Just within the last month, there have been 5 new releases of quick-xml, all semver-breaking. Looking at the reverse dependencies on crates.io, it is pretty obvious that most crates are still using versions that are much older than that: https://crates.io/crates/quick-xml/reverse_dependencies

The frequency of releases that break API and / or behaviour is starting to be problematic for developers who rely on this crate. It's hard to keep up with changes. And if you stick with an older version, it can introduce other problems, like resulting in multiple versions of quick-xml being present in larger dependency trees.

I am affected by this in two ways:

  • I maintain an XML-RPC framework written in Rust dxr that uses quick-xml for de/serializing XML. It's working great, but moving to new versions of quick-xml is always very painful. This is why dxr is still stuck at ^0.30 - I just couldn't figure out how to adapt to newer versions of quick-xml.

  • I maintain packages of quick-xml for Fedora Linux. We try to keep the number of versions that we need to support to a minimum. But when there's a lot of incompatible-with-each-other releases like here, that is pretty painful to deal with. Especially because some dependent libraries move to the latest quick-xml release quickly, while other projects move more slowly (if at all).

@Mingun
Copy link
Collaborator

Mingun commented Jul 11, 2024

I regret that the frequency of releases creates difficulties in some cases, but this is a necessary evil. It is better to evolve to beautiful API when we can instead of have troubles later. Fortunately, we are already very close to version 1.0 where we will be much more stable. There may be no more releases before the serious rewrite (#766 and a couple of planned PRs) that is currently underway, but this release will indeed be very breaking, but it will bring many new features.

Actually, last releases contains not so many breaking changes and I think that most projects could use range dependencies. Many breakage from changing Error type, but in most cases it is used transparently anyway. If you use serde, then the compatibility is even more wide, I think, you can absolutely safely use >=0.31,<0.36 and even wider.

BTW, if you'll have difficulties when updating quick-xml related code, you can tag me and I try to help. Anyway, thanks to pointing out to this problem.

@Mingun
Copy link
Collaborator

Mingun commented Jul 11, 2024

I see that dxr uses serde API. Since version 0.30.0 there are no changes in serde (de)serializer (and not planned even after rewrite), so it should be safe to update. In any case, if you find some case when something worked unexpectedly or not flexible enough, fill an issue (and maybe PR 😇)

@decathorpe
Copy link
Author

Thank you! Having a "stable" release on the horizon is really good news! I looked at open issues and projects but couldn't find any references to "this is needed before we publish 1.0.0", so maybe it would be good to mark these issues in a more obvious way so you won't get more unnecessary tickets like mine? 😅

Side note: Yes, dxr does use the serde interface, but with some custom deserialization logic sprinkled in ... and I think that's where our trouble comes from :(

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

No branches or pull requests

2 participants