Hm...I've looked into it a bit, but honestly I'm thinking of just sticking with C. Why? Well...currently, no one (that I know of) makes a uC that you can program in D (yeah, you can just re-target a compiler to pump out assembly after writing in D, but I'm not really into that and no one has done THAT either).
Most of the uCs I use can be programmed in C, and there are SO MANY little idiosyncracies that exist in each uC that each time you learn to program a new one it's essentially a new language anyway (ever try to get interrupts working on an ARM Cortex? Let me tell you something: if you want to transcend space and time trying to figure something out, ARM Cortex interrupts are the way to go about doing it). So I'd rather just stick with C and call it a day.