Title: Actors without Borders: Amnesty for Imprisoned State,
Abstract: In concurrent systems, some form of synchronisation is typically needed to
achieve data-race freedom, which is important for correctness and safety. In
actor-based systems, messages are exchanged concurrently but executed
sequentially by the receiving actor. By relying on isolation and non-sharing,
an actor can access its own state without fear of data-races, and the internal
behavior of an actor can be reasoned about sequentially.
However, actor isolation is sometimes too strong to express useful patterns.
For example, letting the iterator of a data-collection alias the internal
structure of the collection allows a more efficient implementation than if each
access requires going through the interface of the collection. With full
isolation, in order to maintain sequential reasoning the iterator must be made
part of the collection, which bloats the interface of the collection and means
that a client must have access to the whole data-collection in order to use the
iterator.
In this paper, we propose a programming language construct that enables a
relaxation of isolation but without sacrificing sequential reasoning. We
formalise the mechanism in a simple lambda calculus with actors and passive
objects, and show how an actor may leak parts of its internal state while
ensuring that any interaction with this data is still synchronised.