Download New Optimization
Transcript
• Lots of formatting improvements to the change log, and manuals: • Marking identifiers with better suited ReStructured Text markup. • Added links to the bug tracker all Issues. • Unified wordings, quotation, across the documents. Cleanups • The creation of the class dictionaries is now done with normal function bodies, that only needed to learn how to throw an exception when directly called, instead of returning NULL. Also the assignment of __module__ and __doc__ in these has become visible in the node tree, allowing their proper optimization. These re-formulation changes allowed to remove all sorts of special treatment of class code in the code generation phase, making things a lot simpler. • There was still a declaration of PRINT_ITEMS and uses of it, but no definition of it. • Code generation for "main" module and "other" modules are now merged, and no longer special. • The use of raw strings was found unnecessary and potentially still buggy and has been removed. The dependence on C++11 is getting less and less. New Tests • Updated CPython2.6 test suite "tests/CPython26" to 2.6.8, adding tests for recent bug fixes in CPython. No changes to Nuitka were needed in order to pass, which is always good news. • Added CPython2.7 test suite as "tests/CPython27" from 2.7.3, making it public for the first time. Previously a private copy of some age, with many no longer needed changes had been used by me. Now it is up to par with what was done before for "tests/CPython26", so this pending action is finally done. • Added test to cover Python2 syntax error of having a function with closure variables nested inside a function that is an overflow function. • Added test "BuiltinSuper" to cover super usage details. • Added test to cover del on nested scope as syntax error. • Added test to cover exec with a tuple argument of length 1. • Added test to cover barry_as_FLUFL future import to work. • Removed "Unicode" from known error cases for CPython3.2, it's now working. Summary This release brought forward the most important remaining re-formulation changes needed for Nuitka. Removing class bodies, makes optimization yet again simpler. Still, making function references, so they can be copied, is missing for value propagation to progress. Generally, as usual, a focus has been laid on correctness. This is also the first time, I am release with a known bug though: That is Issue#39 which I believe now, may be the root cause of the mercurial tests not yet passing. The solution will be involved and take a bit of time. It will be about "compiled frames" and be a (invasive) solution. It likely will make Nuitka faster too. But this release includes lots of tiny improvements, for Python3 and also for Python2. So I wanted to get this out now. As usual, please check it out, and let me know how you fare.