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/
Chandler Carruth
2008-Mar-29 01:52 UTC
[LLVMdev] GSoC Proposal: Language bindings via. SWIG
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 >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080328/0e0e39e9/attachment.html>
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): http://pastebin.com/m5197c5e7 (the verbosity at the beginning is because of some linkage issues with the llvm SOs) ...Eric 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