En Tue, 06 Apr 2010 07:23:19 -0300, Luis M. González <luis...@gmail.com> escribió:

On 6 abr, 03:40, Chris Rebert <c...@rebertia.com> wrote:
2010/4/5 Luis M. González <luis...@gmail.com>:





> This post gave me an idea:http://groups.google.com/group/comp.lang.python/msg/5d75080707104b76

> What if I write a simple decorator to figure out the types of every
> function, and then we use it as a base for a simple method-jit
> compiler for python?

> example:

> def typer(f):
>        def wrap(*args):
>            a = f.func_code.co_varnames
>            b = [type(i) for i in args]
>            return dict(zip(a,b))
>        return wrap

> @typer
> def spam(a, b, c=3, d=4):
>        pass

>>>> spam(8,'hello',9.9, 10)
> {'a': <type 'int'>, 'c': <type 'float'>, 'b': <type 'str'>, 'd':<type
> 'int'>}

> So by using this information, we record all the argument types used
> the first time each function/method is executed, and then we generate
> optimized code for them.
> >From this point on, a guard should check if all arguments remain the
> same and, if so, the optimized code is run.
> Otherwise, just fall back to the interpreter.

> He! I have no idea how to implement it...

Guido's been lending out his time machine again:http://psyco.sourceforge.net/introduction.html


Well, psyco is a complex beast. Actually it's a Just-In-Time
Specializer, not really a compiler at all (Guido's machine told me
so).
It's been superseded by pypy, which is a way more complex beast, and
it's a tracing compiler (and many things more).
What I mean is, why not using python's simple introspection
capabilities (instead of partial evaluation, type inference or other
complex mechanism) to gather type information?
I can imagine that this, coupled with pyrex, cython or shedskin could
give some results perhaps... by selectively compiling some function or
all of them.

That *is* exactly what psyco does. A specialized function (or block) is a pre-compiled block with a known combination of variable types, detected at runtime. psyco has not been superseded by pypy, they're two separate projects. (psyco's author focus has migrated, though).

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to