[Stackless] Select Revisited Re: Planning Stackless Lite
andrewfr_ice at yahoo.com
Sun May 23 22:38:23 CEST 2010
--- On Sat, 5/15/10, Péter Szabó <ptspts+stackless at gmail.com> wrote:
> Please be aware that it behaves very differently from real
> Stackless: it implements classes and methods named like those in
> Stackless, but they behave differently. But maybe for your use case the
> difference is not significant.
Well I have just implemented a new version of select support. This select is implemented roughly the same way it is in Plan9. Now the API looks like.
tasklet.select(list of channel operations)
in this version, internally channel_action does not do much. The channel class has two new methods (a suggestion of my friend Kevin) - receiveCase and sendCase. Both these methods return channel operations. This works out nicely.
I need to put back in channel callbacks and channel preferences. channel_action may disappear in a future version. Although the code is still raw, I can e-mail you a version. Or post it somewhere - I don't think I can attach stackless.py to this e-mail.
Once I finish the code, I would like to take another shot at using pypy translate and creating a pypy-c implementation. If I have more time, I may implement select() as a language feature.
That said, However the amount of changes of a Plan9 like select() in C based Stackless Python is large. I have a version where changes are more localized but I don't think it is as elegant.
> FYI This select thing quite interesting!
Thanks I think select is really interesting. Working with Python makes it a pleasure to implement.
Hopefully the folks at Europython think so too :-) As another proof-of-concept, I would like to implement join classes.
More information about the Stackless