[Python-Dev] PEP 492: No new syntax is required

Paul Sokolovsky pmiscml at gmail.com
Mon Apr 27 01:50:06 CEST 2015


Hello,

On Sun, 26 Apr 2015 16:13:43 -0700
Guido van Rossum <guido at python.org> wrote:

> But new syntax is the whole point of the PEP. I want to be able to
> *syntactically* tell where the suspension points are in coroutines.
> Currently this means looking for yield [from]; PEP 492 just adds
> looking for await and async [for|with]. Making await() a function
> defeats the purpose because now aliasing can hide its presence, and
> we're back in the land of gevent or stackless (where *anything* can
> potentially suspend the current task). I don't want to live in that
> land.

And someone in this thread should have link in a signature to the page
on why there's not wanting to live in that land. I don't have it handy,
so may offer only reminiscence: if you don't know where there're
suspension points, you essentially should assume that any function call
can be a suspension point. And then you dropped almost as low as when
using threads - you can lose control anytime, data may change anytime,
you need to extensively use locks, etc.


Oh, and btw, there was related claim earlier that some things are better
done in thread pools, so async context managers can be done away with.
That's another faulty point - if asyncio is to be feature-complete, it
should work [well] with own functionality, without crutches of "foreign"
paradigms. Otherwise you may be just happy to use threads for
everything at all, like everyone did 5 years ago.

(And yeah, there's even usages for that, for example, MicroPython is
proudly GIL-free, translating to not supporting those thread thingies
and relying on native Python concurrency primitives).

> 
> On Sun, Apr 26, 2015 at 1:21 PM, Mark Shannon <mark at hotpy.org> wrote:
> 
> > Hi,
> >
> > I was looking at PEP 492 and it seems to me that no new syntax is
> > required.
> >
> > Looking at the code, it does four things; all of which, or a
> > functional equivalent, could be done with no new syntax.
> > 1. Make a normal function into a generator or coroutine. This can
> > be done with a decorator.
> > 2. Support a parallel set of special methods starting with 'a' or
> > 'async'. Why not just use the current set of special methods?
> > 3. "await". "await" is an operator that takes one argument and
> > produces a single result, without altering flow control and can
> > thus be replaced by an function.
> > 4. Asynchronous with statement. The PEP lists the equivalent as
> > "with (yield from xxx)" which doesn't seem so bad.
> >
> > Please don't add unnecessary new syntax.
> >
> > Cheers,
> > Mark.
> >
> > P.S. I'm not objecting to any of the other new features proposed,
> > just the new syntax.
> > _______________________________________________
> > Python-Dev mailing list
> > Python-Dev at python.org
> > https://mail.python.org/mailman/listinfo/python-dev
> > Unsubscribe:
> > https://mail.python.org/mailman/options/python-dev/guido%40python.org
> >
> 
> 
> 
> -- 
> --Guido van Rossum (python.org/~guido)



-- 
Best regards,
 Paul                          mailto:pmiscml at gmail.com


More information about the Python-Dev mailing list