Actually unlike C++ and Rust you can have a lean D and most probably it can perform as good as Zig if not better. D has excellent CTFE support similar to Zig and D has no macro as well. If you want extra memory safety with ownership support D has that feature covered.
I doubt this is really meaningful. The performance-ceiling on all four languages is presumably very high, as they all allow you to write hand-optimised low-level code if you want to.
[1]https://dlang.org/blog/2017/08/23/d-as-a-better-c/
[2]https://dlang.org/blog/2017/08/01/a-dub-case-study-compiling...
Since C++ is more relevant to what I do, naturally I keep validating how good they fair and so far not good.
Lifetimes checker for example, is only able to deal with basic workflows and when it complains the error messages aren't that good, leaving you wonder why the analyser considered it an incorrect lifetime.
Main reason being, if the call sites aren't annotated, it can only guess the lifetime use, and mostly it gets it wrong.
No doubt if they keep throwing money at it, they might eventually solve it, however this is already a three year effort and this is the best so far.