D is more like an improved C++ with GC.
The type system is quite similar to C++'s one, just that the language has better support for meta-programming, modules, packages and explicit notion of unsafe code (system in D speak).
Code generation at compile time is done via compile time code execution, templates or plain replacement.
It has a GC, but like all GC enabled systems programming languages, has mechanisms to control its execution, forbid its use in performance critical sections (@nogc attribute) or just manually allocate memory via stack, globals or plain OS calls.
Can you give Some compare on their type system detail? Thanks.