[Python-3000] Ctypes as cross-interpreter C calling interface

Nick Coghlan ncoghlan at gmail.com
Tue Aug 15 03:25:57 CEST 2006

Guido van Rossum wrote:
> On 8/14/06, Jean-Paul Calderone <exarkun at divmod.com> wrote:
>> On Mon, 14 Aug 2006 09:09:49 -0700, Guido van Rossum <guido at python.org> wrote:
>>> On 8/14/06, Jean-Paul Calderone <exarkun at divmod.com> wrote:
>>>> This is a joke, right?
>>> Because it's a good idea to have to write separate wrappers
>>> around every useful library for each dynamic languague separately?
>> If a project has done this successfully, I don't think I've seen it.  Can
>> you point out some examples where this has been accomplished in a useful
>> form?  The nearest thing I can think of is SWIG, which is basically a
>> failure.
> SWIG is not my favorite (msotly because I don't like C++ much) but
> it's used very effectively here at Google (for example); I wouldn't
> dream of calling it a failure.

I've found SWIG to be especially effective when using it to wrap a library I 
have control over, so I can tweak the interface to avoid stressing the code 
generator too much. Running it over arbitrary C libraries requires a fair bit 
of work defining the necessary typemaps (although you still have the benefit 
of writing the typemap for a given style of interface *once* instead of for 
every function that uses it).

However, in the context of this discussion, a SWIG-like tool that produced 
pure Python ctypes-based code would be a vast improvement. Taking the SWIG 
typemaps for the Python C API as a starting point, you could even do it with 
SWIG itself (rather than reinventing the wheel, as codegen's components for 
parsing C header files appear to do).


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-3000 mailing list