I've been eyeing D as well. With GC and exceptions disabled (which is officially supported with the -betterC flag), I think it could be a good replacement for systems/"game dev"-style C++; if you plan to write everything from scratch anyway, it's worth considering alternate languages.
My problems are as follows:
>Unsurprisingly you can't just #include C or C++ header files for C/C++ libraries and platform APIs. You need to either create your own bindings, download someone else's or auto generate them with a third party tool. This isn't that big of a deal but it's something you don't have to worry about with C or C++. You could write just your platform code in C or C++, but at that point you would probably start to wonder why you're bothering to write the core in D.
>The leads do want to change this, but at the moment the standard library is absolutely not ready to be used without GC or exceptions. You are on your own if you decide to use -betterC. You'd be in pretty much the same boat with C, but C++'s standard library has arguable usefulness, and it would have been nice if D were "halfway between C and C++ with a better standard library"
>The language in general is like a better version of the style of C++ that was in vogue 10 years ago. OO, inheritance, exceptions, etc. Programmers have thankfully started to realize that this style is harmful to productivity and performance, so while once again the leads are making steps away from it, it is a shame that so much of a language that purports to be "C++ without the legacy crap" is tied up in a legacy programming style that is on its way out.
>I haven't made serious use of the language yet, but apparently serious bugs with the compiler and/or standard library are commonly reported by some users. I'm not sure how true this is, but if so I would rather not build my empire upon an unstable foundation.
>The leads Walter Bright and Andrei Alexandrescu do have, I think, a sincere desire to steer the language toward "betterC," but the existing userbase seems rooted in the older style, in particular denying that GC could ever be a problem for certain common usecases. You don't have to use the community's code but you are affected by the way they steer development.
And perhaps both the dumbest and greatest problem
>Jonathan Blow has been working on the premier meme-language replacement for C++ for several years now, Jai. It hasn't been released yet and won't be by 2020 at the earliest, but almost everything I've seen indicates that it will one day be the true successor that encourages efficient C-like "data oriented design" with productivity enhancing metaprogramming features and an extensive standard library that covers most of what I'd care about. He certainly, as a guy that has shipped multiple commercial games, talks about problems that are more relevant to game programmers. So it makes me wonder, why should I bother investing heavily in a meme-language when one that is explicitly better suited to my usage is just around the corner? It would probably be smarter to hedge my bets and stick with C or (heavily restricted) C++.