Here are some ways that D3 can be an improvement of D2:
-Final by default
-A standard library that is effective with or without garbage
collection
100% OK about the optional garbage collector, but I have to
totally disagree with you on the "final by default" approach.
The current design keeps the code open to extension, in a
perfectly complementary way to UFCS.
They are both incredibly useful, and are part of what makes D2
perfectly work as a strongly-typed JavaScript-like scripting
language.
(I just had another proof of that this morning, see my recent
post.)
And dropping C++ compatibility is a complete non-sense IMHO.
If you want more people using D, its interoperability with C and
C++ should instead be improved, so that D applications can
quickly and easily use any C/C++ 3D/2D/VR/audio multimedia
libraries for instance...