Neil Jerram <n...@ossau.uklinux.net> writes: > l...@gnu.org (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