Other actor systems

There do not seem to be very many other implementations of the actor model for Squeak.


The Actalk system dates back to 1989, and was subsequently ported to Squeak. A version that can be loaded in to Squeak is still available on SqueakMap:

Installer squeakmap update; install: 'Actalk'

The system is described in a paper:

“Actalk: a Testbed for Classifying and Designing Actor Languages in the Smalltalk-80 Environment”, Jean-Pierre Briot, Proc. ECOOP, 1989. Full ECOOP’89 conference proceedings. PDF (scan of proceedings). PDF (alternate version).

While I only have a shallow understanding of Actalk, it seems that differences between Actalk and this system include:

  • our Actor class subclasses Process
  • we use Promises in a pervasive convention for RPC to Actors
  • we allow any object to be the behavior of an Actor
  • we offer links and monitors

Squeak-E and Raven

Research into object capability systems has led to a number of implementations of languages and libraries inspired by Mark Miller’s E language:

“Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control”, Mark Samuel Miller, PhD. dissertation, Johns Hopkins University, 2006. Dissertation resource page. PDF.

In particular, Squeak-E is “a project putting E concepts into Squeak”.

The design and goals of E and Squeak-E go far beyond the ambition of this library. In particular, Squeak-E aims to support a concept called refraction which would not only allow secure actor-style interaction among parties that do not necessarily trust one another, but also secure reflection, management, monitoring, debugging and administration of such a system. Because our library subclasses Process but does not otherwise change the VM or any other aspect of the image, it cannot provide such features.

Another major difference is in the vat concept of E. A vat is analogous to an actor in our system, but is like a small segment of a running image, containing multiple distinct and individually addressable objects. Where in our system an ActorProxy denotes an actor, in Squeak-E (and E), a reference denotes an object within a vat, rather than denoting an entire vat. This allows for a more flexible, fine-grained style of programming with concurrent objects.

Finally, E has special syntactic and language support for working with promises of various kinds, while Squeak and our library implement Promises as an ordinary objects in the system.

The original Squeak-E implementation was not integrated with the core of Squeak, and does not seem to be available any more.

However, in recent months, Henry House has been working on reviving the Squeak-E ideas, based on some of the original code, in a project called Raven, available as part of the Cryptography project on SqueakSource.