Hi Geoffrey, On Thu, Mar 12, 2009 at 08:57:21PM -0400, Geoffrey Irving wrote: > I've come to the conclusion that JIT compilation is essential to avoid > abstract penalties even for typed languages.
Indeed: our approach to JIT compilation was first tried with machine code (see Dynamo/DynamoRio) and then with Java. > Thus, I'm curious about whether pypy could be practically applied to a > typed front end language, say with the following basic set of > features: I suppose you can try. For a direct application you need a language for which it makes sense to write an interpreter in RPython. > In particular, what restrictions does pypy impose on storage layout? > For example, would it be able to handle dynamically-typed homogeneous > lists, represented as a single pointer to a type object and an array > of structs required to be of that type? RPython doesn't have support for this. If you go directly to the lltype type system, then it's possible -- but our current JIT generator doesn't support it. And also, if you write an interpreter using the lltype type system directly, you loose the abstraction level of writing an interpreter in RPython in the first place -- e.g. it would not be translatable any more to the ootype type system, thus to Java or CLI. So all in all, PyPy could probably be subverted to do what you want, but it's not really meant to (and we are a bit unlikely to give much support, as far as I can see). > Also, if pypy can target LLVM, how do you imagine the two JIT systems > cooperating (if at all)? That's a longer-term goal, but I can easily imagine that the code produced by our JIT could be sent to LLVM at runtime for further optimizations. A bientot, Armin. _______________________________________________ [email protected] http://codespeak.net/mailman/listinfo/pypy-dev
