The forked elephant in the room
Walter Bright
newshound2 at digitalmars.com
Tue Jan 30 03:46:56 UTC 2024
On 1/29/2024 5:59 PM, max haughton wrote:
> Surely you of all people would know that? I was one of the first people (that
> I'm aware of at least) to build and play with ImportC (i.e. slightly prior to it
> being announced) and it immediately blew up (even after preprocessing) on some
> GNU headers -- the trend wasn't hard to see.
My priority was compiling Standard C, not C extensions. I assumed that the gnu C
headers would at least try to stick with Standard C for the Standard C header
files. Oops!
To add more complication, the different Posix versions had dramatically
different Standard C header files, using different extensions.
>>> What has worked surprisingly well is converting C headers to D and then using
>>> traits to create dynamic bindings at compile time. So while it is not what I
>>> originally thought it would be, it's been a win for me in a different way.
>>
>> You and Adam Wilson! An unanticipated use, for sure.
>
> So what dstep has been doing for years?
As has htod that I wrote, and dpp that Atila wrote.
> The value of ImportC is in importing c,
> i.e. thats the thing that the others can't do. Even then I think the lack of
> tools for doing it on the fly as part of a build with (say) dub does reveal that
> the demand is not as great as some think. The language is better with it,
> obviously, but I'm genuinely not sure if the strategic investment has paid off
> i.e. it's still in large viewed as a toy / solution for yesterday's problem
> industrially at least (I think we *switched* to using it for some bits and
> pieces recently it must be said but it didn't enable anything new).
>
> That and the binding generation is probably not as good as what you can do with
> DStep because it works with a higher level and frankly much more modern AST from
> a real C compiler i.e. more info to play with, and info that hasn't potentially
> been through a bunch of D semantic passes - which does mean that you can
> potentially do ExportD, in fairness.
ImportC is a real C compiler. It doesn't need D to compile, link, and run C
programs. It isn't, however, a clone of gcc, clang, or msvc.
The .di code generation happens before semantic analysis, not after.
What info to play with is it missing?
Bottom line - if Dstep works for your purposes, great! Use it!
More information about the Digitalmars-d
mailing list