[Python-ideas] Re: A “big picture” question.
Steven D'Aprano writes: > On Wed, Jun 08, 2022 at 06:51:54AM -0500, James Johnson wrote: > > > When an amateur develops code incorrectly, s/he sometimes ends up with a > > code object that doesn’t run because of intermediate compiler > > optimizations. > > If that happens, that's a bug in the compiler. Optimizations should > never change the meaning of code. This isn't quite true. Languages (mostly low-level) frequently leave behavior of legal syntax partly undefined in order to allow efficient implementation on various architectures, or because it's unclear how it will be used in the future (function annotations, I be lookin' at you!) > If you have an example of this, where the compiler optimization changes > the meaning of Python code beyond what is documented, please raise a bug > report for it. OK, you've mostly taken care of the letter of my comment. But I still think it's worth pointing out that the documentation is frequently incomplete for various reasons. > But I doubt you will find any, because Python performs very, very few > optimizations of the sort you are referring to. True, although it might in the future. ___ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/QEHF3IDM24LVD6PZY7OF4YJFM3FU75T3/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-ideas] Re: A “big picture” question.
I would note that the accepted [PEP 626](https://peps.python.org/pep-0626/) explicitly constrains line-tracing behavior: """Python should guarantee that when tracing is turned on, “line” tracing events are generated for all lines of code executed and only for lines of code that are executed.""" So even peephole optimizations should now theoretically follow PEP 626 and produce the expected line-tracing events. For example, the line "try:" typically emits a "NOP" instruction that is kept around just for the sake of tracing. If I recall correctly, there might not be 100% compliance with PEP 626 so far, but in general, things have recently gotten more well-specified and predictable in this regard, not less. The interpreter is still allowed to go wild by, e.g., executing type-specialized versions of different opcodes (PEP 659), but just not in such a way as to change language semantics, including the semantics of tracing when tracing is enabled. ___ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/EK2HDVLAVC7B3EY7RDZTMXIGL5RYQI6J/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-ideas] Re: A “big picture” question.
On Fri, Jun 10, 2022 at 09:59:36PM -0500, James Johnson wrote: > I guess I was jumping to conclusions. Thank you for taking the time to look > at my email. > > I apologize if I wasted your time. No stress -- opening issues up for discussion is not a waste of time. This would be a good time to mention that there have been previous requests to have more control of what optimizations the Python byte-code compiler performs, mostly for the benefit of profiling applications. While the compiler doesn't do many, or any, large complex optimizations like a C compiler may do, it does do some keyhole optimizations. Sometimes those keyhole optimizations interfere with the ability of programs to analyse Python code and report on code coverage. While the keyhole optimization doesn't change the semantics of the code, it does change the structure of it, and makes it harder to analyse whether or not each clause in a statement is covered by tests. So other people have also requested the ability to tell the compiler to turn off all optimizations. Another factor is that as we speak, Mark Shannon is doing a lot of work on optimization for the CPython byte-code compiler, including adding JIT compilation techniques. (PyPy has had this ability for many years.) So it is possible that future compiler optimizations may start to move into the same areas that C/C++ compiler optimizations take, possibly even changing the meaning of code. It would be good to plan ahead, and start considering more fine grained optimization control, rather than the underpowered -O and -OO flags we have now. -- Steve ___ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/T3YBQRFVSQUJ2O6R6ON5ZTN77A6XGSZK/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-ideas] Re: A “big picture” question.
On Wed, Jun 08, 2022 at 06:51:54AM -0500, James Johnson wrote: > When an amateur develops code incorrectly, s/he sometimes ends up with a > code object that doesn’t run because of intermediate compiler optimizations. If that happens, that's a bug in the compiler. Optimizations should never change the meaning of code. If you have an example of this, where the compiler optimization changes the meaning of Python code beyond what is documented, please raise a bug report for it. But I doubt you will find any, because Python performs very, very few optimizations of the sort you are referring to. -- Steve ___ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/RRLF5OJFKYIO6WFCZS3RFMZDNIBPBI3P/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-ideas] Re: A “big picture” question.
On Fri, 10 Jun 2022 at 21:20, James Johnson wrote: > > The unasked question never gets answered. I don’t know if you can practically > use the following suggestion, but it may be clarifying anyway. > > When an amateur develops code incorrectly, s/he sometimes ends up with a code > object that doesn’t run because of intermediate compiler optimizations. > Got any examples of that happening in Python? ChrisA ___ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/V36OLCG6WLCSYP5LNVWELCI75UBTH5PO/ Code of Conduct: http://python.org/psf/codeofconduct/