The formal semantics of Erlang is a bit too complicated to be easily understandable. Much of this complication stems from the desire to accurately model the current implementations (Erlang/OTP R11-R14), which include features (and optimizations) developed during more than two decades. The result is a two-tier semantics where systems, and in particular messages, behave differently in a local and a distributed setting. With the introduction of multi-core hardware, multiple run-queues and efficient SMP support, the boundary between local and distributed is diffuse and should ultimately be removed. In this paper we develop a new, much cleaner semantics, for such future implementations of Erlang. We hope that this paper can stimulate some much needed debate regarding a number of poorly understood features of current and future implementations of Erlang.
[1]
Lars-Åke Fredlund,et al.
Programming distributed erlang applications: pitfalls and recipes
,
2007,
ERLANG '07.
[2]
Koen Claessen,et al.
A semantics for distributed Erlang
,
2005,
ERLANG '05.
[3]
Lars-Åke Fredlund,et al.
McErlang: a model checker for a distributed functional programming language
,
2007,
ICFP '07.
[4]
Lars-Åke Fredlund,et al.
A framework for reasoning about Erlang code
,
2001
.
[5]
Lars-Åke Fredlund,et al.
A more accurate semantics for distributed erlang
,
2007,
ERLANG '07.
[6]
Joe Armstrong,et al.
Making reliable distributed systems in the presence of software errors
,
2003
.