[KinoSearch] Towards a stable C API... via indirect dispatch

Nathan Kurz nate at verse.com
Tue Oct 30 14:33:26 PDT 2007



On 10/29/07, Marvin Humphrey <marvin at rectangular.com> wrote:
> So, if we make the vtable layout part of the binary API, we can never
> add any new virtual methods without breaking compat.

OK, I think I got it now: the problem comes when methods are added to
the ancestors of class one is accessing in the shared library.   Could
this also be solved by marking those classes as BOIL_FINAL_CLASS()?
That would have the effect of letting the run-time linker do the
versioning for you.  But probably not possible if you are making use
of dynamic classes as you say.

I'm getting there, but I'm still not completely sold on the advantages
of the indirection you are contemplating.   Along the lines of my
previous message, the potential for silently wrong behaviour worries
me.

There's a good paper by Ulrich Drepper on shared libraries:
http://people.redhat.com/drepper/dsohowto.pdf
I haven't read it in a while, and probably should reread it.  Glancing
at it again, I note that it has what seems like a very relevant
section on ABI versioning, as well as a great overview of how ld.so
actually works.

Tangential to this, Drepper has been publishing a fantastic piece
about optimizing memory access.  The latest installment is here:
http://lwn.net/SubscriberLink/255364/1e135ddf3bff4b77/
I haven't read them all, but plan to once the series is done.  I think
they are dead on for the improvements that could be made for
KinoSearch.

Nathan Kurz
nate at verse.com

_______________________________________________
KinoSearch mailing list
KinoSearch at rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch




More information about the kinosearch mailing list