Oct 11, 2017 - semantics, concurrency abstractions, object-oriented programming, software engineering, Scoop, Groove. Model is not as straightforward. Extending the semantics workbench towards Erlang would be interesting future work. Formal Model and Toolchain. A unified semantics for future Erlang.
After this discussion I've pushed (and Tim applied following changes to site): 1. Link to unified semantics for future erlang paper in Resources. But I need that we have to structure somehow relevant articles in 'Documentation' section (but it's an offtopic in this thread). Development wiki page, I think it may be used as a sandbox for discussing changes to semantics: I also bumped there what we have desided (?) about semantics. Monitoring of the registry is uncovered for now. I think that if no-one will have an objections for this plan than I can start working on in on the next week.
Current proposal for new rules (it's not change as these topics were not specified in semantics) will solve the problem we have started with. But it's still not a full specification for Registry.
Some some work is still required. Alexnder On Tuesday, 13 January 2015 14:29:03 UTC+3, Tim Watson wrote. Now, this registry supports many of the features of gproc and was in fact modelled on gproc's design. It does.not. however provide a clustered/distributed view, because I do not see that as it's core purpose. My idea when writing distributed-process-registry was that people would add their own clustering/distributed mechanism on top of it, running the registry process on multiple nodes and adding their own application specific coordination layer on top of that.
Such a coordination layer could be based on Control.Distributed.Process.Global or a paxos-esque distributed transaction mechanism or something else. Whatever else really, since it's up to the user to decide what semantics they want to add for coordinating registered names across multiple nodes. Register a process with the local registry (asynchronous). This version will wait until a response is gotten from the management process. The name must not already be registered.
The process need not be on this node. A bad registration will result in a The process to be registered does not have to be local itself. Distributed-process have an additional method nsendRemote::: a = -a - that is smth about (Name, Node)! Message, but not (Pid, Node)! Message (do we miss it completely?, is it not needed anymore). C.:: a = - a - (in unsafePrimitives). Named send to a process in the local registry (asynchronous) Message is not serialized (so we may assume it's only for local processes), but documentation says nothing about semantics and it reality message just got dropped.
(we have a badarg in erlang). I appreciate that this is unsafe module and we may have non-obvious semantics but then it should be clearly documented. Same story here: - Named send to a process in the local registry (asynchronous). This function makes /no/ attempt to serialize and (in the case when the - destination process resides on the same local node) therefore ensure that - the payload is fully evaluated before it is delivered. UnsafeNSend:: Serializable a = String - a - Process unsafeNSend = Unsafe.nsend Summing all this up.
I think we should somehow update distributed-process, we need to specify general strategy either we target uniform semantics or current erlang implementation. If we are selecting former, then we need to update implementation to support remote processes in registry and sending to them using same nsend API. If we are selecting the latter we need to ban remote processes in local registry and update documentation.
Alexander.