[pypy-dev] needed 18 month plan of what we would do in developing PyPy if we got funding.

Armin Rigo arigo at tunes.org
Sun Sep 7 19:08:42 CEST 2003


Hello Samuele,

Let me try to fill some bits in your list in an attempt to make it more nicely
linear...

The resulting document is in the svn repository at doc/EU_funding/plan.txt. 
I'm attaching a copy to this e-mail. Wwow, I somehow managed to make it look
very nicely structured with clear categories :-)

Everything in there is wide open for discussion of course! That's also quite
my own point of view (as I guess you'll see if only by the fact that
"infrastructure" is the last of the 6 categories ;-) but it should maybe be
put much earlier, if the categories are supposed to be ordered by starting
date).


A few Psyco-specific questions from Samuele...

> - integration of Psyco technology (rewrite to translated Python plus 
> automatic code generation of all what can be deduced from our PyPy codebase 
> or ???)

For both Psyco and Stackless I expect that we will divide them in two parts, 
the one that we tediously maintained from the Python source, and the one that 
is really unique to the project. For the first part we will try as much as 
possible to replace it by hooking into the translator. For the second part, it 
depends, I guess it can also be divided into fairly generic stuff that can be 
written in Python (interp- or even app-level) and stuff that really depends on 
the low-level.

More specifically (this only goes as far as I understand Stackless):


+ in PyPy's ---------- Psyco ------------------- Stackless -------

translator     translate the PyPy           translate regular functions
               interpreter into             into Continuation-Passing
               an abstract interpreter      Style (CPS) (Stackless 1.0)

pure Python    binding logic,               high-level tasklet aspects,
               profiler heuristics          scheduling
               
run-time       machine code emission,       C stack switching
               run-time support for         (Stackless 2.0)
               the abstact interpreter

In both case it might be possible to reduce the "run-time" part drastically,
thus making the tool essentially independent from a low-level run-time -- it
would work in Java too :-)  For Psyco this would be done using a generic 
virtual machine as the one I just finished (yup, Psyco works on PowerPC now, 
and probably on any 32-bit machine :-)  -- it would be done by writing the 
virtual machine's implementation itself in interpreter-level Python. For 
Stackless you'd have full continuations using the translator-to-CPS, which 
means essentially that you don't need C stack switching if you don't want it 
(you'd get a full Stackless 1.0).

Oh yes, BTW, thread pickling is another example of what the translator can
help make possible :-) It would be possible because to pickle a thread state
cleanly you really need all information you can get about the data structures
and where they are on the stack. A translator could emit special C code that
keeps track of that in a way that would be extremely tedious to do manually.

> - need to improve profiling approach to find hotspots for Psyco ?  (I don't 
> know how Psyco is doing about this now, Armin?)

The profiler is already reasonable, I think, but more testing would be cool.

> - optimizations for lookup/globals while
> supporting dynamic changes (things AFAIK Psyco does not address completely 
> ? is that correct)

Yes. Global lookups are cached but still work correctly in presence of dynamic
changes, but what doesn't at the moment is lookups of methods in new-style
classes.


A bientôt,

Armin.



More information about the Pypy-dev mailing list