3 ms·
That's more a question of entanglement between the runtime and the language, than a question of GC performance. Most of our projects, at work, are in D, and we
by Ace17 10y ago
That's more a question of entanglement between the runtime and the language, than a question of GC performance. Most of our projects, at work, are in D, and we never wished for a "higher quality GC" (except at the very start, when we started to use D, and were lured into thinking that "now that we have a GC, we don't need to be cautious with our allocations anymore").
Bare-metal in C and C++ is relatively easy, because the compiler doesn't insert runtime-dependent code to implement language constructions.
Avoiding this in D is a lot more subtle, as you have to know which language features require the runtime.
For example, array copy (dest[0 .. 8] = src[0 .. 8]) will generate a call to the runtime. Almost every operation on associative arrays will also generate such calls.
Class declaration will also generate references to the runtime (for dynamic type information).
However, there are lots of non-runtime things already making D a better C, like array slices and CTFE.
Which means that D is a good systems language, you just have to use it as a better C, and restrict yourself to language features not requiring the runtime.