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:
exitandshutdown,self(),onmessageand 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.