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

s2n-quic 1.45 is semver breaking #2313

Closed
SergioBenitez opened this issue Sep 3, 2024 · 3 comments
Closed

s2n-quic 1.45 is semver breaking #2313

SergioBenitez opened this issue Sep 3, 2024 · 3 comments
Labels

Comments

@SergioBenitez
Copy link

SergioBenitez commented Sep 3, 2024

The s2n_quic::application::Error type implements From<VarInt> from s2n-quic-core. In 1.44, VarInt was from version 0.44 of s2n_quic_core. In 1.45, VarInt is from the semver incompatible s2n_quic_core 0.44 resulting in a breaking change for any users of the public From<VarInt> impl.

The only correct fix is to provide an implementation of From<VarInt> for the 0.44 version of VarInt as well. Turning back time, VarInt should either be hidden entirely from public APIs or reexported from the s2n-quic crate.

@camshaft
Copy link
Contributor

camshaft commented Sep 3, 2024

We don't currently have any guarantees around breaking changes for our 0.x crate, in this case s2n-quic-core. Only types accessible by the s2n-quic crate are considered for semver.

Is there a reason you're needing to depend on s2n-quic-core?

@SergioBenitez
Copy link
Author

SergioBenitez commented Sep 9, 2024

This a breaking change in s2n_quic, not s2n_quic_core, though it is precipitated by a change to the latter. The use of core occurs through the h3 integration.

Only types accessible by the s2n-quic crate are considered for semver.

I'm not quite sure what this means. The s2n-quic crate exposes a public API that uses types from another crate. Irrespective of whether you export those types or not, they become part of your public API and are subject to the same semver rules.

@WesleyRosenblum
Copy link
Contributor

Our s2n-quic-h3 crate should not have depended on s2n-quic-core, given the recommendation from the readme:

This is an internal crate used by s2n-quic. The API is not currently stable and should not be used directly.

I've gone ahead and removed that dependency in #2325, and would suggest you make a similar change to your code.

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

3 participants