[reSIProcate] Conditional compile should not change object sizes

Alan Hawrylyshen alan at jasomi.com
Thu Apr 14 15:26:19 CDT 2005


On Apr 13, 2005, at 13.40, Dennis Dupont wrote:

> I have been hit by this twice now: 
>   
> [snip]

Welcome to this most frustrating and not-nearly-exclusive-enough club! 
:-)

> It appears somebody tried to address this with the ApiCheck and 
> ApiCheckList
> classes.  However, the only way to use them would be to pass each 
> possibly
> affected class and its size to the ApiCheck class, something 
> cumbersome and
> not very robust in terms of keeping up with library changes.
>

Indeed.

>  
> I think a longer term solution would be to make TransportSelector an 
> interface
> class (only pure virtual methods), and use a TransportSelectorFactory 
> that
> could be conditionally compiled to instantiate the correct 
> implementation
> class.  This of course has the problem of breaking value semantics 
> (sigh).
>  

Ideally with the release of the next tarball, this is something that we 
really MUST address. The library will have very limited utility if we 
cannot create a stable ABI that doesn't change from one compilation / 
config cycle to the next. At the most basic level, the size of the 
DataStackLocal buffer must be fixed and the objects that are included 
conditionally (Security, V6, etc) should all be padded in the cases 
where they are absent so we don't have this ABI instability.


Anyone in a position to assist in making these changes? I think they 
can all be backwards compatible from an API/CODE point of view, but 
obviously not from an ABI point of view.

Cheers,
Alan

a l a n a t j a s o m i d o t c o m




More information about the resiprocate-devel mailing list