This may be tangential to the discussion but in the past, I have used the stackless.py module in conjunction with CPython and greenlets to rapidly prototype parts of Go's model that are not present in Stackless, i.e. the select (ALT) language feature.
Rob Pike and Russ Cox were really helpful in answering my questions. Newer stackless.py implementations use
continuelets so look for an older PyPy implementation.
I have also prototyped a subset of Polyphonic C# join patterns. After I got the prototype running, I had an interesting discussion with the authors of "Scalable Join Patterns."
Yes saw that. And actually some part of the Task code is based on stackless.py but using greenlets, Channels have been slightly modified to be thread-safe and support buffering. Did you release your code somewhere ? It could be interesting to put the experience further.
For networking support, I run Twisted as a tasklet. There are a few tricks to make Stackless and Twisted co-operate.
I plan to release a new version of flower this week. For now i am also running a libuv eventloop in a tasklet, but since the tasklet need to be blocking for performance, i am writing some new code to run the tasklet in its proper thread when needed. Not sure how it will go.
Current implementation handle events when the scheduler come on the eventloop which isn't the more efficient way imo.
Another thing to considers is also rust. Rust is using libuv and put the eventloop in its own task thread :
I find this idea quite elegant.