[gdal-dev] GDAL 3.1.0 RC2 available
Greg Troxel
gdt at lexort.com
Sun May 3 12:33:27 PDT 2020
Even Rouault <even.rouault at spatialys.com> writes:
> Answering Bas'
>
>> If you don't want that, then two libraries need to be built with their
>> own library versioning.
>
> and Gregs'
>
>> This doesn't make sense. The current/revision/age needs to be handled
>> differently for the C library and the C++ library, because in feature
>> releases one of them does not have an ABI break and the other one does
>> have an ABI break. They will then not have the same shlib major
>> numbers, which is an obvious consequence of the above versioning policy.
>
> Separating a C library from a C++ one would represent a big deal of work, as there are C
> symbols called from C++ code, so that means that when currently there's a C function like
> GDALInvGeoTransform(), there should be a C++ one, like gdal::InvGeoTransform() that does
> what GDALInvGeoTransform() does, and GDALInvGeoTransform() would call this one, and
> make sure all code from drivers etc that calls currently GDALInvGeoTransform() would call
> instead gdal::InvGeoTransform().
> Anyway this isn't a discussion for this release, but more for a GDAL 4 or more.
If the ABI changes you have to bump the shlib major. Or, you have to
have some special, irregular rule, that says the C++ ABI is unstable
despite the shlib staying the same, or a special rule that says the C++
ABI is private and may not be used.
>> > I'm not sure about the resolution here. Should I do a RC3 that sets
>> > CURRENT/REVISION/AGE to 27/0/0 ? Would that help ?
>>
>> I think it would be really unfortunate to break the C ABI as a side
>> effect. That would change your policy above that there is (perhaps) an
>> ABI break on feature releases.
>
> The C ABI of GDAL 3.1 is the same as GDAL 3.0. But if I bump the CURRENT number, as there's
> just one lib, it will apply to the C and C++ side of it obviously. So I can imagine that's slightly
> inconvenient for people that just depend on the C ABI and wouldn't need to rebuild, but I'm
> afraid there's no way to make everybody happy.
This is the nature of using C++ :-(
>> Even better would be to keep the C++ ABI stable.
>
> Not doable. Sometimes you need to add a new virtual method for exemple, like was done for
> 3.1.
At least for this relase, there should be a paragraph in NEWS that very
clearly explains the API/ABI change situation with respect to previous
releases and whether shlib majors have changed, and any deviations from
norms. Maybe that's there, but Bas seemed surprised by this. I admit
that I don't usually see this, but I think statements of API/ABI compat
belong in NEWS and should be super clear.
More information about the gdal-dev
mailing list