I like the discussion. I do want to remind everyone that OPTLINK is very fast and switching to a different linker will likely result performance hit. There are advantages to using COFF as it seems more compilers use that format and D would be more interoperable with other compilers and languages. I think every peice of software has it's own goals which determine what tradeoffs to chose. In my view, the linker should 1) always work and 2) be as fast as possible. OPTLINK passes number 2 with flying colors but is does have bugs. This is obviously due to the fact that it is written in assembly but keep in mind that the performance of the linker affects everyone who uses D. Any performance hit on the linker will be seen in every single build of any D program. Adding 1 second to link time will add 1 second to build time since this process cannot be parallelized (as far as I know).

That being said, if it were up to me I wouldn't abandon OPTLINK so quickly. I would spend time creating a test suite for OPTLINK, and try to comment the code a little better to encourage other developers to contribute. Then I would consider adding support in DMD to generate COFF output files for those who want to link D object files with another linker. I wouldn't make this a huge priority though as one can use an OMF to COFF converter if they really needed it.

Reply via email to