2011-07-20 35 views
50

不同D編譯器的優點/缺點是什麼?性能和標準符合性/ D2支持如何?調試器支持多好?錯誤消息有多好,是IDE集成? 64位支持有多好?到目前爲止,我的想法:DMD vs. GDC vs. LDC

DMD

  • 成熟,並保持良好
  • 只有一個平臺,64位的支持並不好
  • 不FOSS

GDC

  • 支持各種平臺
  • 有非常成熟的優化,所以它很快?
  • 過時的運行時間?
  • GCC這麼好的調試器支持?

LDC

  • 支持多種平臺
  • LLVM,所以它支持JIT編譯?
  • 有非常成熟的優化,所以它很快?
  • 維護得不好嗎?
  • 過時的運行時間?

死了/不工作

  • SDC
  • MiniD - 非常,非常好的,但不是d(從來沒有聲稱自己是,雖然)

我正在考慮瞄準ARM,我認爲GDC是首選工具,但我不確定。

+2

DMD是參考實現(儘管漏洞),它進入跨平臺 –

+0

VisualD與cv2pdb對DMD http://www.dsource.org/projects/visuald/wiki/Tour/Debugger –

回答

21

DMD是參考實現。只有後端是專有的,前端是開源的。代碼生成質量並不是那麼強大。雖然x64的支持只有幾個月的時間。

GDC和最不發達國家是基於DMD前端既如此,直到前端的新版本中被合併,可能需要一些時間。
因爲他們使用的後端是非常成熟和良好的這些編譯器的質量主要取決於在連接前端和後端的膠水代碼上。

LDC和GDC仍然在積極發展,但主要由少數幾個人發展。
總而言之,他們可以使用一些人力。

+0

很好的調試支持怎麼辦GDC和LDC支持Druntime和Tango,Phobos?看起來有問題。 – Fritz

+0

LDC對Tango有很好的支持。不瞭解GDC。 GDC擁有最新的phobos2分支,LDC的分叉現在已經2個月大了。 – Trass3r

+3

LDC還活着。 https://bitbucket.org/lindquist/ldc/changesets – Trass3r

7
  1. DMD的顯着缺點是共享庫缺乏:
  2. 我個人感到驚訝的是GDC支持D2,但they say it does
    • D1:1.067
    • D2:2.053

  3. LDC肯定似乎很少維護:"D2 is working on x86-32 Linux only"。對我而言,這是一個不爭的問題。

  4. 在搜索LDC時,我發現了另一個編譯器(?!):dil。我還沒有測試過它,但至少它現在保持了。我會盡快研究這個主題。 編輯:正如在評論中指出的那樣,dil現在還沒有接近完全的狀態 - 它只能解析代碼並從源代碼生成文檔。
+2

不要根據wiki對LDC進行判斷。 開發地點在https://bitbucket.org/lindquist/ldc和fork。 – Trass3r

+0

dil顯然還不能生成二進制文件(它只適用於生成文檔atm)。這是在他們的谷歌代碼頁上說明的。一種無賴,它看起來很酷 –

+0

@安德魯斯波特:嗯...甚至沒有一些中間代表? – vines

3

截至2012年2月,LDC似乎並不是真正的可用選項(至少在Debian上)。

例如,在D book考慮的第一個程序:

import std.stdio; 

void main(string[] args) 
{ 
     writeln("Hello, world!"); 
} 

這將失敗與最不發達國家編譯我的系統上:

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上測試過)。

+5

您的問題是由於配置不正確或缺失('etc/ldc2.conf',通常位於'/ usr/local')。如果文件存在,那麼它內部至少應該有一個''-I {PATH}「開關,指向屬於庫(phobos2)和運行時的源。例如'std/stdio.d'屬於phobos2。我不是專家,但我已經設法在OSX Lion 64位上編譯LDC編譯器(此時爲github上的主編譯器),並且此配置由CMake自動完成。注意:鏈接程序時有一些運行時符號存在問題,但我會提交一個關於它們的補丁。 – Dan

+0

我有同樣的問題。如果缺少配置,則在lmd的Debian包裝中缺少配置。 – poolie

相關問題