#15 libpkgconf library version not incremented for ABI-breaking change

Open
opened 1 year ago by karen-arutyunov · 3 comments

libpkgconf 1.5.4 links into libpkgconf.so.3.0.0 on Linux as it does for the 1.4.2 version despite significant API changes in 1.5.1 (adding structure members, function parameters, etc), leading to the ABI-breaking changes.

As a general observation, while libpkgconf uses major.minor.patch versioning scheme it doesn't comply with Semantic Versioning. Probably you could consider that, which essentially means the following: bug fixes not affecting the API increment the patch version, backwards compatible API changes increment the minor version, and backwards incompatible API changes increment the major version.

libpkgconf 1.5.4 links into libpkgconf.so.3.0.0 on Linux as it does for the 1.4.2 version despite significant API changes in 1.5.1 (adding structure members, function parameters, etc), leading to the ABI-breaking changes. As a general observation, while libpkgconf uses major.minor.patch versioning scheme it doesn't comply with Semantic Versioning. Probably you could consider that, which essentially means the following: bug fixes not affecting the API increment the patch version, backwards compatible API changes increment the minor version, and backwards incompatible API changes increment the major version.
kaniini commented 11 months ago
Owner

humm, abi-compliance-checker didn't report any problems. i'll bump it in next release.

humm, abi-compliance-checker didn't report any problems. i'll bump it in next release.
karen-arutyunov commented 4 months ago
Poster

The library version is still 3.0.0 as of 1.6.1 release.

Can't say anything about abi-compliance-checker, but here is an example of the breakage.

The pkgconf_client_new() function got the additional 'personality' parameter in 1.5.1. The client built against libpkgconf 1.4.2 doesn't pass it. Now if libpkgconf.so.3.0.0 built from 1.4.2 is replaced with the same-named binary built from 1.5.1 or later for such a client, then things falls apart: client doesn't pass the personality argument to the pkgconf_client_new() call but the function assumes it's there and dereferences it (see pkgconf_client_init() for details).

The library version is still 3.0.0 as of 1.6.1 release. Can't say anything about abi-compliance-checker, but here is an example of the breakage. The pkgconf_client_new() function got the additional 'personality' parameter in 1.5.1. The client built against libpkgconf 1.4.2 doesn't pass it. Now if libpkgconf.so.3.0.0 built from 1.4.2 is replaced with the same-named binary built from 1.5.1 or later for such a client, then things falls apart: client doesn't pass the personality argument to the pkgconf_client_new() call but the function assumes it's there and dereferences it (see pkgconf_client_init() for details).
karen-arutyunov commented 4 months ago
Poster

Btw when do you plan to release?

Btw when do you plan to release?
Sign in to join this conversation.
No Label
No Milestone
No assignee
2 Participants
Loading...
Cancel
Save
There is no content yet.