On Feb 11, 2010, at 4:41 PM, Daniel Stenberg wrote:
> On Thu, 11 Feb 2010, Patrick Monnerat wrote:
>> What is the reason for changing the VERSIONINFO in 7.20.0 ? I've looked through all the changes and I do not see any interface added. There is quite a lot of new protocols and options, but I cannot find anything new regarding the ABI at the ".so" level. For OS400 (where only C of C:R:A is used in the soname computation), this change causes an "soname bump" and requires relinking of all calling programs/libraries :-( Did I miss anything ?
> Ok, there are three parts to the explanation and I'll do them all here one by one.
> 1 - I'm not an expert on these things, I mostly try to follow the documented ways on how to proceed with the numbering.
> 2 - I usually tend to forget to change the numbers, so most releases actually get the versioninfo wrongly set to the exact same as the release before due to this.
> 3 - The rules in the lib/Makefile.am says exactly this:
> # 1. if there are only source changes, use C:R+1:A
> # 2. if interfaces were added use C+1:0:A+1
> # 3. if interfaces were removed, then use C+1:0:0
> ... so I gave this a good thought. We haven't actually added a new function, but we have added new options. My thinking is that the rule (2) is there to make sure that the numbering is made in such a manner that it will make it more obvious that going back to an older version may cause sever breakage as opposed to just going back to an older version of the lib.
> One uncertainty to define is perhaps what 'interface' means in this context.
> I take it you say my reasoning is wrong and that (1) is the rule I should've followed this time?
"Interface" would refer to the library's ABI. So if an externally visible function or struct is added, #2 would apply. If a function or struct is changed or deleted, #3 applies. Otherwise, it should be #1. A "changed" function refers to its parameter list, just to be clear.
List admin: http://cool.haxx.se/list/listinfo/curl-library
Received on 2010-02-12