[LLVMdev] GSoC Proposal: Language bindings via. SWIG

Eric Jonas jonas at MIT.EDU
Fri Mar 28 19:03:52 PDT 2008

To anyone on #llvm I'm sure I'm starting to sound like a broken record,
but I'd just like to point out that for python bindings at least, you
can quite easily manipulate the LLVM infrastructure via ctypes as a
shared object / dll -- no C required! Those of us interested in talking
to LLVM from Lisps, either Common Lisp (via CFFI) or a scheme like
PLT/Mzscheme, can also use the shared library interface. In fact, for
the Common Lisp case, this is the _only portable_ (cross-implementation)
way of talking to LLVM. 
If anyone's interested in 

Here is a one-off example of python using the shared library approach
and Gordon's excellent C interface (llvm-c):


(the verbosity at the beginning is because of some linkage issues with
the llvm SOs)

On Fri, 2008-03-28 at 18:52 -0700, Chandler Carruth wrote:
> If SWIG can be made to do a good job with Python/Ruby/Perl etc
> bindings around LLVM, I would be very interested in this. I'm
> personally interested in seeing both Python and Ruby bindings, and in
> having them be as easily maintained as possible. I think it would be
> interesting to see what the SWIG-style solution can do in this
> direction as opposed to the C-binding approach. If it results in
> better and/or lower maintenance/development cost bindings for specific
> target languages, I'm all for it.
> -Chandler
> On Fri, Mar 28, 2008 at 3:55 PM, Søren Bøg <sbg at froztek.com> wrote:
>         Hi,
>         I've been lurking around the LLVM project for a couple of
>         months now.
>         The two recent threads about python bindings for LLVM ([1] and
>         [2]),
>         combined with the fact that I am looking for at GSoC project
>         at the
>         moment. Lead to the idea of making the "public" parts of LLVM
>         SWIG[3]-friendly and basing a set of python bindings on this.
>         My reasoning for doing it this way, is that it allows reuse of
>         the SWIG
>         annotation for bindings to other languages such as Perl and
>         Java among
>         others.
>         What I would like to do for the GSoC is:
>         1) Annotate the necessary parts of LLVM for processing by
>         SWIG.
>         2) Use SWIG to generate a python wrapper around LLVM
>         3) Add a (hopefully) thin layer of python code to complete the
>         bindings.
>         Before submitting an application for this project. I would
>         like to know
>         if there is an interest in this, within the LLVM project, and
>         possibly
>         if this is already being worked on.
>         Regards,
>          Søren Bøg
>         [1]
>         http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-March/013318.html
>         [2]
>         http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-March/013171.html
>         [3] http://www.swig.org/
>         _______________________________________________
>         LLVM Developers mailing list
>         LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>         http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list