User Manual

This documentation is available as a single page for printing.

This library implements the Actor model for Smalltalk, drawing heavily on the design of Erlang and its standard library, OTP.

As such, it brings Smalltalk into the Process-based family of Actor-style languages1.

Processes and Behaviors

Each Actor is a Smalltalk Process with an ordinary Smalltalk object as its Behavior.

Messages, Proxies, RPC, Promises, Timeouts and error handling

Actors send each other messages via Proxies. Messages may be synchronous (RPC) or asynchronous (one-way). Request objects represent both cases. Synchronous calls can be made to block, or to return a Promise of a future reply. Exception handling and timeouts and timers are fully integrated.

Borrowing from Erlang/OTP, actors may be linked to each other. Failures (uncaught exceptions or other crashes) propagate along these links. This gives a robust approach to error handling in a concurrent setting.

Links (and the related monitors) are the foundation for Supervisors, another Erlang/OTP idea. A Supervisor manages the lifecycle of a collection of actors, starting and stopping them and restarting them according to a configurable policy when they fail.

Socket and GUI support

Erlang-inspired TCP/IP server and client socket support is included. Some support for Morphic-based GUI programming with Actors is also provided.

Tracing and debugging

A tracing facility is built in to the message-passing mechanism. An “event tracer” receives fine-grained notifications of important steps in the routing, queueing and delivery of requests, replies and exception messages. It also receives notifications of actor lifecycle events.

  1. The following paper is an excellent survey of the different families of the Actor model:

    “43 Years of Actors: a Taxonomy of Actor Models and Their Key Properties”, Joeri De Koster, Tom Van Cutsem, and Wolfgang De Meuter, Proc. AGERE Workshop, 2016. ACM metadata. Tech Report version (PDF).

    In addition, I have written an informal article on the history of the Actor model