Goless: Go-like semantics built on top of Stackless Python
github.com
github.com
http://www.stackless.com/wiki/Tasklets http://www.stackless.com/wiki/Channels
The benefits to new frameworks based on Stackless are obvious if you use Stackless.
It's really quite a simple library, as all the hard work is done by gevent/stackless and most of the hard API decisions were copied from Go. I'm not smart enough to invent this stuff from scratch!
Yes, these things have been used in the past. No-one denies that, and there are copious references where Stackless was based on Limbo. Every time something new comes up which uses old technology, there's always those who have to assume it means that it insults the old adopters in some way. Or that fealty has to be paid to the old adopters. At some level this becomes tiresome and unhelpful.
It would help, if those promoting the new old technology would present it as bringing back something from the past, instead of a magic new technology.
Being a long time gevent user, I found goroutines pretty familiar and even unspectacular (no pool.map?!). What really converted me to Go was all of the other ways I found writing Go programs to be more pleasant and less error prone than Python programs:
* consistent formatting for all code
* superior distribution story
* compiler magnitudes faster and more effective than pylint
* programs run faster and use far less memory
* far simpler semantics make it easy to read
* higher quality standard components (net/http, eg)
What I traded for this was a 10-20% drop in productivity, which I was fine with. I use Python for all sorts of quick & dirty tasks still, including some batch processing where there's a big discovery phase, but I write all my software in Go.
That's not a statement of pride or fanboyism or whatever... it's just the nature of the two languages.
However, I have recommended and continue to recommend that if A: you are using Python B: you want something Go-like and C: Python's performance is currently good enough for you, Stackless/gevent/perhaps this library is a much better solution than translating tons of code to another language. You can get a lot of the bang-for-the-buck with this approach without incurring huge rewrite costs. If you're starting from scratch with Go-like needs, Go is a better starting place IMHO, but Stackless/gevent is definitely "good enough", no sarcasm.
It is, IMHO, a very underestimated library in the Python community. And yes, I know lots of people know it exists... this is a statement of my yet-higher opinion of it.