I just recently discovered dlang accidentally, after doing a graduate course that had assignment in c, while looking for better alternatives to system programming, I heard about Rust, but D seems to be a really nice alternative to C/C++ as well. I was pretty impressed by the amount of libraries, package manager, IDE support and modern capabilities.
What would be a reason to not use D and prefer for example on Rust for system programming? Is D slower due to garbage collection?
Or in other words, why D didn't "replace" C for system programming?
* The benefits it offers over C++ are (or were) not significant enough to make people invest in the switch
* There were issues in the past with a poor initial standard library (Phobos 1), which led to an alternative standard library, Tango being developed - which was incompatible with Phobos, and resulted in a somewhat divided ecosystem where you had to prematurely pick one or the other. Eventually these issues were ironed out and an improved Phobos became the standard library, with Tango made compatible with it. (The damage was already done though.)
* Library availability lacked compared with C++ - although D could import C standard libraries it was not ABI compatible with C++, and its target audience - C++ programmers, were not going to throw away backward compatibility with all of the libraries they had already written.
* As you suggest, the word "Garbage Collection" scares some people away, despite it being optional.
* It's not backed by a big name - and our industry is obsessed with big names.
* Perhaps a lack of literature and interest by academic institutions to teach it.
None of these are issues for present-day D, but I think people's perception of the language is still affected by them.