[ 
https://issues.apache.org/jira/browse/THRIFT-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13833630#comment-13833630
 ] 

Miguel Ángel Herranz Trillo commented on THRIFT-2270:
-----------------------------------------------------

Thanks for the explanation, I understand that also the generated code should be 
taken in account. 

But to me it seems that there is still a lack of information about the 
versioning scheme.

Then, what are the 3 numbers for? I mean, maybe they could be used like 
<protocol>.<generated_code>.<implementation_bugfix>, so the last number is just 
a fix in the library that doesn't add any change in the external interface 
(neither protocol nor generated code).

I know that to be in the safe side, since C++ red line between implementation 
and interface is very thin, it could be correct to increase every 2nd version 
number in 99% of version change to indicate a change in the <generated_code>, 
for example.

But at least, for the remaining 1%, the 3rd version number could be used 
instead, so it will have a purpose in life :)

If not, I don't see any reason to just have <protocol>.<generated_code> instead 
of 3 numbers whose meaning is not described in the documentation.

I think that things should be simplified whenever possible. Maybe there is 
another reason (like limitation of building tools to manage just 2 numbers 
instead of the "normal" 3-tuple) ... I don't know.

Thanks anyway, since I understand that this is not a major issue for thrift. 
Maybe an update/clarification in documentation is enough.




> 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)

Reply via email to