This section contains topics that are under development and have not been formalized and added to formal specification or implemented.
Problem: current specification doesn’t cover the semantics of registry
if the remote processes can be put into registry and if we can send
messages to such processes using nsend
.
Here is a prosal for semantics that is summary of the email thread
References are the following:
Uni - stands for unified semantics for Future Erlang
Spec - stands for formal CH specification
ML - stands for mailing list
Semantics:
It should be possible to register remote processes in local registry (and local processes in remote registry) Rationale: [Uni. Sec 2.3]
If a remote process is stored in registry then Node Controller starts monitoring that process Rationale: (Implicit requirement in because node should be able to receive notification about process death)
If a process dies and we get asynchronous notification then we remove process from registry Rationale: [Uni. Definition 18, Uni. Table 12]
nsend
nsend
should be implemented in terms of lower level function whereis
and send
nsend
is process does not exists in registry then message got silently dicarded.
Possible problems:
Current proposal opens space for race conditions, we should understand if those are relevant for us, and could or could not be solved
a. 2.1 adds a possibility for changing label beetwen where is and send, so message will be sent to the wrong process.