Symbols are the ultimate representation of any native programming language, language features. When they not represented correctly at either the compiler level or language level, things fail to link. This has some serious potential to cause frustration on a level that abandons all hope of a solution working. The purpose of this DIP is to remove common failings that will cause D to not link against and as a shared library on a multitude of platforms and targets.
To do this we must offer the compiler the ability to distinguish between a module that is going into the currently building binary, as well as representing modules that is not in the currently building binary. From this we can determine what symbol mode a symbol must be in more accurately than what is possible right now.
It will also be important to note that the D interface generator is currently very limited in its ability to produce functional D files that represent its input. While this DIP does not attempt to solve many of its sh