[e-lang] [RFP] cross-language object serialization (E <---> Squeak-E)

Robert Withers rwithers12 at attbi.com
Tue Jan 21 07:56:12 UTC 2003

On Monday, January 20, 2003, at 03:44 PM, Tyler Close wrote:

> On Monday 20 January 2003 15:44, Robert Withers wrote:
>> In rereading what  you originally wrote, what gave me
>> pause was your stance on the less dynamic view that the other side
>> would have to be independently upgraded to support the new types.
>> There is no reason we couldn't dynamically build a meta-representation
>> of the type, as well as start attaching facets to that type so it 
>> could
>> operate in a service environment.
> Facets are behaviour. How are you going to attach behaviour to an
> unknown type without defining a universal runtime? Are you
> planning to implement a Kernel-E interpreter?

Tyler, a common misunderstanding is what it means that squeakers 
develop inside their runtime.  I don't know if you're a lisper or 
Smalltalker or not.  If a new class just showed up in front of me, I 
could start adding methods to it.  There are several implementations of 
grouping subsets of behavior into Traits or facets.  I believe they can 
be attached to any Behavior instance.

We  have  a universal runtime over here in Squeak.  :)    Aside from 
all the bit-identical platforms (21?), we have access to all the source 
code of the vm, in fact, I changed the method lookup primitive to 
support Refs.  vm: (http://minnow.cc.gatech.edu/squeak/1447).   vm 
maker (http://minnow.cc.gatech.edu/squeak/2105).  virtual machine 
hacking (http://minnow.cc.gatech.edu/squeak/407).

I wasn't going to implement a E interpreter (who will do this, I 
wonder?).  I mean adding new MirandaMethods, as I understand them now, 
or override existing ones.   Well, not MirandaMethods, because they 
don't have to be understood by everyone.   If you send me an object of 
unknown type, I could attach some behavior to it's new Class instance, 
and then you could eventual send those messages to that object, without 
getting smashed.

>> CDR back-of-the-envelope analysis:
>>> 1. it should be a binary representation for performance and 
>>> scalability
>>> reasons
>> yep
> Any stats?

no.  I think your parser is very fast.

>>> 4. it should be easy to register mappings for new types
>> IDL.  interfaces can be published.  a new incoming types can be looked
>> up in an interface repository.  this has nothing to do with encoding,
>> but rather implementation resolution of encoding.
> How do you create a collision-free namespace for new types?

use a RuntimeEnvironment to localize them to that process.  I like 
embedding the type resolver in the connection.

The only reason I push back is that there may be other forms of 
communication we could do between 2 squeaks, like passing blocks and 
debugging remote stacks.  it would great if some of that could be built 
between E and Squeak, but that will probably have to follow the typing 
model of squeak.   Dynamic typing is the only way that 2 different 
environments will be able to migrate code between them.


More information about the Squeak-dev mailing list