Following the discussion in another thread now we have JuliaActors, a yet small Julia GitHub group of enthusiasts dedicated to build an actors ecosystem in Julia. Since this is not anymore a discussion about one library, I open a new topic.
We have concluded that we should build a Julian approach on the classical Actor Model:
The Classic Actor Model formalises the Actor Model in terms of three primitives: create, send and become. The sequential subset of actor systems that implement this model is typically functional. Changes to the state of an actor are aggregated in a single become statement. Actors have a flexible interface that can similarly be changed by switching the behaviour of that actor. (from 43 Years of Actors)
We will start as a 1st step with a minimal interface (spawn, send and become) satisfying the above definition and allowing actors from different implementations to communicate. This therefore will provide a 4th primitive, a link (as Agha called it) over which actors can communicate.
With that (building on Julia’s primitives) we will be able to run Agha’s examples.
@fborda then pointed out that there is more to actors and that a Julian actor library should be able to compete with languages/ecosystems like Erlang/Elixir and Scala/Akka:
Therefore in a 2nd step we have to complement the four elements above with some more like:
exit
andshutdown
,self()
,onmessage
and an internal messaging protocol which would allow to plugin an API,- a registry, which could be a service of a core actor library to other actor libraries using it,
- …
Other actor libraries reimplementing the first four primitives should be able to plug this in too. This then becomes looking more like a “standard implementation”.
Then in a 3rd step we can start to develop it further and to build the infrastructure around it. That is where the real fun starts.
Since we have some work done and some experience what works, I hope that we can pull things together and progress quickly. Keep tuned!
@oschulz contributed his old Actors.jl library . Now that we have kind of a roadmap, I think we can organize work around that one.