[ANN] YAActL 0.2, Yet Another Actor Library (built in Julia)

Thanks for the inviation! (I am also working on an actor system called Circo, yet to be announced)

I agree that this is not the time to name a specific implementation as “the” Julia actor library. On the other hand, it would be very nice to have an interface defined that allows actor-level compatibility between implementations. Not sure if that interface should be called Actors.jl, AbstractActors.jl, ActorInterface.jl (see ArrayInterface.jl ) or something else.

It is not easy to define that interface, because the actor model has variations with different semantics. E.g. as I understand, in YAActL.jl actors are a bit like processes, e.g. YAActL.receive! is a blocking operation, which is convenient, but implementing it in this way seems to be very tricky when the underlying implementation does not map actors and Julia tasks one-to-one.

The paper 43 Years of Actors: A Taxonomy of Actor Models and Their Key Properties seems like a good start to better understand the history and scale of actor models. It defines four classes: Classic Actors, Active Objects, Asynchronously Communicating Processes (like Erlang, not the CSP model of concurrency) and Communicating Event-Loops. I think that the other three are more or less extensions of the classic model, minus the behaviour change.

Defining a minimalistic interface for the classic model seems like a good start. What do you think?

3 Likes