www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Preview LLVM Deimos bindings

reply Jens Mueller <jens.k.mueller gmx.de> writes:
Hi,

I've written some Deimos interface for LLVM.
https://github.com/jkm/deimos-llvm/commits/master

I'd like to get some feedback on those.
Firstly to finish these and secondly to finish some guidelines that I'd
like to propose to be published on dlang.org.

Jens
Jul 19 2012
next sibling parent "Bernard Helyer" <b.helyer gmail.com> writes:
Very interesting. I'd be interested in making some D Native 
feeling bindings, because the LLVM C bindings are A, 
inconsistent, and B, complete shit. So this is interesting.
Jul 20 2012
prev sibling next sibling parent Jens Mueller <jens.k.mueller gmx.de> writes:
Bernard Helyer wrote:
 Very interesting. I'd be interested in making some D Native feeling
 bindings, because the LLVM C bindings are A, inconsistent, and B,
 complete shit. So this is interesting.

Building a better wrapper on top of these would be nice. Can you give examples for A and B? Jens
Jul 21 2012
prev sibling next sibling parent =?UTF-8?B?Ik1pY2hhw6ts?= Larouche" <michael.larouche gmail.com> writes:
On Friday, 20 July 2012 at 05:36:26 UTC, Jens Mueller wrote:
 Hi,

 I've written some Deimos interface for LLVM.
 https://github.com/jkm/deimos-llvm/commits/master

 I'd like to get some feedback on those.
 Firstly to finish these and secondly to finish some guidelines 
 that I'd
 like to propose to be published on dlang.org.

 Jens

I tried with my port of the Kaleidoscope, apart from some comestic changes, it worked like a charm ! (Using LLVM 3.0) Here's the diff: https://github.com/mlarouche/llvm-d-tutorial/commit/8e3b53a1040db672c16fd0685bd0e6fd7d075b48#main.d
Jul 21 2012
prev sibling next sibling parent Jens Mueller <jens.k.mueller gmx.de> writes:
=?UTF-8?B?Ik1pY2hhw6ts?=.Larouche" <michael.larouche gmail.com>" puremagic.com
wrote:
 On Friday, 20 July 2012 at 05:36:26 UTC, Jens Mueller wrote:
Hi,

I've written some Deimos interface for LLVM.
https://github.com/jkm/deimos-llvm/commits/master

I'd like to get some feedback on those.
Firstly to finish these and secondly to finish some guidelines
that I'd
like to propose to be published on dlang.org.

Jens

I tried with my port of the Kaleidoscope, apart from some comestic changes, it worked like a charm ! (Using LLVM 3.0)

Thanks. To be honest I took your main.d to verify that it works. But I'm unsure what kind of examples to add to make sure it works. Just want something simple but complete. Jens
Jul 21 2012
prev sibling next sibling parent "Bernard Helyer" <b.helyer gmail.com> writes:
On Saturday, 21 July 2012 at 15:30:46 UTC, Jens Mueller wrote:
 Bernard Helyer wrote:
 Very interesting. I'd be interested in making some D Native 
 feeling
 bindings, because the LLVM C bindings are A, inconsistent, and 
 B,
 complete shit. So this is interesting.

Building a better wrapper on top of these would be nice. Can you give examples for A and B? Jens

The verbs used change from function to function. I can't remember any off the top of my head, but I run into bunch when using it for SDC. As to B, they're incomplete, undocumented, and awkward to use. No reflection on your fine work, of course. :)
Jul 21 2012
prev sibling next sibling parent Jens Mueller <jens.k.mueller gmx.de> writes:
Bernard Helyer wrote:
 On Saturday, 21 July 2012 at 15:30:46 UTC, Jens Mueller wrote:
Bernard Helyer wrote:
Very interesting. I'd be interested in making some D Native
feeling
bindings, because the LLVM C bindings are A, inconsistent, and
B,
complete shit. So this is interesting.

Building a better wrapper on top of these would be nice. Can you give examples for A and B? Jens

The verbs used change from function to function. I can't remember any off the top of my head, but I run into bunch when using it for SDC. As to B, they're incomplete, undocumented, and awkward to use.

I see. Maybe they will improve.
 No reflection on your fine work, of course. :)

Yeah. I just translated those header files. I haven't written them. Jens
Jul 21 2012
prev sibling next sibling parent reply =?ISO-8859-1?Q?S=F6nke_Ludwig?= <sludwig outerproduct.org> writes:
Am 20.07.2012 07:35, schrieb Jens Mueller:
 Hi,

 I've written some Deimos interface for LLVM.
 https://github.com/jkm/deimos-llvm/commits/master

 I'd like to get some feedback on those.
 Firstly to finish these and secondly to finish some guidelines that I'd
 like to propose to be published on dlang.org.

 Jens

Are the bindings for 3.0 or 3.1? I'm asking because at least some enum members have changed (don't exactly remember which).
Jul 21 2012
next sibling parent Pragma Tix <pragmatix orange.fr> writes:
Am 22.07.2012 07:50, schrieb Sönke Ludwig:
 re the bindings for 3.0 or 3.1?
 I'm asking because at least some enum members have changed (don't
 exactly remember which).

Looks like 3.1 https://github.com/jkm/deimos-llvm
Jul 22 2012
prev sibling parent reply =?ISO-8859-15?Q?S=F6nke_Ludwig?= <sludwig outerproduct.org> writes:
Am 22.07.2012 12:10, schrieb Jens Mueller:
 Sönke Ludwig wrote:
 Am 20.07.2012 07:35, schrieb Jens Mueller:
 Hi,

 I've written some Deimos interface for LLVM.
 https://github.com/jkm/deimos-llvm/commits/master

 I'd like to get some feedback on those.
 Firstly to finish these and secondly to finish some guidelines that I'd
 like to propose to be published on dlang.org.

 Jens

Are the bindings for 3.0 or 3.1? I'm asking because at least some enum members have changed (don't exactly remember which).

It's 3.1. Jens

Ok great, then I can throw away my bindings :) (unfortunately I couldn't publish them because of my former employee...). Btw. regarding Barnard's comment about LLVM-C, I partially agree. Several additions/modifications were necessary in my case to be able to make the compiler fully work. I wonder if it's feasable to compile LLVM using DMC and then use extern(C++) to make an object oriented interface at some point, possibly using SWIG or something. But well.. apart from some missing features, I think the C interface is actually OK to work with, once you get over the missing documentation, so maybe it's really not worth the time.
Jul 22 2012
parent reply Jacob Carlborg <doob me.com> writes:
On 2012-07-23 08:56, Sönke Ludwig wrote:

 Ok great, then I can throw away my bindings :) (unfortunately I couldn't
 publish them because of my former employee...).

 Btw. regarding Barnard's comment about LLVM-C, I partially agree.
 Several additions/modifications were necessary in my case to be able to
 make the compiler fully work. I wonder if it's feasable to compile LLVM
 using DMC and then use extern(C++) to make an object oriented interface
 at some point, possibly using SWIG or something. But well.. apart from
 some missing features, I think the C interface is actually OK to work
 with, once you get over the missing documentation, so maybe it's really
 not worth the time.

https://github.com/jacob-carlborg/dstep -- /Jacob Carlborg
Jul 23 2012
parent reply =?ISO-8859-15?Q?S=F6nke_Ludwig?= <sludwig outerproduct.org> writes:
Am 23.07.2012 09:16, schrieb Jacob Carlborg:
 On 2012-07-23 08:56, Sönke Ludwig wrote:

 Ok great, then I can throw away my bindings :) (unfortunately I couldn't
 publish them because of my former employee...).

 Btw. regarding Barnard's comment about LLVM-C, I partially agree.
 Several additions/modifications were necessary in my case to be able to
 make the compiler fully work. I wonder if it's feasable to compile LLVM
 using DMC and then use extern(C++) to make an object oriented interface
 at some point, possibly using SWIG or something. But well.. apart from
 some missing features, I think the C interface is actually OK to work
 with, once you get over the missing documentation, so maybe it's really
 not worth the time.

https://github.com/jacob-carlborg/dstep

I thought it doesn't yet support C++? But anyways, next time I have to make bindings for a C library I'll definitely try dstep.
Jul 23 2012
parent Jacob Carlborg <doob me.com> writes:
On 2012-07-23 13:45, Sönke Ludwig wrote:

 I thought it doesn't yet support C++? But anyways, next time I have to
 make bindings for a C library I'll definitely try dstep.

No, it doesn't support C++. I was thinking about generating bindings for the C API. -- /Jacob Carlborg
Jul 23 2012
prev sibling next sibling parent Jens Mueller <jens.k.mueller gmx.de> writes:
S=F6nke Ludwig wrote:
 Am 20.07.2012 07:35, schrieb Jens Mueller:
Hi,

I've written some Deimos interface for LLVM.
https://github.com/jkm/deimos-llvm/commits/master

I'd like to get some feedback on those.
Firstly to finish these and secondly to finish some guidelines that I'd
like to propose to be published on dlang.org.

Jens

Are the bindings for 3.0 or 3.1? I'm asking because at least some enum members have changed (don't exactly remember which).

It's 3.1. Jens
Jul 22 2012
prev sibling parent "David Nadlinger" <see klickverbot.at> writes:
On Monday, 23 July 2012 at 06:56:26 UTC, Sönke Ludwig wrote:
 I wonder if it's feasable to compile LLVM using DMC and then 
 use extern(C++) to make an object oriented interface at some 
 point, possibly using SWIG or something.

The fact that the LLVM C++ API uses templates quite heavily might turn out to be a problem in that regard. I didn't have a look at how feasible it would be to just »pre-instantiate« all the needed combinations, though. David
Jul 23 2012