2018-07-18 18:11 GMT+02:00 Stefan Krah firstname.lastname@example.org:
Perhaps we could have one again, say for 12 months so we can figure things out. Other Python implementations may welcome the moratorium so they can catch up.
Python 3.8 has a new syntax for assignment expressions (PEP 572). A moratorium of 12 months in practice means no other syntax changes for Python 3.8. I strongly prefer to introduce syntax changes early in the development cycle, rather than late, to give time to third party modules to be updated (ex: linters like flake8 or pylint).
I am unable to decide if a moratorium is a good idea. For example, I was (strongly) against f-string at the beginning, and wrote that it was possible to write the same thing without f-string. You can say the same for PEP 572 which is "more or less" pure syntax sugar. But Python 3.6 also got a simple change to allow underscore in numbers for readability (PEP 515) and I now really love that feature.
On the side, I would like to slow down syntax changes. On the other side, I started to really love latest syntax changes...
What about other syntax changes like async and await which became real keywords? IMHO it's also a major enhancement for asyncio, even if they were more or less already keywords :-)
When I look back at syntax changes since Python 3.4, it's really hard for me to say that I prefer to stay at Python 3.4 (syntax) forever and never use Python 3.5, 3.6 and 3.7 new syntaxes... When I can use them, I started to strongly prefer f-string over str % args (which now kind of look as "legacy" compared to f-string) or its verbose brother str.format(args).
On of the reason which motivated Facebook and Instagram to migrate from Python 2.7 directly to 3.5 was to get the new async and await keywords. So new syntaxes can be the new "killer feature" of a specific Python release, at least for some use cases.