不同D编译器的优缺点是什么?性能和标准合规性/ D2如何支持?调试器的支持程度如何?错误消息有多好,IDE集成是什么? 64位支持有多好?到目前为止我的想法:
DMD
-
成熟且维护良好
-
只有一个平台,64位支持不好
-
不是FOSS
GDC
-
支持各种平台
-
有非常成熟的优化,所以它很快?
-
过时的运行时间?
-
GCC这么好的调试器支持?
LDC
-
支持各种平台
-
LLVM,所以它支持JITing?
-
有非常成熟的优化,所以它很快?
-
维护得不是很好?
-
过时的运行时间?
dead/not working
-
党
-
sdc
-
MiniD - 非常,非常好,但不是D(但从未声称是)
我正在考虑针对ARM,我认为GDC是首选工具,但我不确定 .
3 回答
DMD是参考实现 . 只有后端是专有的,前端是开源的 .
代码生成质量不是那么令人难以置信 . x64支持仅仅几个月了 .
GDC和LDC都基于DMD前端,因此可能需要一些时间才能合并新版本的前端 .
由于它们使用的后端非常成熟,所以这些编译器的质量主要取决于连接前端和后端的胶水代码 .
最不发达国家和GDC仍然积极发展,但主要是由少数人 .
总而言之,他们可以使用一些人力 .
DMD的重大缺点是共享库缺陷:
on Windows
on Linux
我个人很惊讶GDC支持D2,但they say it does:
D1:1.067
D2:2.053
最不发达国家似乎几乎没有维持:"D2 is working on x86-32 Linux only" . 对我来说,这是一个显而易见的问题 .
在搜索LDC时,我发现了另外一个编译器(?!):dil . 我目前还没有't tested it yet, but at least it' . 我会尽快研究这个话题 . EDIT: 正如评论中指出的那样,
dil
目前还没有接近完全状态 - 它只能解析代码并从源代码生成文档 .截至2012年2月,似乎最不发达国家并不是一个真正可行的选择(至少在Debian上) .
例如,考虑D book中的第一个程序:
这将无法在我的系统上使用LDC进行编译:
dlang.org的第一个项目也是如此:
这是因为我的最不发达国家不支持Phobos--the current D runtime library . 看起来有可能构建一个D2版本的LDC,包括Phobos,但这不是它至少在Debian上发布的方式 .
GDC,当然还有DMD,都编译上面就好了 . 看起来GDC是最新的(两个月前DMD发布了2.057,GDC现在支持它) .
对我来说,GDC是显而易见的选择,因为简单的'
apt-get -V install gdc
'带来了编译器和Phobos运行时没有问题(在Debian unstable上测试) .