As far as memory is concerned. How hard would it be to simply have DMD use a swap file? This would fix the out of memory issues and provide some safety(at least you can get your project to compile. Seems like it would be a relatively simple thing to add?
It seems unlikely that having dmd use its own swap file would perform better than the operating system's implementation.
