You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucy.apache.org by Nick Wellnhofer <we...@aevum.de> on 2013/06/07 22:42:02 UTC
Re: [lucy-dev] Shared library versioning
On May 13, 2013, at 06:53 , Marvin Humphrey <ma...@rectangular.com> wrote:
> I'd like to propose that major version numbers be considered part of the
> parcel identifier and that we use a name mangling scheme to embed them in
> exported symbols, while providing macro aliases for programmer convenience.
>
> // For Lucy version 0.x:
> #define lucy_Indexer_new
> org_apache_lucy_0_Indexer_new
>
> // For Lucy version 1.x:
> #define lucy_Indexer_new
> org_apache_lucy_1_Indexer_new
>
> Unless I've missed something, I believe that scheme will allow multiple major
> versions of a library to coexist within the same process. And since the
> user-level symbols are the same, client code can be adapted and recompiled to
> use different versions of a library with minimal source code churn.
Another note: We should also embed the host language in the symbol names to make it possible to support multiple host languages within a single process. A typical example would be an Apache HTTP Server process with mod_perl and mod_python which both want to use Lucy (or any other Clownfish-based code).
Nick