Hey Michel, posted this question earlier in the thread, but I
think you might have missed it:
The blog post I linked only talks about rewriting vtables at
dynamic-link-time. Would it be possible to implement something
similar for the sizes of structs and scope-classes, and the
relative address of member variables? dsimcha's post has led me
to realize that without these additional features, the ABI
would still be quite fragile.
Long story short: Could your proposal realistically be extended
to support flexible sizeofs and member-variable offsets? I figure
that such a system might as well stabilize the entire class ABI,
rather than just vtables.
I would guess that flexible sizeofs would increase the runtime
cost only very slightly, but flexible member-variables might be
more of an issue. The cost could be minimized by looking up
offsets only when crossing a library boundary (say, when calling
a template method on an extern (D_FlexibleABI) class, or
accessing a protected member variable of same), but would that
actually be possible?