フォボスとタンゴの2つがあります。私の知る限り、それらは冗長で互換性がありません。彼らに加わる予定はありますか?もしそうなら、それはいつ起こりますか?
4 に答える
druntime と呼ばれる共通コアが D2 用に構築されています。ガベージ コレクションやスレッド化などの低レベルのランタイムは、以前は同じプロジェクトで Phobos と Tango を相互運用する際の障壁でした。Phobos のより高いレベルの機能は、Phobos ランタイムに依存し、Tango にも同様に依存していました。
Phobos のメジャー アップデートがリリースされました (ちょうど昨日 (2009 年 4 月 20 日))。この更新では、D2 の新機能のいくつかを利用しようとし、イテレータに似ていますが、操作が簡単でより強力な範囲の概念を導入しています。D2 フォボスは、パワー不足の D1 フォボスとは大きく異なります。
Tango は、D1 の標準ライブラリとしてははるかに優れています。D2 への移植が進行中であり、D2 が安定すると、さらに急速に進行する可能性があります。大きな問題は、Tango の開発者が D2 の機能を最大限に活用するためにそれを更新するのか、それとも D1 と同じように D2 で動作させることに単に集中するのかということです。
2 つのライブラリとは対照的に、Phobos は、シンプルなものをシンプルにすること、シンタックス シュガー、利便性、および標準ライブラリで実行できることの限界を押し広げることに重点を置く傾向があります。これは、STL と Python の標準ライブラリのクロスのようなもので、奇妙に聞こえます。Tango は Java に似た感じがする傾向があります。幅広い機能に重点を置いており、通常とは異なるユース ケースを適切に処理します。D の正常なサブセット内にとどまり (テンプレート メタプログラミングなどはそれほど多くありませんが、おそらく D の主要な機能はテンプレート メタプログラミングを正常なサブセット ステータスに昇格させることです)、API 設計に対してより実用的なアプローチを採用しています。
私自身の推測 (憶測ですが、かなり理にかなっています) は、Phobos が STL に類似したもの、つまりコア機能の真の標準ライブラリになり、Tango が Boost のようなユーティリティ ライブラリになることです。機能は Phobos や druntime に吸収されます。
最後に、他の人が指摘したように、D1 は安定しているはずなので、ここでは何も変わっていません。
10月の時点で互換性に向けて動いていたようですが、その後どうなったかはわかりません...
編集:
また、これは、実際にマージする計画がないことを示しているようです:
D1の状況に変更はありません。ただし、バージョン 2.020 の D2 では、Phobos が druntime.lib と phobos.lib の 2 つのライブラリに分割されています。これは、Phobos と Tango の両方で共通のランタイムを使用できるようにするためです。両方のライブラリをマージしたり、Tango を DMD のリリースに含めたりする計画はありませんが、これにより、互換性レイヤーなしで両方のライブラリを同時に使用できるようになります。
Tangobosは、この 2 つを両立させるための取り組みです。