In distributed computing systems, function entities live on a single machine or node, while data is shared between nodes in order to carry out computation. Such computation model gives rise to undesirable system characteristics, such as increased network load and data vulnerabilities, both caused by sharing large amounts of information between nodes. The introduction of fog computing architectures, mitigates these problems by moving part of the computation to edge devices. To further tackle these problems, this work explores the use of the call-by-move parameter passing semantics to enable function mobility between many nodes, effectively reducing network load and avoiding unnecessary information sharing. To build the new parameter passing semantics, we use Elixir's metaprogramming capabilities, introducing new language constructs and functions. Furthermore, we accompany the implementation by a formal specification of the system using Athena. In order to show the usability of this approach, we implement an exemplar application that demonstrates reduced network load and a reduced amount of shared data, when computation, and hence communication, load increases for each of the nodes in the network.
Bonet et al. (Thu,) studied this question.