[
https://issues.apache.org/jira/browse/THRIFT-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13833827#comment-13833827
]
Miguel Ángel Herranz Trillo commented on THRIFT-2270:
-----------------------------------------------------
Thanks Jake for the fast response and the link to the HowToVersion page, since
it clarifies a lot.
In this page it is said that the client libraries follow the "Semantic
Versioning Specification", which seems to be the formal specification of the
usual way of versioning (at least in Unix world).
Specifically it says: "4.Major version zero (0.y.z) is for initial development.
Anything may change at any time. The public API should not be considered
stable."
I didn't know it, so now I understand that major version zero is a special
case, and in this case, the SONAME _must_ be the complete 3-tuple, since it
explicitly says that the public API is not stable at this time. I guess that
the SONAME should be major.minor only from major 1.
Thanks for the time and support.
> Faulty library version numbering at build or documentation
> ----------------------------------------------------------
>
> Key: THRIFT-2270
> URL: https://issues.apache.org/jira/browse/THRIFT-2270
> Project: Thrift
> Issue Type: Bug
> Components: Build Process, C++ - Library, Deployment
> Affects Versions: 0.9.1
> Environment: Linux
> Reporter: Miguel Ángel Herranz Trillo
> Assignee: Jake Farrell
> Priority: Minor
> Labels: build, documentation
>
> The shared libraries generated for C/C++ under Linux (.so files) have a
> SONAME that includes the full version number.
> For example:
> {code}
> # objdump -p libthrift.so | grep SONAME
> SONAME libthrift-0.8.0.so
> {code}
> Since the compilation process will make any program compiled against a
> library to depend on the SONAME, in the case of Thrift library, the program
> will depend on the full version number.
> The program will fail if some other different Thrift library version is
> provided instead, despite it can be a minor improvement or a bug fix that
> doesn't break the external interface.
> For example, if external interface of 0.8.0 is the same as 0.8.1 or even
> 0.9.1 (since it may happen that only the first number represent changes in
> the dynamic linking or protocol interface), then we could expect that a
> program will depend on a SONAME with the format libthrift.so.0 and that both
> version 0.8.0 and 0.9.1 shared library binaries provides the same SONAME
> equal to libthrift.so.0
> I haven't found any document about the versioning scheme in Thrift or the
> compatibility between versions (maybe I didn't search enough, so sorry in
> that case).
> So, if that document does not exist, I think it should be created.
> And also, in case that some of the version numbers are just used for changes
> that doesn't imply changes in the ABI or the Thrift protocol itself, the
> numbers should be removed from the SONAME of the Thrift library binary.
--
This message was sent by Atlassian JIRA
(v6.1#6144)