<div dir="ltr">Hello everybody,<div><br></div><div>I thought I had sent this mail to everybody, so here was my answer to Nathaniel,</div><div>Regards,</div><div><br>Chris<br><br><div class="gmail_quote"><div dir="ltr">---------- Forwarded message ---------<br>From: <strong class="gmail_sendername" dir="auto">Christophe Bailly</strong> <span dir="ltr"><<a href="mailto:chbailly@gmail.com">chbailly@gmail.com</a>></span><br>Date: Sun, 16 Dec 2018 at 13:56<br>Subject: Re: [Python-ideas] [asyncio] Suggestion for a major PEP<br>To: Nathaniel Smith <<a href="mailto:njs@pobox.com">njs@pobox.com</a>><br></div><br><br><div dir="ltr"><div><br></div><div>Hello Nathaniel,</div><div><br></div><div>After reading many papers, I understand that it is not as simple as I could imagine in my first thought. </div><div>Sorry about that, I have learned something. Explicit vs implicit asynchronism is a complex topic.</div><div><br></div><div>Regards,</div><div><br></div><div>Chris</div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, 16 Dec 2018 at 10:16, Nathaniel Smith <<a href="mailto:njs@pobox.com" target="_blank">njs@pobox.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">If you want this style of concurrency, you don't need to write a PEP,<br>
just 'pip install gevent' :-)<br>
<br>
But unfortunately you're years too late to argue for making asyncio<br>
work this way. This was discussed extensively at the time, and the<br>
decision to use special syntax was made intentionally, and after<br>
studying existing systems like gevent that made the other choice.<br>
<br>
This section of the trio docs explain why explicit async/await syntax<br>
makes life easier for developers:<br>
<a href="https://trio.readthedocs.io/en/latest/reference-core.html#checkpoints" rel="noreferrer" target="_blank">https://trio.readthedocs.io/en/latest/reference-core.html#checkpoints</a><br>
<br>
It's also awkward but very doable to support both sync and async mode<br>
with a single code base: <a href="https://github.com/python-trio/unasync/" rel="noreferrer" target="_blank">https://github.com/python-trio/unasync/</a><br>
<br>
In fact, when doing this, the async/await syntax isn't really the hard<br>
part – the hard part is that different libraries have very different<br>
networking APIs. E.g., the stdlib socket API and the stdlib asyncio<br>
API are totally different.<br>
<br>
-n<br>
On Sun, Dec 16, 2018 at 12:21 AM Christophe Bailly <<a href="mailto:chbailly@gmail.com" target="_blank">chbailly@gmail.com</a>> wrote:<br>
><br>
> Hello,<br>
><br>
> I copy paste the main idea from an article I have written:<br>
> contextual async<br>
><br>
> "<br>
><br>
> Imagine you have some code written for monothread. And you want to include your code in a multithread environment.  Do you need to adapt all your code which is what you do when you want to migrate to async code ? The answer is no.<br>
><br>
> Functionnally these constraints are not justified neither technically<br>
><br>
> Do we have the tools to do this ? Yes because thanks to boost::context we can switch context between tasks. When a task suspends, it just calls a function (the event loop or reactor) to potentially switch to another task. Just like threads switch contexts…<br>
><br>
> Async/Await logic has introduced a symetric relation wich introduces unnecessary contraints. We should just the same logic as thread logic.<br>
><br>
> "<br>
><br>
> Read the examples in the article I have developped a prototype in C++ and everything works perfectly.<br>
><br>
> My opinion is that sooner or later, it will have to switch to this logic because chaining async/aswait is a huge contraints and does not make sense in my opinion.<br>
><br>
> Maybe I am missing something,<br>
><br>
> Feel free to give me your feedback.<br>
><br>
> Regards,<br>
><br>
><br>
> Chris<br>
><br>
><br>
> _______________________________________________<br>
> Python-ideas mailing list<br>
> <a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
> Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/codeofconduct/</a><br>
<br>
<br>
<br>
-- <br>
Nathaniel J. Smith -- <a href="https://vorpus.org" rel="noreferrer" target="_blank">https://vorpus.org</a><br>
</blockquote></div>
</div></div></div>