I happened to be reading DMC source this week, those hydrate/dehydrate stuff really is everywhere (which I assume is solely used for precompiled headers?)
I had an intern try to use precompiled headers for the Linux kernel. The road block they found was that the command line parameters used to compile the header must exactly match for all translation units which it is used. This is no the case for the Linux kernel. We could compile the header multiple times, but the build complexity was not something we could overcome during the course of one internship.
I never want to do that again!
They are brittle and a maintenance nightmare. They did speed up compilations, though, but did not provide any semantic advantage.
With D I focused on fast compilation so much that precompiled headers didn't offer enough speedup to make them worth the agony.