"Joakim"  wrote in message news:ynfwlptfuzfutksbn...@forum.dlang.org...

Yes, I'm aware of ddmd. You've mentioned many times that it only works because dmd is written using a very unC++-like style, to the point where github's source analyzer claims that dmd is written in 66.7% C, 28.4% D (presumably the tests right now), 4.4% C++, and 0.5% other. :)

The style dmd is written in makes it a lot easier, but it would still be possible with other styles. As others have said the github numbers have nothing to do with the style of the code, only the naming of the files.

Given tools like libclang, how hard do you think it'd be to translate most of actual C++ to D? If writing such a tool would mean that C++->D translation is the path of least effort for D users who want to integrate with C++, maybe that's the approach that should be taken instead.

A tool that can translate an arbitrary C++ program to D is not going to happen.

A tool that can translate a specific C++ program to D is not particularly difficult to produce, as I've done with dmd. eg multiple inheritance cannot be generally mapped to D code. But in many applications, the use of multiple inheritance _can_ be mapped because it corresponds to classes + interfaces. This type of application-specific knowledge can significantly reduce the complexity.

DDMD actually has a major additional complication that most translations would not have - it is only a partial translation (glue layer stays in C++) and therefore needs abi stability across the boundary. I initially did a non-abi-stable translation of only the frontend, and it was rather easy in comparison.

So no, you can't magically upgrade a project from C++ to D. But it can be done, and is not prohibitively difficult someone experienced with C++ and D.

Reply via email to