Spoon vs Serialization

Matthew Fulmer tapplek at gmail.com
Sat Jul 26 20:04:38 UTC 2008


There are four ways I can think of to use an object 
resident in a foreign island (or object memory, or vat), in a
safe manner (no interrupting an object during a state change, and
no out-of-sync copies)

If the object is writable, you can:
1. PassByProxy: Get a proxy to the object, and send it messages
   that execute in its local island, safely scheduled. E and
   Croquet do this with FarRefs; Spoon does it with Others.
2. PassByReplica: Get a replica of the object. Messages sent to
   it will be executed both locally and remotely. Croquet does
   this

If the object is read-only, you can also:
3. PassBySerialization: Serialize the object into a stream of
   instructions in a safe language, then read it in locally.
   Since the copies are read only, they never get out-of-sync.
   This is what any serializer does.
4. PassByCopy: If the islands are in the same format, one could
   copy out the bytes, and resolve out-pointers at both ends.
   This is what ImageSegments do. This would be much faster than
   serialization, and can even be supported in hardware, by
   doing a DMA between two memories in a distributed memory
   computer (such as a Cell Broadband Engine)
5. PassByInstance: If the islands have access to shared memory,
   one can use an object directly, executing messages for it
   locally. Croquet does this for a few objects, 

Which of these does Spoon use to copy objects between
memories/islands? I'm curious, especially in regard to
PassByCopy, since I'm working with the Cell BE in mind.

-- 
Matthew Fulmer -- http://mtfulmer.wordpress.com/


More information about the Spoon mailing list