Re: Capabilities interact nicely with Substructural Types and Reactivity

"Karp, Alan H" <[email protected]>
Newsgroups gmane.comp.capabilities.general
Message-ID <8AD823089998C849A832D86972E69CD53E6FC8B3@G9W0755.americas.hpqcorp.net>
David Barbour wrote:


è If you know an object isn't stateful - i.e. that it cannot remember its past inputs - then whole classes of security, consistency, and correctness issues can be eliminated. One can prevent time-bomb behaviors that might be resistant to basic testing and analysis. And some implicit optimizations (e.g. parallelization) are feasible.

Got it.  The goal is to guarantee history independent behavior.  I believe that’s less restrictive than fully deterministic behavior.  It sounds like you need that as well.

Is making “new” not be ambient the only solution?  For example, would instantiating a new instance for every invocation achieve the same goal while allowing the object to invoke “new” during that invocation?

________________________
Alan Karp
Principal Scientist
Enterprise Services, Office of the CTO
Hewlett-Packard Company
1501 Page Mill Road
Palo Alto, CA 94304
(650) 857-3967, fax (650) 857-7029
http://www.hpl.hp.com/personal/Alan_Karp

From: [email protected] [mailto:[email protected]] On Behalf Of David Barbour
Sent: Thursday, September 12, 2013 4:14 PM
To: General discussions concerning capability systems.
Subject: Re: [cap-talk] Capabilities interact nicely with Substructural Types and Reactivity



On Thu, Sep 12, 2013 at 3:40 PM, Karp, Alan H <[email protected]<mailto:[email protected]>> wrote:

==> For example, it may be that we want to forbid the untrusted code from constructing its own local state
OK.  I’ll be the kid in class who asks the question a lot of the other kids are too shy to ask.  What is the value of such a restriction?  It sounds to me like a language that doesn’t allow you to allocate temporary space.  A simple use case would help me understand the requirement.

Temporary space isn't the issue; it's very easy to model temporary space in a pure way.

But controlling *state* is valuable.

If you know an object isn't stateful - i.e. that it cannot remember its past inputs - then whole classes of security, consistency, and correctness issues can be eliminated. One can prevent time-bomb behaviors that might be resistant to basic testing and analysis. And some implicit optimizations (e.g. parallelization) are feasible.

If you can control what state an object uses - i.e. if you provide it through a factory - then it becomes easier to audit that state, plus a bunch of non-security benefits (easier to persist, extend, reset, freeze, rewind, etc. the state).

_______________________________________________
cap-talk mailing list
[email protected]
http://www.eros-os.org/mailman/listinfo/cap-talk
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.