[GH-ISSUE #590] ABI changes #1290

Open
opened 2026-04-16 10:40:10 -05:00 by GiteaMirror · 3 comments
Owner

Originally created by @kgold2 on GitHub (Jul 10, 2020).
Original GitHub issue: https://github.com/semver/semver/issues/590

Is there any consideration of an ABI break that does not break the API? An ABI break may require a recompile but not changes to the calling source code.

For example, a C program could take a struct parameter. If a new member was added to the struct, the API doesn't break but the ABI does.

Originally created by @kgold2 on GitHub (Jul 10, 2020). Original GitHub issue: https://github.com/semver/semver/issues/590 Is there any consideration of an ABI break that does not break the API? An ABI break may require a recompile but not changes to the calling source code. For example, a C program could take a struct parameter. If a new member was added to the struct, the API doesn't break but the ABI does.
GiteaMirror added the question label 2026-04-16 10:40:10 -05:00
Author
Owner

@steveklabnik commented on GitHub (Jul 10, 2020):

In general, SemVer is only concerned with APIs. This comes from its heritage in dynamically typed scripting languages. That being said, its notion of "API" is up to the maintainer; you as the project owner say what your API is, and if the ABI is part of that or not.

<!-- gh-comment-id:656883947 --> @steveklabnik commented on GitHub (Jul 10, 2020): In general, SemVer is only concerned with APIs. This comes from its heritage in dynamically typed scripting languages. That being said, its notion of "API" is up to the maintainer; you as the project owner say what your API is, and if the ABI is part of that or not.
Author
Owner

@Tieske commented on GitHub (Jul 11, 2020):

@steveklabnik is right. The most important (and most overlooked) element in versioning is defining the scope of the version. For example are "under the hood" database schema changes part of the version, or a file system layout? or in your case the ABI.

<!-- gh-comment-id:657021991 --> @Tieske commented on GitHub (Jul 11, 2020): @steveklabnik is right. The most important (and most overlooked) element in versioning is defining the scope of the version. For example are "under the hood" database schema changes part of the version, or a file system layout? or in your case the ABI.
Author
Owner

@WayneSherman commented on GitHub (Jul 16, 2023):

Regarding API and ABI changes, I agree with this post:
https://stackoverflow.com/a/34194562

Semantic versioning should consider both [source (API) and binary (ABI) changes], and follow the "most changed" one.

  • Breaking source compilation is an incompatible change to users of the library.
  • Breaking runtime execution is an incompatible change to users of the library.

If either source compatibility or binary compatibility changes, it should -- according to semantic versioning -- be a new major version.

<!-- gh-comment-id:1636977059 --> @WayneSherman commented on GitHub (Jul 16, 2023): Regarding API and ABI changes, I agree with this post: https://stackoverflow.com/a/34194562 > Semantic versioning should consider both [source (API) and binary (ABI) changes], and follow the "most changed" one. > > - Breaking source compilation is an incompatible change to users of the library. > - Breaking runtime execution is an incompatible change to users of the library. > > If either source compatibility or binary compatibility changes, it should -- according to semantic versioning -- be a new major version.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/semver#1290