Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
0.9.1
-
Linux
Description
The shared libraries generated for C/C++ under Linux (.so files) have a SONAME that includes the full version number.
For example:
# objdump -p libthrift.so | grep SONAME SONAME libthrift-0.8.0.so
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.