58

不同 D 编译器的优缺点是什么?性能和标准合规性/D2 支持如何?调试器的支持程度如何?错误消息有多好,IDE 集成如何?64位支持有多好?到目前为止我的想法:

DMD

  • 成熟且维护良好
  • 只有一个平台,64位支持不好
  • 不是自由源码软件

游戏开发中心

  • 支持各种平台
  • 有非常成熟的优化,所以很快?
  • 过时的运行时间?
  • GCC这么好的调试器支持?

最不发达国家

  • 支持各种平台
  • LLVM,所以它支持 JITing?
  • 有非常成熟的优化,所以很快?
  • 保养得不是很好?
  • 过时的运行时间?

死/不工作

  • sdc
  • MiniD - 非常非常好,但不是 D(但从未声称是)

我正在考虑以 ARM 为目标,我认为 GDC 是首选工具,但我不确定。

4

4 回答 4

25

DMD 是参考实现,后端和前端都是开源的。代码生成质量并不是那么压倒性的。

GDC 和 LDC 都是基于 DMD 前端,因此可能需要一些时间才能合并新版本的前端。
由于他们使用的后端非常成熟和良好,这些编译器的质量主要取决于连接的胶水代码前端和后端。

LDC 和 GDC 仍在积极开发中,但主要是由少数几个人开发的。
总而言之,他们可以使用一些人力。

于 2011-07-20T20:06:15.040 回答
9
  1. DMD 的显着缺点是共享库不足:
  2. 我个人对 GDC 支持 D2 感到惊讶,但他们说它支持:
    • D1:1.067
    • D2:2.053

  3. LDC 似乎几乎没有人维护:“D2 is working on x86-32 Linux only”。对我来说,这是一个引人注目的问题。

  4. 在搜索 LDC 时,我发现了另外一个编译器(?!):dil。我还没有测试过它,但至少它目前得到了维护。我会尽快研究更多关于这个主题的内容。编辑:正如评论中指出的那样,dil目前还没有接近完整的状态——它只能解析代码并从源代码生成文档。
于 2011-07-21T09:40:27.523 回答
3

截至 2012 年 2 月,LDC 似乎并不是一个真正可用的选项(至少在 Debian 上)。

例如,考虑D 书中的第一个程序:

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——当前的 D 运行时库。看起来可以构建 LDC 的 D2 版本,包括 Phobos,但至少在 Debian 上不是这样。

GDC,当然还有 DMD,都可以很好地编译上面的内容。看起来 GDC 是最新的(DMD 两个月前发布了 2.057,GDC 现在支持它)。

对我来说,GDC 是显而易见的选择,因为一个简单的 ' apt-get -V install gdc' 可以毫无问题地引入编译器和 Phobos 运行时(在 Debian 不稳定版上测试)。

于 2012-02-25T00:06:06.173 回答
0

DMD 用于开发,因为它在生产中编译得更快你可以使用 LDC 或 GDC 所有 D 语言编译器都使用相同的前端,但它们在后端不同

于 2021-12-27T19:46:45.370 回答