Thread overview
interoperability with C++
Feb 11, 2004
Ben Hinkle
Feb 12, 2004
Walter
Feb 12, 2004
Bastiaan Veelo
Feb 12, 2004
Matthew
Feb 12, 2004
Robert M. Münch
Feb 12, 2004
Sean Kelly
Feb 12, 2004
Ben Hinkle
Feb 14, 2004
Angelo Moscati
February 11, 2004
One thing that would be a huge plus for D compared to any other language
would be good C++ interoperability of some kind. Playing well with C is a
requirement for any serious language. My bet is playing well with C++ will
be just as important in the future, if not already.
Java has a useful but fairly clunky interface to C++ (JNI) and C# has
Managed Extensions to C++ (though I don't know any details about it). D
doesn't seem to have anything planned here or a story to tell users. Any
time C++ code wants to talk to D code or vice-versa you have to go through
C.

I noticed the dmd source code has a linkage enum entry for C++ (in addition to the C, Pascal, D and Windows options already implemented). What are the major obstacles to implementing it?

-Ben


February 12, 2004
"Ben Hinkle" <bhinkle4@juno.com> wrote in message news:c0dugh$enh$1@digitaldaemon.com...
> One thing that would be a huge plus for D compared to any other language
> would be good C++ interoperability of some kind. Playing well with C is a
> requirement for any serious language. My bet is playing well with C++ will
> be just as important in the future, if not already.
> Java has a useful but fairly clunky interface to C++ (JNI) and C# has
> Managed Extensions to C++ (though I don't know any details about it). D
> doesn't seem to have anything planned here or a story to tell users. Any
> time C++ code wants to talk to D code or vice-versa you have to go through
> C.
>
> I noticed the dmd source code has a linkage enum entry for C++ (in
addition
> to the C, Pascal, D and Windows options already implemented). What are the major obstacles to implementing it?

The problem is the layout of the vtbl[]. To get that right, you have to build part of a C++ compiler.


February 12, 2004
Walter wrote:
> "Ben Hinkle" <bhinkle4@juno.com> wrote in message
> news:c0dugh$enh$1@digitaldaemon.com...
> 
>>One thing that would be a huge plus for D compared to any other language
>>would be good C++ interoperability of some kind. Playing well with C is a
>>requirement for any serious language. My bet is playing well with C++ will
>>be just as important in the future, if not already.
>>Java has a useful but fairly clunky interface to C++ (JNI) and C# has
>>Managed Extensions to C++ (though I don't know any details about it). D
>>doesn't seem to have anything planned here or a story to tell users. Any
>>time C++ code wants to talk to D code or vice-versa you have to go through
>>C.
>>
>>I noticed the dmd source code has a linkage enum entry for C++ (in
> 
> addition
> 
>>to the C, Pascal, D and Windows options already implemented). What are the
>>major obstacles to implementing it?
> 
> 
> The problem is the layout of the vtbl[]. To get that right, you have to
> build part of a C++ compiler.
> 

If I understand this right, it _can_ be done, but implementing C++ interoperability would to a large extent undo the advantages of the D design for clean compiler code, and the added complexity would not be in proportion to what is needed to compile plain D.

As much as it would be a pain for all of you putting so much effort in getting rid of C++ badness, would not it be doable to have two flavors of D compilers? One that does clean D and takes full advantage of its design, and an other that provides C++ interoperability, however cludgy?
You would use the beautiful pure D compiler whenever possible, and the bulky ugly one when you need interoperability with C++.

The D.gnu newsgroup is showing promising results recently, and since GCC already compiles C++, would it be possible to use the vtbl[] stuff that is already there? Also DM has a C++ compiler, which I hope means that relevant parts can be glued into its D compiler...? Not that this would be trivial, but probably not as bad as having to build part of a C++ compiler (from scratch) either.

I am not in the same leage as most of you, and I have great respect for the work being done here. But I had to mention this --- I hope it makes sence :-)

Bastiaan.

February 12, 2004
On Wed, 11 Feb 2004 20:18:02 -0800, Walter <walter@digitalmars.com> wrote:

> The problem is the layout of the vtbl[]. To get that right, you have to
> build part of a C++ compiler.

Well, you have a nice C++ compiler at hand. I wouldn't mind if I only can link it with DMC++ compiled code. At least this would makes bootstrapping D projects much simpler. Over time D libraries will develop and replace more and more C++ libaries.

I would add DMC++ compatibility.

-- 
Robert M. Münch
Management & IT Freelancer
http://www.robertmuench.de
February 12, 2004
"Walter" <walter@digitalmars.com> wrote in message news:c0ev8k$24q3$1@digitaldaemon.com...
|
| "Ben Hinkle" <bhinkle4@juno.com> wrote in message
| news:c0dugh$enh$1@digitaldaemon.com...
| > One thing that would be a huge plus for D compared to any other language
| > would be good C++ interoperability of some kind. Playing well with C is a
| > requirement for any serious language. My bet is playing well with C++ will
| > be just as important in the future, if not already.
| > Java has a useful but fairly clunky interface to C++ (JNI) and C# has
| > Managed Extensions to C++ (though I don't know any details about it). D
| > doesn't seem to have anything planned here or a story to tell users. Any
| > time C++ code wants to talk to D code or vice-versa you have to go through
| > C.
| >
| > I noticed the dmd source code has a linkage enum entry for C++ (in
| addition
| > to the C, Pascal, D and Windows options already implemented). What are the
| > major obstacles to implementing it?
|
| The problem is the layout of the vtbl[]. To get that right, you have to
| build part of a C++ compiler.
|

Would it be possible to have an API to use D objects from C++ (instead of the other way around)? I notice the D spec describes the object layout and vtbl, so that is a start. Some way to call constructors would probably be needed.

Also it occurred to me that COM provides a basic story on win32. For other platforms maybe CORBA could help (though that would probably bring a lot of infrastructure). It wouldn't be as nice as seemlessly interoperating but it is a step beyond "extern (C)".

-Ben


February 12, 2004
I vote no

"Bastiaan Veelo" <Bastiaan.N.Veelo@ntnu.no> wrote in message news:c0fija$35n$1@digitaldaemon.com...
> Walter wrote:
> > "Ben Hinkle" <bhinkle4@juno.com> wrote in message news:c0dugh$enh$1@digitaldaemon.com...
> >
> >>One thing that would be a huge plus for D compared to any other language would be good C++ interoperability of some kind. Playing well with C is
a
> >>requirement for any serious language. My bet is playing well with C++
will
> >>be just as important in the future, if not already.
> >>Java has a useful but fairly clunky interface to C++ (JNI) and C# has
> >>Managed Extensions to C++ (though I don't know any details about it). D
> >>doesn't seem to have anything planned here or a story to tell users. Any
> >>time C++ code wants to talk to D code or vice-versa you have to go
through
> >>C.
> >>
> >>I noticed the dmd source code has a linkage enum entry for C++ (in
> >
> > addition
> >
> >>to the C, Pascal, D and Windows options already implemented). What are
the
> >>major obstacles to implementing it?
> >
> >
> > The problem is the layout of the vtbl[]. To get that right, you have to build part of a C++ compiler.
> >
>
> If I understand this right, it _can_ be done, but implementing C++ interoperability would to a large extent undo the advantages of the D design for clean compiler code, and the added complexity would not be in proportion to what is needed to compile plain D.
>
> As much as it would be a pain for all of you putting so much effort in getting rid of C++ badness, would not it be doable to have two flavors of D compilers? One that does clean D and takes full advantage of its design, and an other that provides C++ interoperability, however cludgy? You would use the beautiful pure D compiler whenever possible, and the bulky ugly one when you need interoperability with C++.
>
> The D.gnu newsgroup is showing promising results recently, and since GCC already compiles C++, would it be possible to use the vtbl[] stuff that is already there? Also DM has a C++ compiler, which I hope means that relevant parts can be glued into its D compiler...? Not that this would be trivial, but probably not as bad as having to build part of a C++ compiler (from scratch) either.
>
> I am not in the same leage as most of you, and I have great respect for the work being done here. But I had to mention this --- I hope it makes sence :-)
>
> Bastiaan.
>


February 12, 2004
Robert M. Münch wrote:

> On Wed, 11 Feb 2004 20:18:02 -0800, Walter <walter@digitalmars.com> wrote:
> 
>> The problem is the layout of the vtbl[]. To get that right, you have to
>> build part of a C++ compiler.
> 
> Well, you have a nice C++ compiler at hand. I wouldn't mind if I only can link it with DMC++ compiled code. At least this would makes bootstrapping D projects much simpler. Over time D libraries will develop and replace more and more C++ libaries.
> 
> I would add DMC++ compatibility.

I think it would add too much complexity to the D compiler implementation.  I vote no.


Sean

February 14, 2004
I don't have a good knowledge about compilation, but I thought if it is
possible
to write a tool that automatically generate from a c++ library a interface
for use it.

I'm sorry for my english, what i mean is that the tool write a D module that
define
a class.
This class has all the public methos of the original class in the c++
library.
When someone calls a method from this class, it will do all the necessary
operations
(I don't know what) and after it executes the original method ( I assume we
can know where
the method is from the vtbl).
Please tell me if something lime this is possible.

"Walter" <walter@digitalmars.com> wrote in message news:c0ev8k$24q3$1@digitaldaemon.com...
>
> "Ben Hinkle" <bhinkle4@juno.com> wrote in message news:c0dugh$enh$1@digitaldaemon.com...
> > One thing that would be a huge plus for D compared to any other language would be good C++ interoperability of some kind. Playing well with C is
a
> > requirement for any serious language. My bet is playing well with C++
will
> > be just as important in the future, if not already.
> > Java has a useful but fairly clunky interface to C++ (JNI) and C# has
> > Managed Extensions to C++ (though I don't know any details about it). D
> > doesn't seem to have anything planned here or a story to tell users. Any
> > time C++ code wants to talk to D code or vice-versa you have to go
through
> > C.
> >
> > I noticed the dmd source code has a linkage enum entry for C++ (in
> addition
> > to the C, Pascal, D and Windows options already implemented). What are
the
> > major obstacles to implementing it?
>
> The problem is the layout of the vtbl[]. To get that right, you have to build part of a C++ compiler.
>
>