[squeak-dev] [ANN] Erlang-style Actors for Squeak

Tony Garnock-Jones tonyg at leastfixedpoint.com
Mon Feb 19 15:23:32 UTC 2018


Hi all,

About a year ago I accidentally a small Erlang-style Actors
implementation for Squeak, based on subclassing Process, using Message
for, er, messages, and using Promise for RPC.

It draws on my experience of Erlang programming in a few ways: it has
links and monitors for between-actor failure signalling; it has library
actors representing sockets; it has a simple tracing facility. There's
crude and no doubt heavily problematic support for basic Morphic
interaction.

Over the past couple of weeks I've been dusting it off, fleshing it out,
and documenting it. (Hence some of the stuff I've been trying out wrt
Promises.)

It's available at http://squeaksource.com/Actors.html.

Installation instructions, documentation and tutorials can be found at

    https://tonyg.github.io/squeak-actors/

(I spent rather too much time writing documentation.)

It's by no means as ambitious as Squeak-E or Henry's Raven - it only
deals with single-image in-image messaging between actors, and doesn't
have the E-style ability to refer to objects within a vat. Instead it
follows Erlang in having references denote actors (i.e. vats, roughly),
rather than anything more fine-grained.

Next steps could be:

 - a Workspace that was actor aware, i.e. each Workspace an actor.
 - better Supervisors.
 - tools for visualizing the current constellation of actors,
   perhaps based on Ned Konz's Connectors?
 - an ActorEventTrace subclass that is able to draw message interaction
   diagrams as a Morph.
 - a screencast of building an IRC client maybe?

Cheers,
  Tony

PS. I did try to port it to Pharo. The first obstacle was lack of class
Promise - fairly easily overcome. The second, worse obstacle was weird
failures and incompatibilities in Socket support. I gave up at that point.

PPS. I'd love to see it running on Cuis.


More information about the Squeak-dev mailing list