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:
- we use
Promises in a pervasive convention for RPC to
- we allow any object to be the behavior of an
- 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:
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
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.