[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Capability IDL

From: Jonathan S. Shapiro
Subject: Capability IDL
Date: Thu, 29 Sep 2005 12:36:07 -0400

Marcus and Neal and I have been talking, which prompts me to ask a
question about Hurd IDL -- or more precisely, it prompts me to want to
learn how what the Hurd group has done may be different from what EROS
and Coyotos have done.

All of us, I think, have based our IDL designs on the Corba design. In
CapIDL (our IDL), we made some syntactic changes around vectors, added
some support for packages. We made several changes that are deviations
from CORBA:

1. We have interface inheritance. That is, I can write:

  interface I2 extends I1 {

2. In our IDL, an "interface" declaration defines a capability type.
That is, if I write

  interface mumble {
    void someMethod();

I can later write:

  interface bletcherous {
    void put(int32 arg, mumble someCap);

with the meaning that the second argument to put() is a capability that
implements the "mumble" interface.

3. We removed the "any" type completely. We really thing this is a bad
idea in an interface language, but beyond that it creates a problem in a
capability IDL. In a system based on protected capabilities, there is a
harvard-style partition between data and capabilities, and it doesn't
really make a lot of sense to allow them to be passed in the same

Long after we did this, we figured out how to make it all work sensibly,
and we could not put this back if anybody cared.

I'm curious what (if any) deviations from CORBA have been adopted for
Hurd IDL.

Jonathan Shapiro

reply via email to

[Prev in Thread] Current Thread [Next in Thread]