This is exciting news indeed! :-D
I'm curious though as to how this will work. This sounds a lot like actors for newLISP, but how will the receiving end process these messages? And as actors need to be able to coordinate with one another, will there be a way to know which actor sent you the message so that you can store a reference to it so that you can send a message back to it? Will this allow for a user-defined main-loop in each spawned process?
One really great actor library that I'm using right now is called
PLActorKit. It's for Cocoa/Objective-C, but the design is neat and the ideas universal.
It has support for two paradigms of Actors:
Paradigm #1: Send/Receive
=================
This is illustrated by the "A Simple Echo Actor" example in the above link. The basic idea is that each thread can call send/receive on another actor. 'receive' blocks and returns messages with attached objects, and each message has a reference two who sent the message so you can send a message back to that actor.
What's nifty about this paradigm is that it allows each actor to maintain its own runloop, allowing it to perform other tasks besides simply sending and receiving messages. The receive method can take an optional timeout, and therefore you can have code that checks to see if any messages have arrived, and if none have after a timeout, the actor can go ahead and perform other tasks.
Paradigm #2: Runloop handled by actor system
=============================
This is illustrated by the "Transparently Proxying Objective-C Messages with Actors" section in the link above. In this paradigm, each actor has a main run loop that is implemented by the actor system itself, not the developer.
It allows for even cleaner code at the possible expense of flexible functionality. Instead of writing your own runloop that reads in messages and calls the appropriate functions, this method is more of an RPC mechanism. You essentially call a function directly on an actor (instead of composing a message), and that function will get called for you, and a possible response returned.
In this paradigm, unless some sort of "input source hook" is provided by the actor system, the main runloop can do nothing else other than receive RPCs and execute them, it cannot for example, check with some database of its own accord, it must be told to by another actor.
==========
Another question, in both paradigms, is the question of asynchronous message passing. Will the system allow for this, or will each message/function-invocation block? And if it does allow for it, how will responses be read? Will it incorporate the concept of "promises" aka "futures"? Or will the actor be required to simply perform another receive call to check and see if a message has arrived with the response from the other actor?
Sorry for all the questions, this is just a topic of great interest to me.