[Python-Dev] [compatibility-sig] do all VMs implement the ast module? (was: Re: AST optimizer implemented in Python)

fwierzbicki at gmail.com fwierzbicki at gmail.com
Mon Aug 13 23:21:59 CEST 2012


On Mon, Aug 13, 2012 at 1:46 PM, Guido van Rossum <guido at python.org> wrote:
> On Mon, Aug 13, 2012 at 1:05 PM, fwierzbicki at gmail.com
> <fwierzbicki at gmail.com> wrote:
>> On Mon, Aug 13, 2012 at 12:06 PM, Brett Cannon <brett at python.org> wrote:
>>>> I see nothing about ast possibly being CPython only. Should there be?
>>>
>>>
>>> Time to ask the other VMs what they are currently doing (the ast module came
>>> into existence in Python 2.6 so all the VMs should be answer the question
>>> since Jython is in alpha for 2.7 compatibility).
>
> [Jython]
>> 2.5+ contains an ast.py that I obsessively compared to CPython's 2.5
>> ast.py.
>
> But CPython's ast.py contains very little code -- it's all done in ast.c.
What I did was dump a pretty print of the ast from Jython and CPython
for every file in Lib/* and diff the results with a script. I got the
differences down to a small number of minor variations.

> Still, I'm glad you are actually considering this a cross-language
> feature, and I will gladly retract my warning. (Still, I don't know if
> it is subject to the usual backward compatibility constraints.)
I don't know if IronPython does the same though... we might want to
wait for them to respond.

> It might be pure python for Jython, but it's not for CPython.
It's actually Java for us :) -- in fact the internal AST uses the
exact Java that is exposed from our _ast.py - which I've come to
regard as a mistake (though it was useful at the time). I want to do
the same obsessive diff game with 3.x but then probably separate out
our internal ast implementation (possibly making ast.py pure Python).

BTW - is Python's internal AST exactly exposed by ast.py or is there a
separate internal AST implementation?

-Frank


More information about the Python-Dev mailing list