[Python-Dev] Second milestone of FAT Python

Terry Reedy tjreedy at udel.edu
Wed Nov 4 17:20:49 EST 2015


On 11/4/2015 3:50 AM, Victor Stinner wrote:
> Hi,
>
> I'm writing a new "FAT Python" project to try to implement optimizations
> in CPython (inlining, constant folding, move invariants out of loops,
> etc.) using a "static" optimizer (not a JIT). For the background, see
> the thread on python-ideas:
> https://mail.python.org/pipermail/python-ideas/2015-October/036908.html
>
> See also the documentation:
> https://hg.python.org/sandbox/fatpython/file/tip/FATPYTHON.rst
> https://hg.python.org/sandbox/fatpython/file/tip/ASTOPTIMIZER.rst
>
> I implemented the most basic optimization to test my code: replace calls
> to builtin functions (with constant arguments) with the result. For
> example, len("abc") is replaced with 3. I reached the second milestone:
> it's now possible to run the full Python test suite with these
> optimizations enabled. It confirms that the optimizations don't break
> the Python semantic.

Is the test suite complete enough to say this? (see below)

> Example:
> ---
>  >>> def func():
> ...     return len("abc")
> ...
>  >>> import dis
>  >>> dis.dis(func)
>    2           0 LOAD_GLOBAL              0 (len)
>                3 LOAD_CONST               1 ('abc')
>                6 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
>                9 RETURN_VALUE
>
>  >>> len(func.get_specialized())
> 1
>  >>> specialized=func.get_specialized()[0]
>  >>> dis.dis(specialized['code'])
>    2           0 LOAD_CONST               1 (3)
>                3 RETURN_VALUE
>  >>> len(specialized['guards'])
> 2
>
>  >>> func()
> 3
>
>  >>> len=lambda obj: "mock"
>  >>> func()
> 'mock'

In particular, does the test suite have tests like this, to verify that 
over-riding builtins works?

>  >>> func.get_specialized()
> []
> ---

-- 
Terry Jan Reedy



More information about the Python-Dev mailing list