[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