首页 文章

DMD与GDC与LDC的比较

提问于
浏览
55

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

DMD

  • 成熟且维护良好

  • 只有一个平台,64位支持不好

  • 不是FOSS

GDC

  • 支持各种平台

  • 有非常成熟的优化,所以它很快?

  • 过时的运行时间?

  • GCC这么好的调试器支持?

LDC

  • 支持各种平台

  • LLVM,所以它支持JITing?

  • 有非常成熟的优化,所以它很快?

  • 维护得不是很好?

  • 过时的运行时间?

dead/not working

  • sdc

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

我正在考虑针对ARM,我认为GDC是首选工具,但我不确定 .

3 回答

  • 3

    DMD是参考实现 . 只有后端是专有的,前端是开源的 .
    代码生成质量不是那么令人难以置信 . x64支持仅仅几个月了 .

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

    最不发达国家和GDC仍然积极发展,但主要是由少数人 .
    总而言之,他们可以使用一些人力 .

  • 8
    • 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 目前还没有接近完全状态 - 它只能解析代码并从源代码生成文档 .

  • 23

    截至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);
    }
    

    这是因为我的最不发达国家不支持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上测试) .

相关问题