Actors
Principal Investigators: Gul Agha
For many reactive programs (where concurrency is part of the problem specification), non-determinism is inherent to the problem and alternatives to pure shared memory are attractive. In this context, we explore actor based models - a concept of modeling each object as an autonomous agent or actor, operating potentially in parallel with others.
The Actor model of programming enables programs to be decomposed as self-contained, autonomous, interactive, asynchronously operating components that, by default, communicate using asynchronous message-passing. The asynchrony in the model allows us to model non-determinism inherent in reactive systems, cloud computing, sensor networks and modules requiring history-sensitive behavior. Asynchronous operation allows flexibility in placement and scheduling actors on different cores, as well as facilitating mobility. This allows the runtime to preserve locality, balance loads, and manipulate schedules in order to enforce synchronization constraints, meet deadlines, minimize energy consumption, and preserve quality of service. Not surprisingly, because of the need to program peer-to-peer systems, web services and applications, and now multi-core processor architectures, there has been a growth of interest in languages based on the actor model as well as actor libraries and frameworks.
Our focus is driven by the separation of concerns philosophy — how to separate the specification of individual actors and the specification of aggregate multi-actor constraints such as synchronization, resource allocation, quality of service, reliability, energy consumption, etc., and how to efficiently implement these constraints in the context of an actor-oriented run-time.