D言語
概要
型推論やガベージコレクション（明示的なメモリ管理も可能である）、スライスが可能な動的（および静的）配列、連想配列など効率的なプログラミングを可能にする言語機能を備えている。単体テスト、事前・事後条件のチェックや不変条件のチェック（契約プログラミング）、debug 識別子の導入など、プログラムのデバッグ・保守に対しても重点的にサポートしている。並列処理との親和性も重視しており、明示しない限りグローバル変数がスレッド局所記憶であり、不変なデータ型（イミュータブル）がサポートされている。また、標準ライブラリであるPhobosにもメッセージパッシング等を用いた並列（および並行）処理が実装されている。
C++のようなテンプレートやメタプログラミング機構を備えているが、テンプレート構文が簡潔な形に再設計されているなどの違いがある。コンパイル時関数実行を備えていることも特徴である。
D言語はシステムプログラミング言語としての側面も持つ。分かりやすいコードが高速かつ安全に動作するという言語設計を目指しているが、一方でパフォーマンスが要求される箇所では、インラインアセンブラやポインタ演算などを利用できる。これらの機能や、危険な型変換などを用いたコードは関数の属性によって安全なコードと分離されるようになっている（関数の属性には、この他にも純粋な関数を示すものなどがある）。
統一関数呼び出し構文(Uniform Function Call Syntax, UFCS)
オブジェクト指向におけるメソッド呼び出しと同じ構文でフリー関数（グローバルレベルで宣言された関数）を呼び出すことができる機能。
関数の左側に置かれた値が第1引数として評価され、一般に「メソッドチェイン」と呼ばれる記述を可能にする。
プログラミング言語Nimにも同様の言語機能が存在する。
import std.stdio;void main(){
    // 以下の2つは同じ結果となる
    writeln(square(square(2))); // 8
    2.square().square().writeln(); // 8}// 引数を二乗して返す関数int square(int n){
    return n * n;}
D1とD2
D1は、機能的には成熟したとされ、メンテナンスモードに移行している。標準ライブラリの非力さを補うためTangoライブラリとセットで利用されることが多い。なお、D1は2012年いっぱいでのサポート停止がアナウンスされた。
当初D2は、新しい機能を積極的に取り込むための開発系バージョンとして分離された。標準ライブラリPhobosが強化され、また言語仕様の面では文字列型 (string) が変更不可能な配列となり、スレッド局所変数がデフォルトとなったなど、言語機能のさまざまな変更が行われ、D1の上位互換ではない。互換性より言語やライブラリの改良を重視し、言語機能やライブラリの破壊的変更が頻繁に起きるのも特徴の一つであった。現在では、推奨されない、あるいは廃止される機能としてコンパイル時に警告が表示され、また公式ドキュメントなどで事前に告知されるようになっている。