2. It still largely depends on GC (less important actually)
It keeps adding features, but adding features isn't what makes a language worth using. In fact, that's one of the least attractive things about C++ as well.
So my guess:
1. It betted wrong on GC trying to compete with C++.
2. After failing to get traction, kept adding features to it – which felt a bit like there was some feature that would finally be the killer feature of the language.
3. Not understanding that the added features actually made it less attractive.
4. C++ then left the GC track completely and became a more low level alternative to, at which point D ended up in a weird position: neither high level enough to feel like a high level alternative, nor low level enough to compete with C++.
5. Finally: the fact that it's been around for so long and never taking off makes it even harder for it to take off because it's seen as a has-been.
Maybe Walter Bright should create a curated version of D with only the best features. But given how long it takes to create a language and a mature stdlib, that's WAY easier said than done.
The dmd compiler not being open source until 2017[1] made it more or less a non-starter for a great many use cases. That would have been okay in the 80s, but with tons of languages to choose from since the 90s/00s, your language needs something very special to sell licenses.
[1]: Specifically: "The Software is copyrighted and comes with a single user license, and may not be redistributed. If you wish to obtain a redistribution license, please contact Digital Mars."
I think the biggest issue has been trying to always chase the next big thing that eventually could bring mindshare to D, while not finishing the previous attempts, so there are quite a few half baked features by now.
Even Andrei Alexandrescu eventually refocused on C++, and is contributing to some of the C++26 reflection papers.
The new allocators, some corner cases of the destroy and destructors, not everything on Phobos is @nogc friendly, BetterC still chockes on many common C extensions, DIP 1000, the whole set of @live semantics.
Now there is a new GC being redesigned, and there are discussions about a possible Phobos V3.
I play with ImportC occasionally, a lot of those can actually be opt out by undef'ing __GNUC__ on the preprocessor invocation, idk why they don't do that. Oh, now it chokes on C23 features as well because system cpp defines __STDC_VERSION__=202311L now. Edit: that was solved: dlang/dmd/pull/21372
this is spot on. With all due respect to his technical achievement (and maybe I'm just speaking for myself), Walter Bright very much has a "tryhard" persona online, which gives a lot of developers "the ick".
1. It is so big.
2. It still largely depends on GC (less important actually)
It keeps adding features, but adding features isn't what makes a language worth using. In fact, that's one of the least attractive things about C++ as well.
So my guess:
1. It betted wrong on GC trying to compete with C++.
2. After failing to get traction, kept adding features to it – which felt a bit like there was some feature that would finally be the killer feature of the language.
3. Not understanding that the added features actually made it less attractive.
4. C++ then left the GC track completely and became a more low level alternative to, at which point D ended up in a weird position: neither high level enough to feel like a high level alternative, nor low level enough to compete with C++.
5. Finally: the fact that it's been around for so long and never taking off makes it even harder for it to take off because it's seen as a has-been.
Maybe Walter Bright should create a curated version of D with only the best features. But given how long it takes to create a language and a mature stdlib, that's WAY easier said than done.