2011/1/1 Ned Batchelder email@example.com
On 12/31/2010 12:51 PM, Cesare Di Mauro wrote:
"Aggressive" optimizations can be enabled with explicit options, in order to leave normal "debugger-prone" code.
I wish the Python compiler would adopt a strategy of being able to disable optimizations. I wrote a bug about a "leaky abstraction" optimization messing up coverage testing 2.5 years ago, and it was closed as won't fix: http://bugs.python.org/issue2506. The debate there centered around, "but that line isn't executed, because it's been optimized away." It's common in sophisticated compilers (as in, any C compiler) to be able to choose whether you want optimizations for speed, or disabling optimizations for debugging and reasoning about the code. Python would benefit from the same choice.
Command line parameters and/or environment variables are suitable for this, but they aren't immediate and, also, have global effect.
I wish an explicit ("Explicit is better than implicit") and a finer control over optimizations, with a per-module usage:
from __compiler__ import disable_peepholer, strict_syntax, static_builtins, globals_as_fasts