On Monday, 1 May 2023 at 09:17:14 UTC, Eric P626 wrote:
This is a false dilemma: D has full C compatibility.
From what I understand, D can use C, but C cannot use D? It's
like C++: C++ can call C but C cannot call C++.
50% or more of my code will be put in re-usabled libraries. If
I want people to use those libs, I would need to compile them
in C or better C. Because betterC seems to create C libraries.
If D can make C libraries, then indeed, I could do everything
in D.
D can make C libraries, BetterC or no.
The difference is that a vanilla D library has a DRuntime
dependency, meaning the runtime has to be initialised. You can do
that by either writing the `main()` function in D, or manually
initialising the runtime from C before calling other D functions.
Not sure of the specifics but I'm sure it's not too hard. Seems
the C-linked functions in
[core.runtime](https://dlang.org/phobos/core_runtime.html#.Runtime.initialize) ought to do the trick.
In BetterC, there is no DRuntime that needs initialising, but for
a common application DRuntime is worth the hassle to initialise
it many times.