On Thursday, 26 April 2018 at 03:53:54 UTC, Mike Franklin wrote:
I suggest reading the following 2 items before digging deeper:
https://dlang.org/blog/2017/08/23/d-as-a-better-c/
https://dlang.org/changelog/2.079.0.html#minimal_runtime
I didn’t know D had begun offering serious decoupling like that.
With something like this, we may very well be able to avoid
writing C entirely, at least in-house! Thank you for bringing
that up.
On Thursday, 26 April 2018 at 03:53:54 UTC, Mike Franklin wrote:
The compiler uses the C compiler (unfortunately again) to do
its linking; and it becomes evident that D is in some ways a
layer on top of C.
You can compile some D programs without linking libphobos2, but
will require separate compilation and linking because the
compiler itself actually hard-codes the call to the linker
(actually the C compiler as demonstrated above). Example 3 at
https://dlang.org/changelog/2.079.0.html#minimal_runtime
demonstrates this.
If you use that method, you won't be able to use certain
features of D that have runtime implementations. The obvious
ones are classes, dynamic arrays, and exceptions.
I could go on, but I'd have to make some assumptions about what
you're really after. Feel free to ask more specific questions
and I'll be happy to share what I know (or at least what I
think I know; sometimes I'm wrong).
Mike
So in a way, the D runtime is similar to libstdc++, providing
implementations of runtime language features. But it is also like
C++ in that those language features can be avoided, correct? At
least with the use of minimal D, I mean. This means that as a
language, there is enough granularity to theoretically provide as
few or as many features as one desires for their use case, making
the penning of new C and C++ code redundant? Do I get this right?