>The only thing missing are lightweight green threads.
...Ummm... Chicken already has that. It implements srfi-18 style pre-emptive coroutines which do qualify as green threads by the standard definition. They all run in a single thread, so you can parallelize without an explicit fork(2) like you can in Erlang and Go, but they are Green threads.
https://wiki.call-cc.org/man/4/faq#does-chicken-support-nati...
Chicken does have fork, concurrent native callbacks and mpi, among other stuff, so you can do parallel stuff. It's just more expensive.
But that's just a guess, if you really want to know, I'd ask Felix: He's the lead developer on Chicken, and he's the one who actually wrote the thing and pushed the commit (see https://code.call-cc.org/cgi-bin/gitweb.cgi?p=chicken-core.g...). He's also pretty approachable.
https://wiki.call-cc.org/man/4/Unit%20srfi-18
"The disadvantage is that execution of Scheme code on multiple processor cores is not available."
Is there any solid support for message passing or other multi-processing?
There's concurrent-native-callbacks, which allows you to run Chicken callbacks inside other threads http://wiki.call-cc.org/eggref/4/concurrent-native-callbacks.
Chicken also has MPI support, through http://wiki.call-cc.org/eggref/4/mpi, but I don't really know MPI well.
Pthreads allows you to send C code (not scheme code) out to a pthread pool for execution. http://wiki.call-cc.org/eggref/4/pthreads
Mailbox allows for erlang-style threadsafe mailboxes (FIFO queues) http://wiki.call-cc.org/eggref/4/mailbox, and mailbox-threads attaches a mailbox to each thread http://wiki.call-cc.org/eggref/4/mailbox-threads. Finally, remote-mailbox-threads allows for mailbox send/receives across threads through zmq http://wiki.call-cc.org/eggref/4/remote-mailbox-threads.
Not optimal, but it can all work.