openexr-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Openexr-devel] Patch-compatibilty with versioned namespaces


From: Peter Hillman
Subject: Re: [Openexr-devel] Patch-compatibilty with versioned namespaces
Date: Mon, 14 Jan 2013 19:45:06 +1300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120327 Thunderbird/11.0.1

Hi Ollie!

Am I right in saying that, without versioned namespaces, patches are always 
binary compatible and minor versions always incompatible?
Yes, this should be the case
Is there a patch-compatible namespacing method already provided (and if so, 
what is it)?

The existing method is patch-compatible: patches will still be released with the _2_0_0 namespace. We will only move from on from _2_0_0 and .so.20 if binary compatibility has to be broken.
So, v2.0.X releases would all use the _2_0_0 namespace for all classes.

If binary compatibility needs to be broken, we will most likely update the effected libraries to namespace _2_1_0, at which time the .so version number will be bumped up to .so.21. This way, a large application can safely load both old and new libraries. Indeed, this ability is one of the reasons for switching to this versioned namespace scheme.


What's the soname version number based on?
The soname version number (probably) tracks the first two digits of the namespace version number.

(the last digit in the namespace version is somewhat misleading, as it doesn't imply patch level: it's there only for an edge case of providing multiple versions of an object within the same .so but in different namespaces, which we're really hoping we don't need to do in official releases, but for internal builds might be the easiest way out of a hole)

At least, that's my understanding of the plan!

Peter

On 09/01/13 03:10, Ollie Harding wrote:
Hi,

I wonder if somebody could clarify some versioning info for me, or point me at 
the bits of the docs which I've skimmed over too quickly?

I'm building v2.0.0 using the --enable-namespaceversioning flag for 
./configure, which gives me e.g.

     Imath_2_0_0::SingMatrixExc::~SingMatrixExc()

This will of course mean that I cannot drop in a future v2.0.1 library since 
the Imath_2_0_0 symbols will no longer exist, although the library will 
presumably still share the .so.20 soname. I suspect I'm using the wrong method 
of making a unique namespace, as I in fact want a namespace which retains patch 
compatibility, e.g. maybe Imath_2_0.

So my questions are:

     * Am I right in saying that, without versioned namespaces, patches are 
always binary compatible and minor versions always incompatible?
     * Is there a patch-compatible namespacing method already provided (and if 
so, what is it)?
     * What's the soname version number based on?

Many thanks,

Ollie

_______________________________________________
Openexr-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/openexr-devel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]