On Wed, Dec 02, 2020 at 12:24:00AM +0300, Paul Sokolovsky wrote:
But I don't understand your comment. Are you suggesting that CPython will be exempt from this proposal? Or that the proposal is aimed at helping alternative implementations?
I just think that some of people who think in terms of "Python" == "CPython", would have hard time imagining how this "strict mode" came by, if they will try to apply it the CPython situation.
I also don't think that it applies to CPython's approach well. If anything, it's kind of "contrarian" approach to how CPython tries to do things (e.g. https://www.python.org/dev/peps/pep-0509/).
Are you aware that CPython is the reference implementation of Python the language? If you are introducing language features and semantic changes that CPython doesn't support, or might not support, than it isn't Python, it's a superset (or subset) of the language. Like Cython.
Either that, or you are hoping for a revolution where your proposed alternative language becomes so successful that a majority of users abandon CPython, PyPy, Nuitka, Stackless, Jython, IronPython etc and flock to your restricted language, taking the name "Python" with it.
I don't think that's very likely.
So I don't think you should be thinking about scenarios where other implementations take this up and CPython doesn't. Rather, I think there are three scenarios:
1. Somebody invents a new language with your proposed semantics, similar to other Python-inspired languages as Cython, Boo, Nim and Cobra.
(At least one of those, Cython, is a superset of Python; the others are just copying syntax rather than semantics.)
2. CPython takes this up, as an optional extension that other implementations are free to ignore.
3. Or CPython takes this up, and makes it mandatory for any interpreter claiming to be Python to support it.
I don't think there is any chance of your proposal being blessed as official Python semantics without CPython supporting it.
Should we be thinking specifically of some alternate implementation?
I guess that the thinking in terms of "tabula rasa" would help. Like, if you forget all the existing CPython baggage, and just face a problem of optimizing name lookups, what would you do? This proposal is one such exploration.
This would be scenario number 1 above. A brand new language, inspired by Python, like Cobra. Or since it is backwards-compatible in non-strict mode, perhaps Cython is a better analogy.
Or if you prefer, the Perl-inspired Raku.