<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:12pt"><div><span>Hi Folks:</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">Some thoughts:</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande',
 sans-serif; background-color: transparent; font-style: normal;">In playing with stackless.py, I liked the original version more than the current version.</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">In the original stackless.py, one had the choice of low-level concurrency, either greenlets if working with CPython, PyPy's coroutine library.</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px;
 font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">The latest version of stackless.py removed greenlet support. This is a pity. I liked the layering, separating high level API from low level concurrency. I grew up reading Andrew Tannenbaum and Douglas Comer. </div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">I originally directly hacked on stackless.py. Now I realise this was a really bad idea. One reason I haven't put join and select stuff in github is that I am trying to refactor the code so I can get it
 running on C based Stackless Python, CPython with greenlets, and PyPy. I have started. I have to revisit my notes to give specifics but I found that it helps if the scheduler stuff has more API functions. So one can even experiment with, say a channel re-implementation with Stackless Python (as opposed to with stackless.py). </div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">example:</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div
 style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">selectStackless.py, code should look something like</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"># import underlying functionality</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">import stackless</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family:
 HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"># however we export selectStackless.py functionality</div><pre style="word-wrap: break-word;">__all__ = 'run getcurrent getmain schedule tasklet channel select'.split()</pre><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"># we re-implement channel </div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">class
 channel(object):</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">.</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">.</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"># and select</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">def select(.....):</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica,
 Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">       </div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">layer 3 - select, join, channel-reimplementations,  whatever else </div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">layer 2 - channels</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande',
 sans-serif; background-color: transparent; font-style: normal;">layer 1 - Tasklets, scheduler, atomic </div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">layer 0 - tealets, greenlets</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">As for PyPy continuations. I think the current problem is with pickling. When I have time, I'll look for the reference in the PyPy mailing list.</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family:
 HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">Cheers,</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">Andrew</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12pt;"><div style="font-family:
 HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12pt;"><div class="y_msg_container">Message: 1<br>Date: Sun, 13 Apr 2014 12:07:37 -0400<br>From: Alain Poirier <<a ymailto="mailto:alain.poirier@net-ng.com" href="mailto:alain.poirier@net-ng.com">alain.poirier@net-ng.com</a>><br>To: <a ymailto="mailto:stackless@stackless.com" href="mailto:stackless@stackless.com">stackless@stackless.com</a><br>Subject: [Stackless] Sprinting at PyCon<br>Message-ID: <<a ymailto="mailto:5AC6D14B-8E76-488A-B07A-52A6008199A0@net-ng.com" href="mailto:5AC6D14B-8E76-488A-B07A-52A6008199A0@net-ng.com">5AC6D14B-8E76-488A-B07A-52A6008199A0@net-ng.com</a>><br>Content-Type: text/plain; charset=windows-1252<br><br>Hi all,<br><br>I would like to discuss how it'd be possible or not for Stackless to follow the<br>same path than PyPy:<br><br>  - A simpler Stackless core, with only the 'tealet' / '_continuation' stack<br> 
   switch, writing in C. Exposing the same API than PyPy.<br>    IIRC, Krisjan already has such a Stackless version.<br><br>  - All the high level features of Stackless like Tasklets and Channels moved to<br>    the 'stackless.py' pure Python module.<br><br>  - An emulation of the greenlets API, in a 'greenlet.py' pure Python module.<br><br>  - Bonus point if these 'stackless.py' and 'greenlet.py? modeules are shared /<br>    co-developed with the PyPy project :)<br><br>I see several advantages then:<br><br>  - Greenlets and Stackless features being Python modules, easier experimentations<br>    are possible. For example writing other scheduling policy or higher concurrency<br>    primitives such like Andrew's select/join.<br><br>  - With a 'greenlet.py' compatible module, lots of softwares like ?gevent? could<br>    work without any modification.<br><br>  -
 Works on 'greenlet.py' and 'stackless.py' can profit both to Python Stackless<br>    and PyPy.<br><br>Just my 2 cents,<br>Alain<br><br><br><br><br>------------------------------<br><br>Message: 2<br>Date: Mon, 14 Apr 2014 09:48:56 +0200<br>From: Anselm Kruis <<a ymailto="mailto:a.kruis@science-computing.de" href="mailto:a.kruis@science-computing.de">a.kruis@science-computing.de</a>><br>To: <a ymailto="mailto:stackless@stackless.com" href="mailto:stackless@stackless.com">stackless@stackless.com</a><br>Subject: Re: [Stackless] Sprinting at PyCon<br>Message-ID: <<a ymailto="mailto:534B92E8.5090102@science-computing.de" href="mailto:534B92E8.5090102@science-computing.de">534B92E8.5090102@science-computing.de</a>><br>Content-Type: text/plain; charset="windows-1252"; format="flowed"<br><br>Hi Alain,<br><br>another unique feature of Stackless is pickling/unpickling of tasklets <br>and many other python types. This feature is essential for
 many <br>applications and probably needs some additional C-code besides 'tealet' <br>/ '_continuation'. That said I like your proposal, but I doubt that we <br>have enough man power to implement it.<br><br>Cheers<br>   Anselm<br><br>Am 13.04.2014 18:07, schrieb Alain Poirier:<br>> Hi all,<br>><br>> I would like to discuss how it'd be possible or not for Stackless to follow the<br>> same path than PyPy:<br>><br>>    - A simpler Stackless core, with only the 'tealet' / '_continuation' stack<br>>      switch, writing in C. Exposing the same API than PyPy.<br>>      IIRC, Krisjan already has such a Stackless version.<br>><br>>    - All the high level features of Stackless like Tasklets and Channels moved to<br>>      the 'stackless.py' pure Python module.<br>><br>>    - An emulation of the greenlets API, in a 'greenlet.py' pure Python
 module.<br>><br>>    - Bonus point if these 'stackless.py' and 'greenlet.py? modeules are shared /<br>>      co-developed with the PyPy project :)<br>><br>> I see several advantages then:<br>><br>>    - Greenlets and Stackless features being Python modules, easier experimentations<br>>      are possible. For example writing other scheduling policy or higher concurrency<br>>      primitives such like Andrew's select/join.<br>><br>>    - With a 'greenlet.py' compatible module, lots of softwares like ?gevent? could<br>>      work without any modification.<br>><br>>    - Works on 'greenlet.py' and 'stackless.py' can profit both to Python Stackless<br>>      and PyPy.<br>><br>> Just my 2 cents,<br>> Alain<br>><br>><br>> _______________________________________________<br>>
 Stackless mailing list<br>> <a ymailto="mailto:Stackless@stackless.com" href="mailto:Stackless@stackless.com">Stackless@stackless.com</a><br>> <a href="http://www.stackless.com/mailman/listinfo/stackless" target="_blank">http://www.stackless.com/mailman/listinfo/stackless</a><br>><br><br>-- <br>  Dipl. Phys. Anselm Kruis                       science + computing ag<br>  Senior Solution Architect                      Ingolst?dter Str. 22<br>  email <a ymailto="mailto:A.Kruis@science-computing.de" href="mailto:A.Kruis@science-computing.de">A.Kruis@science-computing.de</a>             80807 M?nchen, Germany<br>  phone +49 89 356386 874  fax 737               www.science-computing.de<br>-- <br>Vorstandsvorsitzender/Chairman of the board of
 management:<br>Gerd-Lothar Leonhart<br>Vorstand/Board of Management:<br>Dr. Bernd Finkbeiner, Michael Heinrichs, <br>Dr. Arno Steitz, Dr. Ingrid Zech<br>Vorsitzender des Aufsichtsrats/<br>Chairman of the Supervisory Board:<br>Philippe Miltin<br>Sitz/Registered Office: Tuebingen<br>Registergericht/Registration Court: Stuttgart<br>Registernummer/Commercial Register No.: HRB 382196<br><br><br><br><br>------------------------------<br><br>_______________________________________________<br>Stackless mailing list<br><a ymailto="mailto:Stackless@stackless.com" href="mailto:Stackless@stackless.com">Stackless@stackless.com</a><br><a href="http://www.stackless.com/mailman/listinfo/stackless" target="_blank">http://www.stackless.com/mailman/listinfo/stackless</a><br><br>End of Stackless Digest, Vol 123, Issue 9<br>*****************************************<br><br><br></div>  </div> </div>  </div> </div></body></html>