One of the main problem of such a distributed Scheme, supported by a physically distributed but logically shared memory, is to implement a memory with a causal behavior. Such a protocol was described in LFP94. The continuation-based causality ensures that if you are in a continuation then you cannot ignore the mutations your invoker was aware of.
Another interesting feature of this distributed Scheme is the ability to reify the processing power devoted to the evaluation of an expression into a first-class value. This object represents the group of tasks that participate to the evaluation. A group may be imperatively paused or awakened at will. A protocol to implement group management is presented in TPPP94.
To support a distributed Scheme: Icslas, I had first to implement the necessary distributed shared memory. Instead of focusing on Scheme, I started to write a general purpose memory model based on Meroon for the object part. Its main goal is to be language-independent as well as implementation-independent. Its name is DMeroon.
A related problem is how to support multiple users that may share modules or, more precisely, mutable locations. First-class modules are dealt with in ICFP96.
Luc Moreau and I extended the notion of group with energy. Computations take energy to proceed and stop when the energy is zero. A small set of primitives allow to control energy consumption, to transfer energy from one group to another and to be informed when energy is exhausted or when groups are terminated. See our recent report or DSL97 paper.
Distributed computing requires to exchange messages or, better, objects. This is often called ``marshaling'', Java calls it ``serialization''. DMeroon uses its own marshaling engine described (in French) in NOTERE97 or in English (published, in a reduced form, in IPPS-SPDP99) . The main idea is to see the serialization as a compilation while the deserializer acts as a byte-code interpreter. The protocol is therefore a real (but tiny) language with which it is simple to change the marshaler without impacting the unmarshaler.
I also extended the concept of generic functions to distributed generic functions. This has two advantages: one is that behaviors are separated from classes so it is possible to confer new behaviors to existing objects without being forced to reimplement or recompile them. The second advantage is that you can gather functions from various languages in a single generic function and use it everywhere. This scheme will be offered in Icslas but may also be used in other languages as described in OBPDC97.
Luc Moreau and I started to address the problem of disconnecting sites when they are part of chains of distributed indirect references. We designed a protocol for a graceful disconnectionPDCSIA99.