For a specific system (Linux, e.g):
What is the level of interoperability between the different D compilers; DMD, LDC, and GDC?
It appears each one has different benefits, and, different experimental features. Link-time optimization for LDC. GDC offering static analysis. I imagine there are more.
If I compile a D program with say, DMD, will every D library I include also have to use that same compiler (and compiler version) from scratch and need recompiled? Or is there a pre-defined ABI that makes everything compatible? If I use shared libraries instead of static linking, does the situation change?
Additionally, how do the debuggers GDB vs LLDB behave when compiled using a different brand D compiler? (e.g. demangling)
I have my own experiences but I'm not sure if there's clear cut "yes, definitely it's [this case]." answers out there.