[cap-talk] Derivative rights
Jed Donnelley
jed at nersc.gov
Mon Feb 4 21:30:48 EST 2008
On 2/4/2008 5:43 PM, David Hopwood wrote:
> ross mcginnis wrote:
...
>> This is the crux of the matter. To me it
>> appears that *any* reference is a cap.
>
> 'To be sure I was!' Humpty Dumpty said gaily...
Heh. If it's a token that is intended to be
unforgeable and:
1. It grants access to something via an "invocation"
operation, and
2. It can be communicated in messages that result
from "invocation"s
then I would say it qualifies as a "capability"
Of course one of the points of the "object capability"
term is that this notion is very similar to that
of an object reference in an object oriented
language.
A vital aspect of a capability is that both the
designation (what sorts of access operations the
capability provides) and the authority to carry
out those operations are bundled into a single
"token" that can be communicated in a capability
enabled message.
Now perhaps we should consider references that
aren't capabilities:
1. A pointer in C isn't a capability because
it can be forged (in C).
2. mysystem:/etc/shadow isn't a capability
because it isn't bundled with the authority
to operate on the designated object.
3. This:
https://wiki.nersc.gov/bin/view
isn't a capability because it isn't bundled with
the authority to operate on it (e.g. read or write)
4. On the other hand, this:
https://wideword.net/doc/i%2Bej6NZzbDWtc2k444Nk%2FQ%3D%3D
is a capability, because it's designation comes
bundled with the authority to operate on it.
5. Of course this:
Dennis J. B., and E. C. Van Horn,
"Programmed Semantics for Multiprogrammed Computations,"
March, 1966, Communications of the ACM, Vol. 9 No. 3,
pp. 143-145
isn't a capability because the designation isn't
bundled with an authority to operate on it.
Of course there are nuances, but I hope the above
clarify that at least not all references are
capabilities. If you restrict your use of
the term "reference" to object references in
OO languages, then I think that is pretty close
to what a capability is - except for the safety
(non forgeability) issue, e.g. the reason for the
Joe-E subset of Java.
--Jed http://www.webstart.com/jed/
More information about the cap-talk
mailing list