2013-03-03 64 views
5

我在看D的许可证,看到前端是开源的,但后端不是;后端是什么?D语言是否有任何“专有”行李?

为什么GNU制作gdc?它与授权有关吗?

+3

我投票结束这个问题作为题外话题,因为它涉及许可或法律问题,而不是编程或软件开发。 [见这里](http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964)和[here](http://meta.stackexchange.com/questions/139804/can-许可问题永远在主题上)以获取详细信息,以及[帮助]了解更多信息。 – JasonMArcher 2015-06-16 16:40:04

回答

11

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

DMD是D的闭源默认实现。它是功能完整的,但可能不是最好的编译器性能。

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

LDC针对LLVM平台。这允许一些有趣的东西,如高速编译,便携式字节码和jitting。

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

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的更多信息。

+0

对于它的价值(几个月后),还有一个D for .NET编译器。 [链接](http://dnet.codeplex.com/) – nerdenator 2013-05-31 03:34:59

+0

我从未听过有关D.NET多年的消息......很多人都说它是死的项目。可惜,这是一个有趣的项目,恕我直言。 – DejanLekic 2013-05-31 11:56:45