If I've read this correctly, D has been able to dynamic link properly for years, against it's own ABI, the C ABI, or the C++ ABI (e.g. templates, vtables up to single inheritance)
- A library can add new fields to a struct.
- A library's parameterized types can be instantiated with new arguments.
Skimming over the D ABI docs, the compatibility seems much more rigid.