On Monday, 10 April 2017 at 11:40:12 UTC, Matthias Klumpp wrote:
Hi there!
[...]
If we do that, we will run into the D ABI trap: Libraries compiled with compiler X can not be used from software compiled with D compiler Y. There is actually no ABI stability guarantee even between DMD releases. This will make integrating D a huge pain. Recompiling the dependency-chain of a software from source when compiling a package using the "right" compiler and statically adding the code is forbidden by distro policy. Having static libraries in the dependencies doesn't solve the issue. Compiling each library with all D compilers is highly impractical and not really feasible. So, how should we proceed here? We could make it "DMD is the only thing on the highway" compiling everything with DMD with zero exceptions, which would leave us with only DMD-internal ABI breakage and bad D code performance for some libraries.

I am working on a project that will require to be used almost exclusively with LDC (targeting the GPU backends of LLVM), and while technically only the mangling needs to match using any other complier will likely be a major workflow impediment. Perhaps it is reasonable to make them compile the stdlibs for LDC, but if it becomes as popular as I hope (dominating it's niché) it may be worthwhile considering shipping prebuilts.

Reply via email to