Neil Jerram <[email protected]> writes:
> [email protected] (Ludovic Courtès) writes:
>
>> It also makes it possible to provide two versions of the same symbol,
>> e.g.:
>>
>> SCM scm_from_string (const char *) --> GUILE_2.0
>> SCM scm_from_string (const char *, scm_t_handler) --> GUILE_2.1
>>
>> Applications that were compiled against libguile 2.0 will keep using the
>> GUILE_2.0 version of the function, while those compiled against 2.1 will
>> use the GUILE_2.1 version.
>>
>> Technically, defining multiple versions of a given symbol is achieved
>> using the `.symver' GNU as directive:
>>
>> __asm__ (".symver scm_from_string_v2_0,scm_from_str...@guile_2.0");
>> __asm__ (".symver scm_from_string,scm_from_str...@guile_2.1");
>
> That sounds very cool. But given that we try to consider non-GNU
> platforms too, will it really give us more options than we have at
> present?
It will give us more options on GNU (and possibly Solaris) but not on
the other platforms. So that won't affect our policy of not breaking
the ABI during a stable series.
On GNU and Solaris, we may be able to reduce the number of applications
that have to be recompiled when a new major version comes out by:
- having per-symbol binary compatibility info, as opposed to Libtool's
coarse-grain `-version-info'.
- providing older versions of symbols that have changed.
I see it essentially as an additional "safety net", and something that
GNU/* distribution maintainers will appreciate.
Section 3.3 of [0] contains a discussion of this.
Thanks,
Ludo'.
[0] http://people.redhat.com/drepper/dsohowto.pdf