I have worked on differentiating algorithms written in Fortran 90/95 using Tapenade (http://www-sop.inria.fr/tropics/tapenade.html) with moderate success.
For more expressive languages the source transformation process rapidly tends towards the impossible. However, I speculate that in D some of its language features (e.g. mixin, scope) may facilitate differentiation without recourse to an external tool. I don't know D well enough, and I am not familiar with the possible trickery that can be done with such a language, but if there is someone who does have some understanding of automatic differentiation and is competent with D, I'd be very interested in your comments as to whether or not such a pursuit is worthwhile. Thank you Dominic Jones