On May 13, 2013, at 06:53 , Marvin Humphrey <[email protected]> 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
