不同D编译器的优点/缺点是什么?性能和标准合规性/ D2如何支持?调试器的支持程度如何?错误消息有多好,IDE集成是什么? 64位支持有多好?到目前为止我的想法:
DMD
GDC
LDC
死亡/无效
我正在考虑针对ARM,我认为GDC是首选工具,但我不确定。
答案 0 :(得分:23)
DMD是参考实现。只有后端是专有的,前端是开源的 代码生成质量不是那么令人难以置信。 x64支持只有几个月了。
GDC和LDC都基于DMD前端,因此可能需要一些时间才能合并新版本的前端。
由于它们使用的后端非常成熟,所以这些编译器的质量主要取决于连接前端和后端的胶水代码。
LDC和GDC仍在积极发展,但主要是由少数人发展 总而言之,他们可以使用一些人力。
答案 1 :(得分:8)
dil
目前还没有接近完全状态 - 它只能解析代码并从源代码生成文档。答案 2 :(得分:3)
截至2012年2月,似乎最不发达国家并非真正可用(至少在Debian上)。
例如,考虑D book中的第一个程序:
import std.stdio;
void main(string[] args)
{
writeln("Hello, world!");
}
这将无法在我的系统上使用LDC进行编译:
hello.d(24): Error: module stdio cannot read file 'std/stdio.d'
dlang.org的第一个项目也是如此:
import std.stdio;
void main() {
ulong lines = 0;
double sumLength = 0;
foreach (line; stdin.byLine()) {
++lines;
sumLength += line.length;
}
writeln("Average line length: ",
lines ? sumLength / lines : 0);
}
这是因为我的LDC不支持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上测试)。