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