Capabilities in Squeak (attn: Lex Spoon and friends)

Robert Withers reefedjib at
Tue Oct 17 02:24:08 UTC 2006

On Oct 14, 2006, at 9:45 PM, Michael van der Gulik wrote:

> In the past there have been a couple of ambitious projects that  
> allow security in Squeak such as Squeak-E. What became of these? Is  
> there code floating around somewhere? I'm only seeing Squeak-ELib  
> on squeakmap.

Squeak-Elib is the only result from Squeak-E.  I also implement a  
Future class (called a Promise) which accepts messages and forwards  
them prior to resolving to a value.   It fails in 2 senses.

First of all there are bugs when resolving the result of a  
computation to a promise, particularly when going inter-vat, which is  
handled differently than an intra-vat promise.

Secondly, FarRefs and promises don't understand all the base protocol  
that a normal object understands so many of the tools in the image  
don't deal well with eventual objects.  Ultimately, this is your  
issue with needing VM changes, I believe.  Primitives cannot handle  
eventual arguments.  One example is when sending a #printString to an  
eventual object returns a promise then is used as the argument for  
rendering in Morphic.   Another example is an eventual ref to true is  
sent the message #ifTrue:.  What I think you would want to have is to  
protect the primitives.   In a primitive, if an argument is eventual,  
send an "invokePrimitive" message to that ref, such that the  
primitive will be invoked eventually.  That changes all primitives,  

I have a vm changes file that changes #== and #class out there.

I have stopped development of Squeak-Elib.

I hope this helps,

More information about the Squeak-dev mailing list