[E-Lang] Authority -- what is its dual?
Jonathan S. Shapiro
shap@eros-os.org
Fri, 19 Oct 2001 13:27:21 -0400
>I will offer the following observations that I believe
> the deep thinkers will agree with:
>
> -- Immutable objects do not carry authority.
I'm afraid this is not correct, and it appears that MarcS is for once badly
confused. This is rare, but it happens to us all on occasion.
There are two kinds of things in the world: data and authority. In E, to
first order, all object references are authorities. In EROS, all object
references are capabilities and are authorities. In E the definition of
capability is a bit more complicated. We can approximately take the view
that a local, intra-vat object reference is a capability with a specially
optimized representation, but if I understand matters correctly, there are
slight differences in the semantics of intra-vat vs. cross-vat invocations,
so if we explore to a sufficient level of detail we may need to conclude
that E implements two distinct types of capabilities. For the moment, you
can assume that both object references and capabilities in E are
authorities.
An immutable object may contain a capability or an object reference. That
is, it may contain an authority. Therefore, an immutable object can convey
authority. Even if it does *not* contain an object reference, an immutable
object conveys the authority to *read* the data that it contains. Further,
one must hold authority to the immutable object in order to access its
contents. Therefore, transferring an immutable object reference constitutes
a transfer of authority.
> -- The Vector class does not convey authority.
Nonsense. The vector class, at a minimum, conveys the authority to
instantiate vector objects. Authority to instantiate objects is a very
important authority indeed. Further, the vector *instances* convey
authority: the authority to fetch and store object references
(capabilities).
> There can be, however,
> classes for which access to the class is an authority even though the
class
> itself is pure computation...
Ah. This is the heart of MarcS's confusion. Pure computation is not an
absence of authority. Pure computation, in the sense that I think you mean,
is only an absence of mutability.
Jonathan