I think I'm convinced by Amber's argument. Coroutines are something you can look up in e.g. Knuth (or Wikipedia) and you'll find something a pretty good match. All queries for "async functions" seem to go to some ECMAScript proposal (similar in nature to PEP 492 actually) and I am not particularly eager to throw ourselves in front of that bandwagon.
On Sun, Oct 9, 2016 at 12:34 AM, Ben Darnell <b...@bendarnell.com> wrote: > I generally like the idea of calling the result of `async def` an "async > function", and replacing most uses of "coroutine" in the docs with "async > function". The potential confusion with "asynchronous function" (which in my > taxonomy is a broader category including both coroutines and functions that > take callbacks) is unfortunate, but as long as the syntax is `async def` the > term "async function" is almost inevitable and we might as well embrace it. > > In Tornado, though, I'm going to keep using the term "coroutine" because our > `yield`-based decorated coroutines are important for as long as Python 2 is > around. > > -Ben > > On Sun, Oct 9, 2016 at 12:00 PM Guido van Rossum <gu...@python.org> wrote: >> >> I'd like input from others, but maybe it's worth expanding the scope >> >> to python-ideas? Not too many people read async-sig. (Or should that >> >> be coroutine-sig? :-) >> >> >> >> On Sat, Oct 8, 2016 at 8:50 PM, Nathaniel Smith <n...@pobox.com> wrote: >> >> > On Sat, Oct 8, 2016 at 7:48 PM, Guido van Rossum <gu...@python.org> >> > wrote: >> >> >> I've heard people call it an "async def" too. >> >> >> >> >> >> I don't think it's quite as dramatic as you worry about. People also >> >> >> talk about generators (not generator functions) and even though >> >> >> there's a further ambiguity between the function and the type of >> >> >> object it returns, we still get along. >> >> > >> >> > Hmm, I don't mean to be dramatic. Obviously the world will not end if >> >> > we keep using "coroutine" as the standard term :-). I just think that >> >> > calling them "async functions" (and "async function objects" when the >> >> > distinction is important) would be a nice unambiguous win for pedagogy >> >> > and clarity, and that it's worth grabbing those when you get the >> >> > chance. "coroutine" says more about the history of how we got here >> >> > than about what these things actually mean to a regular end-user; >> >> > "async function" is so transparent that you can skip the vocab >> >> > discussion and go straight to talking about how to use them. >> >> > >> >> >> There's also the @coroutine decorator. >> >> > >> >> > There's two of them, even: @types.coroutine and @asyncio.coroutine. >> >> > I'm not really sure what the difference is -- I think at this point we >> >> > could delete some code by making the latter an alias for the former? >> >> > But for now they're still independent and I might be missing >> >> > something. >> >> > >> >> > And unless I am missing something, these are only useful in rather >> >> > unusual situations: either because you're trying to maintain >> >> > compatibility with 3.4 (which I think will rapidly become irrelevant >> >> > for most asyncio users, if it isn't already) or you're implementing >> >> > your own trampoline (e.g. [1][2]). So even if we leave the decorators >> >> > alone, it doesn't really stop us from switching to clearer terminology >> >> > for day-to-day usage -- most people will never encounter @coroutine >> >> > anyway. >> >> > >> >> > (For completeness: the other stdlib identifiers I see that mention >> >> > "coroutine" are: sys.{get,set}_coroutine_wrapper, several functions in >> >> > inspect, and asyncio.run_coroutine_threadsafe.) >> >> > >> >> >> If you have a specific piece of documentation in mind, let's talk -- >> >> >> maybe it's fine to change. >> >> > >> >> > Well, it's a basic concept that gets mentioned constantly throughout >> >> > all discussions... For example, I count 29 instances in [3] and 53 >> >> > instances in [4]. Clearly it's useful to have a standard term for >> >> > these things. >> >> > >> >> > -n >> >> > >> >> > [1] >> > https://github.com/dabeaz/curio/blob/6166a54a731df59c15fe27791d1c6b048f09f941/curio/traps.py#L46 >> >> > [2] >> > https://github.com/njsmith/async_generator/blob/fab4af987cb86c6db549131b66d3ab4c4e327a29/async_generator/impl.py#L13 >> >> > [3] https://docs.python.org/3/library/asyncio-stream.html >> >> > [4] https://curio.readthedocs.io/en/latest/reference.html >> >> > >> >> > -- >> >> > Nathaniel J. Smith -- https://vorpus.org >> >> >> >> >> >> >> >> -- >> >> --Guido van Rossum (python.org/~guido) >> >> _______________________________________________ >> >> Async-sig mailing list >> >> Async-sig@python.org >> >> https://mail.python.org/mailman/listinfo/async-sig >> >> Code of Conduct: https://www.python.org/psf/codeofconduct/ >> > -- --Guido van Rossum (python.org/~guido) _______________________________________________ Async-sig mailing list Async-sig@python.org https://mail.python.org/mailman/listinfo/async-sig Code of Conduct: https://www.python.org/psf/codeofconduct/