Proposal: Squeak-E = Squeak x Kernel-E

Robert Withers rwithers12 at
Tue Jan 28 01:21:06 UTC 2003

On Monday, January 27, 2003, at 03:19 AM, cg at wrote:

> Robert Withers <squeak-dev at> 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 :-).

Actually, let's define Array first.  ;-)

Array is the name for a object of class Class.  Global refers to the 
visibility of that named binding inside of the parser and stack.   The 
key is that it is the naming system, within Smalltalk.

Let's look at a naming system, like an X.500 directory, which takes 
names and maps them to objects.  Those objects are really capabilities, 
and we would prefer to limit whether or not another object has a access 
to them.

X.500 and every other naming system has a structure of naming.  Some of 
these is flat, and if access is filtered, then you are in a quandary 
for where you impose that restriction.

A more effective way to ensure limiting access would be to have scopes 
of naming, which typically results in a hierarchical naming service and 
a path naming mechanism.

In allowing Squeak to access a globally (everyone can get to it)  
scoped name->capability, the compiler is using his quite strong and 
indisputable capability to provide global naming access to every object 
in the system.

A compiler's access to names should be scoped to the context it 
operates in.  That context is the Class instance, and it's 
superclasses.    An import of name scopes is the typical way that a 
class can get to other names.

> 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)?

I have no idea.


More information about the Squeak-dev mailing list