D as an extension language for C
IGotD-
nise at nise.com
Sun May 14 08:21:24 UTC 2023
On Saturday, 13 May 2023 at 18:09:33 UTC, Walter Bright wrote:
>
> D was designed from the beginning to leverage off of existing C
> code. D's foreign function interface with C is excellent.
>
I thought it was C++ you wanted to leverage.
> But D itself cannot read C .h files nor .c files (a capability
> that C++ has and has used to great advantage). .h files must be
> laboriously converted to D. We've done a lot of the usual
> system .h files conversions, such as core.stdc.stdio, they are
> in druntime.
>
> The Deimos project is to collect crowd-sourced conversions of C
> .h files.
>
> The fundamental problem with hand conversions is they are
> tedious, boring work that nobody wants to do. They also need
> redoing whenever the vendor of the .h file changes them. As the
> D community grows, this simply does not scale.
>
> Then there were three attempts at programmatic conversion of .h
> to .d files, one written by me, one by Jacob, and one by Atila.
> Those brought us to 3rd base.
>
> To do a home run, the compiler needs to understand C code
> directly - this is ImportC.
>
You keep mention on this forum that you keep on hitting corner
cases with importC which s expected. C is old and there many
quirks, non-standard and compiler specific code out there. I
would still gone the converter route as it would instead
translate the .h file to native D which you then can use natively
within D. For example you haven't enabled C macros to be used
within D, with a converter you could have converted the macro to
D code (mixin?). I think that would have scaled better than
trying to retrofit a C compiler into D compiler. Also why should
C be a first class citizen and not C++, Rust etc. Since there are
plenty of languages out there a converter project for each
language is more convenient.
I'm a bit afraid that importC will be a feature that needs
constant patching and consume time.
More information about the Digitalmars-d
mailing list