[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Do symbols make sense for C++



Raphael Hertzog <hertzog@debian.org> writes:
> On Wed, 25 Jan 2012, Russ Allbery wrote:

>> 4. Once I had a symbols file that resulted in a successful build and that
>>    I could have uploaded, I started thinking about how I was going to
>>    maintain it.  With a C program, I would change the symbols file
>>    versions when the underlying function implementation changes in a way
>>    that may not offer eqiuvalence, similar to bumping shlibs.  I realized
>>    that I was going to have no idea when that happened, and the only way
>>    that I would maintain the symbols file would be to either trust
>>    upstream to maintain ABI equivalence and therefore only change the
>>    symbols file when upstream changes the SONAME, or not trust upstream to
>>    maintain ABI equivalence and therefore change all the versions with
>>    each new upstream release.  That gives me exactly the same semantics as
>>    a shlibs file, so what's the point in having a symbols file?

> The main benefit of the symbols file is that new symbols (API extension)
> are listed with the version where they have been introduced. So that
> seriously reduces the number of packages which would be affected by the
> equivalent shlibs bump.

My impression is that it's more difficult (not impossible, but more
difficult) to maintain a C++ library in that fashion the way that one
would maintain a C library, where one adds new symbols without requiring
an SONAME change.

Certainly, with the three C++ libraries that I maintain, upstream has a
policy of not even attempting to do this.  Bug fixes are made in an
ABI-compatible way and should not, as I understand it, involve anything
that would change the symbols file, and all other releases change the
SONAME.

I certainly believe there are carefully-maintained C++ libraries that are
more conservative and that go to the required effort to make this work
properly, and KDE is probably an excellent example of a large C++ project
with enough C++ experts involved to do this properly.  But I'm wondering
how many packages we really have like that.  By all means, if the library
makes that possible, maintain symbols!  But the library I looked at is
fairly typical, I think, in that the maintainers are not deeply attuned to
maintaining consistency of the export list in anything other than patch
releases.

-- 
Russ Allbery (rra@debian.org)               <http://www.eyrie.org/~eagle/>


Reply to: