Proposal: Squeak-E = Squeak x Kernel-E

cg at cdegroot.com cg at cdegroot.com
Mon Jan 27 08:19:27 UTC 2003


Robert Withers <squeak-dev at lists.squeakfoundation.org> said:
>Why does Array have to be global?  It could be located through the meta 
>scope, which is exactly what VW does (I think!).
>
Let's define 'global' first :-). 

Global = accessible by name (rather than by capability) where the access
gives the same result for every object/environment/... in the virtual
machine.

I think the only real global is #Smalltalk in Squeak (ok, maybe this
World thingie, but I don't know a thing about Morphic), AFAIK all the
other lookups that look global are done through #Smalltalk. And VW might
have a slightly more advanced mechanism, but I wouldn't be surprised if
it boiled down to the same thing.

It is clear that this is a bad thing. It is not clear how far to 'scope
down' - do you want to give each object its own capability on (a version
of) #Smalltalk (might be the best solution, instance var set on creation
from the creator)? Or do you put it in the process environment (easy
'nuff)? Or in a 'collaboration environment' like a Vat or an Island?

Brushing all the neat terminology aside, I think this is what it boils
down to (my apologies to all the participants here, but when too many
'complex words' start to get used in a thread my bogosity meter goes off
the scale, and that's about to happen here ;-)).

BTW, what's the scoping of names in E? If I say:

def makePoint(x, y) :any {
    ...
}

who can get at 'makePoint' by name? Furthermore,

def myFile := <file:/etc/profile>

who can do this and where did we get the capability to do so (ok, this
is an external global namespace, but still an important one to consider)?

-- 
Cees de Groot               http://www.cdegroot.com     <cg at cdegroot.com>
GnuPG 1024D/E0989E8B 0016 F679 F38D 5946 4ECD  1986 F303 937F E098 9E8B
Cogito ergo evigilo



More information about the Squeak-dev mailing list