[pypy-dev] missing things for making PyPy "production" ready (for some value of production)

David Cournapeau david at ar.media.kyoto-u.ac.jp
Fri Nov 16 05:08:27 CET 2007


Amaury Forgeot d'Arc wrote:
> David Cournapeau wrote:
>> Martijn Faassen wrote:
>>> Yes, this one would be a major challenge. If you can crack it and the
>>> PyPy interpreter offers another benefit (an obvious one is speed), you
>>> will be in awesome position. If not, the other benefits will have to
>>> weigh more strongly. This is definitely one to evolve slowly over time
>>> if it's possible at all.
>> I don't understand the C++ part. How many useful python modules use C++
>> ? For a start, my understanding is that python itself (interprter +
>> stdlib) do not use C++ at all.
>
> Well, each time you have an interesting C++ library, you have an
> interesting python module written in C++.
> Two kinds of modules come to my mind:
> - wxPython is a good wrapper around the big C++ wxWidgets library. A
> cross-platform GUI,
> 500 classes, 6000 methods are exposed. Of course the underlying GTK
> and Win32 functions are C calls, but do you want to port wxWidgets to
> rpython?
> - I like to test and automate my own C++ applications with python...
I certainly did not mean that there was no interesting C++ library to wrap. But in the context of "making pypy usable for production use", I am not sure this is a priority. To make it short: I can imagine a python implementation with the stdlib to be of some use, and this does not involve C++.

>
> Indeed. But there are tools to generate most of the painful code:
> Swig, boost::python, and others.
> With Swig, you can even subclass C++ classes and override virtual
> methods in python.
> I wish pypy could do the same.
Both methods involve parsing C++, which is not fun. For example, 
concerning wxwidget, I for once think it would be much easier to wrap 
gtk than wxwidget (if we think: would be good to have a GUI lib for 
pypy); incidently, that's how pygtk is generated (some python + scheme 
code generate the pygtk wrapper around gtk).

ctypes can use codegen to automatically wrap C libraries: I have not 
used it extensively myself, but it is used by some people to wrap non 
trivial C libraries.
>
> If I understand correctly, pypy now uses its own "rffi" mechanism (for
> "RPython foreign function call"?) to access external C functions.
> rffi itself does not use ctypes: when translating a function call, it
> is enough to write the C function call, and link with the correct
> library. ctypes is used only when executing external functions on top
> of CPython: in tests, or in the pypy.py interpreter.
> We could do it differently, for example by quickly compiling an
> extension module for each function we need.
> It could be useful in some cases when ctypes cannot be used. For
> example when the C "function" is actually a macro, or a C++ function.
>
> Should we extend rffi to handle C++?
ctypes does not handle C++ for strong (e.g. non trivial) reasons. I mean 
everybody knows that C++ and C are totally different in this respect. C 
is easy to use from other languages, C++ is next to impossible. 
Extending rffi to handle C++ is an enormous task, no ? Again, in the 
context of making pypy 'production-usable', is it really a priority ? 
Can't we first do things which do not require C++ support ?

David



More information about the Pypy-dev mailing list