[Stackless] Sprinting at PyCon

Alain Poirier alain.poirier at net-ng.com
Tue Apr 15 08:03:17 CEST 2014


Hi Kristján,

Le 14 avr. 2014 à 09:44, Kristján Valur Jónsson <kristjan at ccpgames.com> a écrit :

> Hi there.
> 
> I'm not entirely sure about the benefit of such a re-architecture.
> As I see it the chief benefits of Stackless over greenlets, are:
> 1) Pickling of runtime state.
> 2) Scheduling and higher level primitives implemented in C
> 3) "stackless" excecution of certain builtin python things. (soft switching as opposed to stack slicing) .  Allows for example soft stack switch in an __enter__/__exit__ method (an experimental feature).   Soft switching primarily allows tasklet state to be pickled and restored, but it is supposedly also for performance of execution of regular python code (this last claim is unproven)
> 
> If we didn't need either, we could implement stackless as a .py module that relies on greenlets.  Then "stackless" would be just another greenlet client.
> 
> Pickling can certainly be implemented in a more slim implementation, but picling of an execution state relies on "soft" switching.  
> Reasoning about the performance is harder but we always want to be fast :)
> 
> So, what can we throw away and how can we restructure to make things simpler, while keeping the essential benefits of stackless?

Sorry, I see my writing of this proposal is confusing because it describes the
"how" before the "why" and also not with the correct priorities.

As I answered to Anselm, my main goal would simply to have a greenlet-like API
in Stackless to be able to share / run the greenlets eco-system (i.e gevent),
but never to remove the soft-switching or the tasklets pickling (you know very
well how badly we depend on this Stackless feature ourself).

It was an attempt to respond to one of the sprint idea: to have gevent running
on Stackless. It’s something I experimented during the Pycon 2013 sprints. But
I found the gevent hub so tightly bound to the greenlets API that I ended using
the « greenlets in stackless »  emulation layer of Syncless https://code.google.com/p/syncless/source/browse/trunk/syncless/greenlet_using_stackless.py.
However, even if that seems to work (not tested in production), emulating the
greenlets on top of Stackless always feels horribly « upside down » to me. Having
a native greenlets API seems more natural.

And then I was wondering if Stackless couldn’t have the same structure than PyPy
where the greenlets and Stackless features are built on a lower level simpler core
API. 

Best regards,
Alain

> -----Original Message-----
> From: stackless-bounces at stackless.com [mailto:stackless-bounces at stackless.com] On Behalf Of Alain Poirier
> Sent: 13. apríl 2014 16:08
> To: stackless at stackless.com
> Subject: [Stackless] Sprinting at PyCon
> 
> Hi all,
> 
> I would like to discuss how it'd be possible or not for Stackless to follow the same path than PyPy:
> 
>  - A simpler Stackless core, with only the 'tealet' / '_continuation' stack
>    switch, writing in C. Exposing the same API than PyPy.
>    IIRC, Krisjan already has such a Stackless version.
> 
>  - All the high level features of Stackless like Tasklets and Channels moved to
>    the 'stackless.py' pure Python module.
> 
>  - An emulation of the greenlets API, in a 'greenlet.py' pure Python module.
> 
>  - Bonus point if these 'stackless.py' and 'greenlet.py' modeules are shared /
>    co-developed with the PyPy project :)
> 
> I see several advantages then:
> 
>  - Greenlets and Stackless features being Python modules, easier experimentations
>    are possible. For example writing other scheduling policy or higher concurrency
>    primitives such like Andrew's select/join.
> 
>  - With a 'greenlet.py' compatible module, lots of softwares like 'gevent' could
>    work without any modification.
> 
>  - Works on 'greenlet.py' and 'stackless.py' can profit both to Python Stackless
>    and PyPy.
> 
> Just my 2 cents,
> Alain
> 
> 
> _______________________________________________
> Stackless mailing list
> Stackless at stackless.com
> http://www.stackless.com/mailman/listinfo/stackless
> 
> _______________________________________________
> Stackless mailing list
> Stackless at stackless.com
> http://www.stackless.com/mailman/listinfo/stackless




More information about the Stackless mailing list