さまざまなDコンパイラの長所と短所は何ですか?パフォーマンスと標準コンプライアンス/ D2サポートはどうですか?デバッガーはどの程度サポートされていますか?エラーメッセージとIDE統合はどの程度優れていますか?64ビットサポートはどの程度優れていますか?これまでの私の考え:
[〜#〜] dmd [〜#〜]
[〜#〜] gdc [〜#〜]
[〜#〜] ldc [〜#〜]
dead/not working
ARM=をターゲットにすることを考えています。GDCが最適なツールだと思いますが、よくわかりません。
DMDはリファレンス実装です。プロプライエタリなのはバックエンドだけで、フロントエンドはオープンソースです。
コード生成品質はそれほど圧倒的ではありません。 x64のサポートはまだ数か月前のものです。
GDCとLDCはどちらもDMDフロントエンドに基づいているため、新しいバージョンのフロントエンドがマージされるまでに時間がかかる場合があります。
使用するバックエンドは非常に成熟していて優れているため、これらのコンパイラの品質は主にフロントエンドとバックエンドを接続するグルーコードに依存します。
LDCとGDCは現在も活発に開発されていますが、主に数人で開発されています。
全体として、彼らはある程度の労働力を使うことができました。
dil
は、現時点ではやや完全な状態に近いわけではありません。コードを解析し、ソースからドキュメントを生成します。2012年2月の時点で、LDCは実際には(少なくとも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--現在のDランタイムライブラリ をサポートしていないためです。 Phobosを含むLDCのD2バージョンをビルドすることは可能であるように見えますが、それは少なくともDebianでの出荷方法ではありません。
GDC、そしてもちろんDMDは、どちらも上記をうまくコンパイルします。 GDCはかなり最新のようです(DMDは2か月前に2.057をリリースし、GDCは現在サポートしています)。
私にとって、単純な 'apt-get -V install gdc
'は、コンパイラとPhobosランタイムの両方を問題なくもたらしました(Debian不安定版でテスト済み)。