D语言是否有任何“专有”行李?

时间:2013-03-03 18:10:35

标签: licensing d gnu

我正在看D的许可,看到前端是开源的,但后端不是;什么是后端?

为什么GNU会生成gdc?它与许可有关吗?

2 个答案:

答案 0 :(得分:11)

有不同的编译器有不同的目标。前端分析源代码,而后端执行实际编译。由于前端是开源的,它可以用于多个编译器。

DMD 是D的闭源默认实现。它功能齐全,但可能不是性能最佳的编译器。

GDC 使用成熟的GNU compiler collection作为后端。相同的后端广泛用于C或C ++编译,并且能够进行高级优化。

LDC 定位LLVM平台。这允许一些有趣的东西,如高速编译,可移植字节码和jitting。

由于前端在所有编译器之间共享,因此一个源文件将在每个编译器上以相同的方式解析。将此与C或C ++方言进行比较。

答案 1 :(得分:6)

DMD只是D编译器的参考实现,就像说Glassfish是企业Java应用服务器的参考实现一样。 DMD的后端源于DigitalMars C / C ++编译器。有意义,因为原始D创建者是DigitalMars C / C ++编译器的作者,对吧?沃尔特无法在法律上完全开源后端,因为部分内容是在赛门铁克手中制作的......

其次,GNU 没有制作GDC - 它是由少数发烧友制作的,希望很快就会合并到GCC树中。 GDC就像GPL一样简单。

也提到了LDC--它使用LLVM作为后端。

真正重要的是D前端是开源的。事实上,DMD的后端不是无关紧要的,因为有太多的选择。无论如何,GCC和LLVM后端都优于DMD后端。

如果您正在进行编译器/解释器设计,我建议您查看SDC,MCI和DIL项目。我想你在http://wiki.dlang.org上有更多关于它们的信息。