Re: goless
Rob Galanakis <[email protected]> Fri, 6 Jun 2014 08:43:50 -0500
| Newsgroups | gmane.comp.python.stackless |
|---|---|
| Message-ID | <CABaNhwp6syjk_MpnhxvuezgqaNrzB3D78+kDgch-RFJO1eKJDA@mail.gmail.com> |
--===============7823649113441180789== Content-Type: multipart/alternative; boundary=20cf307d064c3afb4a04fb2b0de6 --20cf307d064c3afb4a04fb2b0de6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable OK, I did some proper benchmarking of CPython/PyPy and stackless/gevent combinations: https://goless.readthedocs.org/en/latest/body.html#benchmarks And made the benchmarks easier to run and report. The common trend is: PyPy/stackless =3D x CPython/stackless =3D 2x-5x PyPy/gevent =3D 5-10x CPython/gevent =3D 15x-30x On Tue, Jun 3, 2014 at 4:56 PM, Rob Galanakis <[email protected]> wrote: > Yes there is a gevent backend. Has been from day one. You can force one > over the other by setting the GOLESS_BACKEND envvar to 'stackless' or > 'gevent'. > > > On Tue, Jun 3, 2014 at 7:45 AM, Kristj=C3=A1n Valur J=C3=B3nsson < > kristjan-hPzAiOG7rkJWk0Htik3J/[email protected]> wrote: > >> I also think that gevent must be somehow sub-optimal. I=C2=B4ve seen >> comparisons of python web frameworks where gevent based backends don=E2= =80=99t >> perform that well in terms of latency. >> >> Waiting for your blog, I=C2=B4m still a bit confused at what you are doi= ng. >> did you implement goless with a gevent backend? >> >> K >> >> >> >> *From:* [email protected] [mailto: >> [email protected]] *On Behalf Of *Rob Galanakis >> *Sent:* 30. ma=C3=AD 2014 12:47 >> >> *To:* The Stackless Python Mailing List >> *Subject:* Re: [Stackless] goless >> >> >> >> I was doing some benchmarking of goless under gevent and stackless. The >> results are pretty astonishing when you do this stuff in the interpreter= ! I >> will put it on GitHub later today or tomorrow and also write up a blog. >> It's possible our implementation is just not a good one regarding gevent= , >> but I sort of doubt it. The stackless/gevent specific code is minimal >> (goless/backends.py) and I don't see anything ugly that we're doing ther= e. >> Maybe something is idiomatically very different, or is gevent performanc= e >> just not very good? >> >> Anyway, it should be easy to profile eventually. >> >> >> >> Using backend StacklessBackend >> >> Benchmarking channels: >> >> 0.13s: Sync >> >> 0.14s: Async >> >> 0.13s: Buffered(1000) >> >> Benchmarking select: >> >> 0.29s: No default case. >> >> 0.15s: With default case. >> >> >> >> Using backend GeventBackend >> >> Benchmarking channels: >> >> 0.87s: Sync >> >> 0.83s: Async >> >> 0.82s: Buffered(1000) >> >> Benchmarking select: >> >> 1.12s: No default case. >> >> 0.16s: With default case. >> >> >> >> On Tue, May 27, 2014 at 7:17 AM, Kristj=C3=A1n Valur J=C3=B3nsson < >> kristjan-hPzAiOG7rkJWk0Htik3J/[email protected]> wrote: >> >> Well, I started doing some documentation using sphinx the other day but >> got sidetracked. >> >> The current documentation lives in the modules and in the unittests. >> >> I guess the only fiddly bit about it currently is to start it up. >> Currently one has to explicitly get the main loop running. This is beca= use >> stackless _*used*_ to only allow stackless.run() on the main tasklet. >> The latest versions don=E2=80=99t. >> >> Once that restriction is removed, having the main loop run implicitly >> much as the gevent library does (when the Hub singleton is requested) is >> easy. >> >> I need to put that little brick in there, and then everything will run >> smoothly J >> >> >> >> K >> >> >> >> *From:* [email protected] [mailto: >> [email protected]] *On Behalf Of *Aleksandar Radulovic >> *Sent:* 23. ma=C3=AD 2014 11:36 >> >> >> *To:* The Stackless Python Mailing List >> *Subject:* Re: [Stackless] goless >> >> >> >> Speaking of which, when can we see some more documentation or examples o= n >> stacklesslib? ;) >> >> >> >> I was fiddling with it the other day and couldn't find any good enough >> examples of stacklesslib usage.. >> >> >> >> Cheers, >> >> alex >> >> >> >> On Tue, May 20, 2014 at 12:13 PM, Kristj=C3=A1n Valur J=C3=B3nsson < >> kristjan-hPzAiOG7rkJWk0Htik3J/[email protected]> wrote: >> >> You may want to take a look at the latest version of =E2=80=9Cstackless= lib=E2=80=9D, >> particularly the stacklesslib.wait module. We now have =E2=80=9Cwaitabl= e=E2=80=9D >> channels, so that you can do similar things to >> >> select, e.g. >> >> >> >> c1 =3D stacklesslib.wait.WaitChannel() >> >> c2 =3D stacklesslib.wait.WaitChannel() >> >> =E2=80=A6 >> >> for c in stacklesslib.wait.iwait([c1, c2]): >> >> if c is c1: percolate() >> >> elif c is c2: promulgate() >> >> >> >> A =E2=80=9CWaitChannel=E2=80=9D is ready when its balance is non-zero. >> >> There are also =E2=80=9CSendable=E2=80=9D and =E2=80=9CReceivable=E2=80= =9D adapters for WaitChannels to >> in order to wait for either positive or negative balance. >> >> >> >> The stacklesslib.util.QueueChannel() is a channel with a fifo queue, >> which can be either unbounded (the default) or have a maximum length. T= his >> is, I believe, similar to Go=E2=80=99s channels. >> >> >> >> K >> >> >> >> >> >> *From:* [email protected] [mailto: >> [email protected]] *On Behalf Of *Christian Tismer >> *Sent:* 18. ma=C3=AD 2014 00:00 >> *To:* The Stackless Python Mailing List >> *Subject:* Re: [Stackless] goless >> >> >> >> On 18.04.14 12:46, Kristj=C3=A1n Valur J=C3=B3nsson wrote: >> >> Hi, I though=E2=80=99t I=E2=80=99d mention here an experimental problem = that a few of my >> colleagues worked on during PyCon: >> >> Goless! >> >> http://goless.readthedocs.org/en/latest/index.html >> >> >> >> It also shows how more complex behavior can be built on top of the >> relatively simple primitives that stackless provides. >> >> >> (a bit late, but anyway better than never) >> >> Yes, quite neat thing. >> This could be used as an interesting example for the Stackless talk. >> >> cheers - Chris >> >> p.s.: actually, I'm studying Go a bit, in order to understand >> how they do stuff, how they lock, how they schedule, ... >> >> -- >> >> Christian Tismer :^) [email protected] >> >> Software Consulting : http://www.stackless.com/ >> >> Karl-Liebknecht-Str. 121 : http://www.pydica.net/ >> >> 14482 Potsdam : GPG key -> 0xFB7BEE0E >> >> phone +49 173 24 18 776 fax +49 (30) 700143-0023 >> >> >> _______________________________________________ >> Stackless mailing list >> [email protected] >> http://www.stackless.com/mailman/listinfo/stackless >> >> >> >> >> >> -- >> a lex 13 x >> http://a13x.net | @a13xnet >> >> >> _______________________________________________ >> Stackless mailing list >> [email protected] >> http://www.stackless.com/mailman/listinfo/stackless >> >> >> >> _______________________________________________ >> Stackless mailing list >> [email protected] >> http://www.stackless.com/mailman/listinfo/stackless >> > > --20cf307d064c3afb4a04fb2b0de6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">OK, I did some proper benchmarking of CPython/PyPy and sta= ckless/gevent combinations:=C2=A0<a href=3D"https://goless.readthedocs.org/= en/latest/body.html#benchmarks">https://goless.readthedocs.org/en/latest/bo= dy.html#benchmarks</a><div> And made the benchmarks easier to run and report.<br><div><br></div><div>Th= e common trend is:</div><div>PyPy/stackless =3D x</div><div>CPython/stackle= ss =3D 2x-5x</div><div>PyPy/gevent =3D 5-10x</div><div>CPython/gevent =3D 1= 5x-30x</div> <div><br></div></div></div><div class=3D"gmail_extra"><br><br><div class=3D= "gmail_quote">On Tue, Jun 3, 2014 at 4:56 PM, Rob Galanakis <span dir=3D"lt= r"><<a href=3D"mailto:[email protected]" target=3D"_blank">rob.gal= [email protected]</a>></span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"><div dir=3D"ltr">Yes there is a gevent backe= nd. Has been from day one. You can force one over the other by setting=C2= =A0the GOLESS_BACKEND envvar to 'stackless' or 'gevent'.</d= iv> <div class=3D"HOEnZb"><div class=3D"h5"><div class=3D"gmail_extra"><br><br>= <div class=3D"gmail_quote"> On Tue, Jun 3, 2014 at 7:45 AM, Kristj=C3=A1n Valur J=C3=B3nsson <span dir= =3D"ltr"><<a href=3D"mailto:kristjan-hPzAiOG7rkJWk0Htik3J/[email protected]" target=3D"_blank">kri= stjan-hPzAiOG7rkJWk0Htik3J/[email protected]</a>></span> wrote:<br><blockquote class=3D"gmail_quot= e" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div lang=3D"EN-US" link=3D"blue" vlink=3D"purple"> <div> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">I also think that gevent = must be somehow sub-optimal.=C2=A0 I=C2=B4ve seen comparisons of python web= frameworks where gevent based backends don=E2=80=99t perform that well in terms of latency.<u></u><u></u></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">Waiting for your blog, I= =C2=B4m still a bit confused at what you are doing. =C2=A0did you implement= goless with a gevent backend?<u></u><u></u></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">K<u></u><u></u></span></p= > <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></spa= n></p> <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm = 4.0pt"> <div> <div style=3D"border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0cm = 0cm 0cm"> <p class=3D"MsoNormal"><b><span style=3D"font-size:11.0pt;font-family:"= ;Calibri","sans-serif"">From:</span></b><span style=3D"font-= size:11.0pt;font-family:"Calibri","sans-serif""> <a hre= f=3D"mailto:[email protected]" target=3D"_blank">stackless-bo= [email protected]</a> [mailto:<a href=3D"mailto:stackless-bounces@stackle= ss.com" target=3D"_blank">[email protected]</a>] <b>On Behalf Of </b>Rob Galanakis<br> <b>Sent:</b> 30. ma=C3=AD 2014 12:47</span></p><div><div><br> <b>To:</b> The Stackless Python Mailing List<br> <b>Subject:</b> Re: [Stackless] goless<u></u><u></u></div></div><p></p> </div> </div><div><div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> <div> <p class=3D"MsoNormal">I was doing some benchmarking of goless under gevent= and stackless. The results are pretty astonishing when you do this stuff i= n the interpreter! I will put it on GitHub later today or tomorrow and also= write up a blog. It's possible our implementation is just not a good one regarding gevent, but I sort of doub= t it. The stackless/gevent specific code is minimal (goless/backends.py) an= d I don't see anything ugly that we're doing there. Maybe something= is idiomatically very different, or is gevent performance just not very good?<u></u><u></u></p> <div> <p class=3D"MsoNormal">Anyway, it should be easy to profile eventually.<u><= /u><u></u></p> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> <div> <div> <p class=3D"MsoNormal">Using backend StacklessBackend<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">Benchmarking channels:<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.13s: Sync<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.14s: Async<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.13s: Buffered(1000)<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">Benchmarking select:<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.29s: No default case.<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.15s: With default case.<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal">Using backend GeventBackend<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">Benchmarking channels:<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.87s: Sync<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.83s: Async<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.82s: Buffered(1000)<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">Benchmarking select:<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 1.12s: No default case.<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0 0.16s: With default case.<u></u><u></u></p> </div> </div> </div> </div> </div> <div> <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><u></u>=C2=A0<u></u><= /p> <div> <p class=3D"MsoNormal">On Tue, May 27, 2014 at 7:17 AM, Kristj=C3=A1n Valur= J=C3=B3nsson <<a href=3D"mailto:kristjan-hPzAiOG7rkJWk0Htik3J/[email protected]" target=3D"_blank= ">kristjan-hPzAiOG7rkJWk0Htik3J/[email protected]</a>> wrote:<u></u><u></u></p> <blockquote style=3D"border:none;border-left:solid #cccccc 1.0pt;padding:0c= m 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"> <div> <div> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">Well, I started doing som= e documentation using sphinx the other day but got sidetracked.</span><u></= u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">The current documentation= lives in the modules and in the unittests.</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">I guess the only fiddly b= it about it currently is to start it up.=C2=A0 Currently one has to explici= tly get the main loop running. =C2=A0This is because stackless _<i>used</i>_ t= o only allow stackless.run() on the main tasklet.=C2=A0 The latest versions= don=E2=80=99t.</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">Once that restriction is = removed, having the main loop run implicitly much as the gevent library does (when the Hub singleton is requested) is easy.</span><u></u><u></u></= p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">I need to put that little= brick in there, and then everything will run smoothly </span><span style=3D"font-size:11.0pt;font-family:Wingdings;color:#1f497d"= >J</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">=C2=A0</span><u></u><u></= u></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">K</span><u></u><u></u></p= > <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";color:#1f497d">=C2=A0</span><u></u><u></= u></p> <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm = 4.0pt"> <div> <div style=3D"border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0cm = 0cm 0cm"> <p class=3D"MsoNormal"><b><span style=3D"font-size:11.0pt;font-family:"= ;Calibri","sans-serif"">From:</span></b><span style=3D"font-= size:11.0pt;font-family:"Calibri","sans-serif""> <a href=3D"mailto:[email protected]" target=3D"_blank">stackl= [email protected]</a> [mailto:<a href=3D"mailto:stackless-bounces@s= tackless.com" target=3D"_blank">[email protected]</a>] <b>On Behalf Of </b>Aleksandar Radulovic<br> <b>Sent:</b> 23. ma=C3=AD 2014 11:36</span><u></u><u></u></p> <div> <div> <p class=3D"MsoNormal"><br> <b>To:</b> The Stackless Python Mailing List<br> <b>Subject:</b> Re: [Stackless] goless<u></u><u></u></p> </div> </div> </div> </div> <div> <div> <p class=3D"MsoNormal">=C2=A0<u></u><u></u></p> <div> <p class=3D"MsoNormal">Speaking of which, when can we see some more documen= tation or examples on stacklesslib? ;)<u></u><u></u></p> <div> <p class=3D"MsoNormal">=C2=A0<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">I was fiddling with it the other day and couldn'= t find any good enough examples of stacklesslib usage..<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">=C2=A0<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">Cheers,<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">alex<u></u><u></u></p> </div> </div> <div> <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">=C2=A0<u></u><u></u><= /p> <div> <p class=3D"MsoNormal">On Tue, May 20, 2014 at 12:13 PM, Kristj=C3=A1n Valu= r J=C3=B3nsson <<a href=3D"mailto:kristjan-hPzAiOG7rkJWk0Htik3J/[email protected]" target=3D"_blan= k">kristjan-hPzAiOG7rkJWk0Htik3J/[email protected]</a>> wrote:<u></u><u></u></p> <blockquote style=3D"border:none;border-left:solid #cccccc 1.0pt;padding:0c= m 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-= bottom:5.0pt"> <div> <div> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">You may want to take a= look at the latest version of =E2=80=9Cstacklesslib=E2=80=9D, particularly= the stacklesslib.wait module.=C2=A0 We now have =E2=80=9Cwaitable=E2=80=9D= channels, so that you can do similar things to</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">select, e.g.</span><u>= </u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=C2=A0</span><u></u><u= ></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">c1 =3D stacklesslib.wa= it.WaitChannel()</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">c2 =3D stacklesslib.wa= it.WaitChannel()</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=E2=80=A6</span><u></u= ><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">for c in stacklesslib.= wait.iwait([c1, c2]):</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=C2=A0=C2=A0 if c is c= 1:=C2=A0 percolate()</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=C2=A0=C2=A0 elif c is= c2: promulgate()</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=C2=A0</span><u></u><u= ></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">A =E2=80=9CWaitChannel= =E2=80=9D is ready when its balance is non-zero.</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">There are also =E2=80= =9CSendable=E2=80=9D and =E2=80=9CReceivable=E2=80=9D adapters for WaitChan= nels to in order to wait for either positive or negative balance.</span><u>= </u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=C2=A0</span><u></u><u= ></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">The stacklesslib.util.= QueueChannel() is a channel with a fifo queue, which can be either unbounde= d (the default) or have a maximum length.=C2=A0 This is, I believe, similar to Go=E2=80=99s channels.</span><u></u><u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=C2=A0</span><u></u><u= ></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">K =C2=A0</span><u></u>= <u></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=C2=A0</span><u></u><u= ></u></p> <p class=3D"MsoNormal"><span style=3D"color:#1f497d">=C2=A0</span><u></u><u= ></u></p> <div style=3D"border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm = 4.0pt"> <div> <div style=3D"border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0cm = 0cm 0cm"> <p class=3D"MsoNormal"><b>From:</b> <a href=3D"mailto:[email protected]" target=3D"_blank">stackl= [email protected]</a> [mailto:<a href=3D"mailto:stackless-bounces@s= tackless.com" target=3D"_blank">[email protected]</a>] <b>On Behalf Of </b>Christian Tismer<br> <b>Sent:</b> 18. ma=C3=AD 2014 00:00<br> <b>To:</b> The Stackless Python Mailing List<br> <b>Subject:</b> Re: [Stackless] goless<u></u><u></u></p> </div> </div> <div> <div> <p class=3D"MsoNormal">=C2=A0<u></u><u></u></p> <div> <p class=3D"MsoNormal">On 18.04.14 12:46, Kristj=C3=A1n Valur J=C3=B3nsson = wrote:<u></u><u></u></p> </div> <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt"> <p class=3D"MsoNormal">Hi, I though=E2=80=99t I=E2=80=99d mention here an e= xperimental problem that a few of my colleagues worked on during PyCon:<u><= /u><u></u></p> <p class=3D"MsoNormal">Goless!<u></u><u></u></p> <p class=3D"MsoNormal"><a href=3D"http://goless.readthedocs.org/en/latest/i= ndex.html" target=3D"_blank">http://goless.readthedocs.org/en/latest/index.= html</a><u></u><u></u></p> <p class=3D"MsoNormal">=C2=A0<u></u><u></u></p> <p class=3D"MsoNormal">It also shows how more complex behavior can be built= on top of the relatively simple primitives that stackless provides.<u></u>= <u></u></p> </blockquote> <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><br> (a bit late, but anyway better than never)<br> <br> Yes, quite neat thing.<br> This could be used as an interesting example for the Stackless talk.<br> <br> cheers - Chris<br> <br> p.s.: actually, I'm studying Go a bit, in order to understand<br> how they do stuff, how they lock, how they schedule, ...<u></u><u></u></p> <pre>-- <u></u><u></u></pre> <pre>Christian Tismer=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 :^)=C2=A0=C2=A0 <a href=3D"mailto:[email protected]" = target=3D"_blank">[email protected]</a><u></u><u></u></pre> <pre>Software Consulting=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 :=C2=A0=C2=A0=C2=A0=C2=A0 <a href=3D"http://www.stackless.com/" target= =3D"_blank">http://www.stackless.com/</a><u></u><u></u></pre> <pre>Karl-Liebknecht-Str. 121=C2=A0=C2=A0=C2=A0=C2=A0 :=C2=A0=C2=A0=C2=A0= =C2=A0 <a href=3D"http://www.pydica.net/" target=3D"_blank">http://www.pydi= ca.net/</a><u></u><u></u></pre> <pre>14482 Potsdam=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 :=C2=A0=C2=A0=C2=A0=C2=A0 GPG key -> 0= xFB7BEE0E<u></u><u></u></pre> <pre>phone <a href=3D"tel:%2B49%20173%2024%2018%20776" target=3D"_blank">+4= 9 173 24 18 776</a>=C2=A0 fax <a href=3D"tel:%2B49%20%2830%29%20700143-0023= " target=3D"_blank">+49 (30) 700143-0023</a><u></u><u></u></pre> </div> </div> </div> </div> </div> <p class=3D"MsoNormal"><br> _______________________________________________<br> Stackless mailing list<br> <a href=3D"mailto:[email protected]" target=3D"_blank">Stackless@stac= kless.com</a><br> <a href=3D"http://www.stackless.com/mailman/listinfo/stackless" target=3D"_= blank">http://www.stackless.com/mailman/listinfo/stackless</a><u></u><u></u= ></p> </blockquote> </div> <p class=3D"MsoNormal"><br> <br clear=3D"all"> <u></u><u></u></p> <div> <p class=3D"MsoNormal">=C2=A0<u></u><u></u></p> </div> <p class=3D"MsoNormal">-- <br> a lex 13 x<br> <a href=3D"http://a13x.net" target=3D"_blank">http://a13x.net</a> | @a13xne= t <u></u><u></u></p> </div> </div> </div> </div> </div> </div> <p class=3D"MsoNormal"><br> _______________________________________________<br> Stackless mailing list<br> <a href=3D"mailto:[email protected]" target=3D"_blank">Stackless@stac= kless.com</a><br> <a href=3D"http://www.stackless.com/mailman/listinfo/stackless" target=3D"_= blank">http://www.stackless.com/mailman/listinfo/stackless</a><u></u><u></u= ></p> </blockquote> </div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> </div></div></div> </div> </div> <br>_______________________________________________<br> Stackless mailing list<br> <a href=3D"mailto:[email protected]" target=3D"_blank">Stackless@stac= kless.com</a><br> <a href=3D"http://www.stackless.com/mailman/listinfo/stackless" target=3D"_= blank">http://www.stackless.com/mailman/listinfo/stackless</a><br></blockqu= ote></div><br></div> </div></div></blockquote></div><br></div> --20cf307d064c3afb4a04fb2b0de6-- --===============7823649113441180789== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Stackless mailing list [email protected] http://www.stackless.com/mailman/listinfo/stackless --===============7823649113441180789==--