[coyotos-dev] IDL compatibility: the versioning nightmare

Christopher Nelson nadiasvertex at gmail.com
Tue Jul 10 11:32:22 EDT 2007


>
> > Out of curiosity, do you consider the approach of having one dispatch
> > list per version per interface to code heavy and/or to slow?
> >
> > In other words, say you had:
> >
> > interface A:0
> > {
> >    mymethod1();
> > }
> >
> > interface A:1
> > {
> >   mymethod2();
> > }
>
> Umm. No. I said I had:
>
>   interface A_0 {
>      void methodOne();
>   };
>
>   interface A_1 extends A_0 {
>      void methodTwo();
>   };


Yeah, I know.  I think inheritance is ugly. :-D  I should have clarified
that  I was advocating has-a verses is-a.

>
> >   There might also be syntactic sugar allowing you to specify in
> > source that you want the latest version of the interface.  This
> > wouldn't have any effect on binary compatibility with already-compiled
> > apps, though.
>
> Of course it would! You declare that you want the latest version. Some
> method has been dropped. You then pass that cap to one of your services.
> That service needs the old method. Game over.


No. The sugar is source-only. Once the IDL compiler processes the source,
the cap is bound to a single version of the interface. However, I can see
how that is still a problem.  It leads to a combinatorial explosion of
microversioned dispatch tables.

I withdraw the suggestion for a "latest version" feature.  Instead, I would
suggest that versions are part of the first-class type.   If you change the
interface version that a method accepts/returns then you need to create a
new version of your interface, just as you would if you changed the
signature of a method from clearCrypto() to clearCrypto(loggerObject
logger).

-={C}=-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.coyotos.org/pipermail/coyotos-dev/attachments/20070710/024ef4d1/attachment.html 


More information about the coyotos-dev mailing list