PyPy allows experimentation in many directions -- indeed facilitating experimentation in language implementation was one of the main motivations for the project. This page is meant to collect some ideas of experiments that the core developers have not had time to perform yet and also do not require too much in depth knowledge to get started with.
Feel free to suggest new ideas and discuss them in #pypy on the freenode IRC network or the pypy-dev mailing list (see the home page).
PyPy's Just-In-Time compiler relies on backends for actual code generation. We have so far a 32-bit Intel backend, and a CLI one. Open ideas are to write a backend for Intel 64 (AMD64); or a backend for Java; or trying again to use LLVM-JIT (which I do not really recommend).
Support ctypes on more backends. Right now ctypes is supported only when compiling PyPy to C, and there is a bit of unfinished work to support it on Intel 64. A nice project would be to support it when compiling to .NET or the JVM. That's not too hard, the only thing needed is to port a small module that does the actual invocation of external libraries (a related project is to port this module to Jython or IronPython to get support for ctypes there, which is something that was tried but not finished as far as I know).
|
One of the advantages of PyPy's implementation is that the Python-level type of an object and its implementation are completely independent. This should allow a much more intuitive interface to, for example, objects that are backed by a persistent store. The transparent proxy objects are a key step in this direction; now all that remains is to implement the interesting bits :-)
An example project might be to implement functionality akin to the ZODB's Persistent class, without the need for the _p_changed hacks, and in pure Python code (should be relatively easy on top of transparent proxy).
Another example would be to implement a multi-CPU extension that internally uses several processes and uses transparent proxies to share object views.
Other ideas are to do something interesting with sandboxing; or to work more on the Stackless features (e.g. integrate it with the JIT); or revive the logic object space, which tried to bring unification-like features to Python.
Improve one of the existing interpreters, or start a new one. Experiment with the JIT compiler generator.
...or whatever else interests you!
Feel free to mention your interest and discuss these ideas on the pypy-dev mailing list or on the #pypy channel on irc.freenode.net. You can also have a look around our documentation.