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

Proposal: SemVer approach to default ABI changes #179

Closed
jamadden opened this issue Sep 23, 2020 · 1 comment
Closed

Proposal: SemVer approach to default ABI changes #179

jamadden opened this issue Sep 23, 2020 · 1 comment
Labels
Internal Discussions on processes, etc, that don't directly face end users
Milestone

Comments

@jamadden
Copy link
Contributor

I'd like to suggest that we use the first digit of the version number in a SemVer compatible way. In addition to direct user-facing breakages, it should be bumped when the default ABI changes on at least one supported platform/python version.

The idea is to help avoid situations such as #178.

This would let downstream projects like gevent that extend or embed greenlet to place an upper bound on their supported greenlet versions. For example, gevent would would have written greenlet >= 0.4.16, < 1.0. Instead of releasing 0.4.17, because of the ABI change, we would have released 1.0.

This isn't a panacea because the ABI can be changed at compile time without changing the version, but it might help.

Another issue, of course, is false positives. Suppose greenlet 2.0 adds support for some obscure platform that requires an ABI change but only on that platform. If greenlet 2.0 also includes some additional features that don't break ABI or API, downstream packagers would have to update their version pins to take advantage of those features, even if they don't support that obscure platform, potentially locking end users out of being able to use those features (easily).

There are workarounds, like forcing particular versions of packages to be installed and ignoring version pins, but those are not something the average user should be expected to deal with (and pip is moving to make that harder, not easier).

That seems like a small, acceptable risk to me.

@jamadden jamadden added the Internal Discussions on processes, etc, that don't directly face end users label Sep 23, 2020
@jamadden jamadden added this to the 1.0 milestone Sep 30, 2020
@jonringer
Copy link

SemVer also states that versions below 1 are not "stable", and bumping the middle number is considered a breaking change. https://semver.org/#spec-item-4

This would be expressed as, greenlet >= 0.4.16, < 0.5 or greenlet ~= 0.4.16

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Internal Discussions on processes, etc, that don't directly face end users
Projects
None yet
Development

No branches or pull requests

2 participants