D 更新履歴
- D 2.019 での変更点
- D 2.018 での変更点
- D 2.017 での変更点
- D 2.016 での変更点
- D 2.015 での変更点
- D 2.014 での変更点
- D 2.013 での変更点
- D 2.012 での変更点
- D 2.011 での変更点
- D 2.010 での変更点
- D 2.009 での変更点
- D 2.008 での変更点
- D 2.007 での変更点
- D 2.006 での変更点
- D 2.005 での変更点
- D 2.004 での変更点
- D 2.003 での変更点
- D 2.002 での変更点
- D 2.001 での変更点
- D 2.000 での変更点
- D 1.0 の更新履歴
- テクニカルサポート
D 2.019 での変更点
Sep 2, 2008新しい/変更のあった機能
- 構造体コンストラクタ を追加
- 特殊メンバ関数 _ctor, _dtor, 等は、 ユーザーの識別子と衝突しないよう先頭に _ がつくようになりました。
バグ修正
- Bugzilla 1322: foreach が invariant の抜け穴になっている
- Bugzilla 1615: inout が文字列リテラルに対する foreach で使用できてしまう
- Bugzilla 1627: _ctor というメソッドでICE
- Bugzilla 1633: !is で、意味の通らない "C style cast illegal" というエラーメッセージ
- Bugzilla 1771: dmd が linux で動かない
- Bugzilla 1773: 長すぎる整数リテラル
- Bugzilla 1785: 不正な配列リテラルを混ぜると無限ループ
- Bugzilla 2176: Assertion failure: 'sz == es2->sz' on line 1339 in file 'constfold.c' (異なる型の文字列の結合)
- Bugzilla 2183: std.c.stdlib のフォーマットが変
- Bugzilla 2190: toHash のドキュメントが古い [D2.0]
- Bugzilla 2232: オブジェクトファイルが -inline でコンパイルされたとき生成されるコードがおかしい
- Bugzilla 2241: DMD がアボート
- Bugzilla 2243: const bool = is(関数リテラル) がおかしいt
- Bugzilla 2262: -inline で -lib ライブラリが壊れる
- Bugzilla 2286: movmskpd のコンパイル結果が拙い
- Bugzilla 2287: std.conv は toString を持つ構造体を引数に取れるべき
- Bugzilla 2289: 巨大なBigIntの文字列化でスタックオーバーフロー
- Bugzilla 2308: 存在しない変数に対するforeachでCTFEがクラッシュ
- Bugzilla 2311: テンプレート内の静的デストラクタが決して呼び出されない
- Bugzilla 2314: 無名クラス変数のインスタンス化でクラッシュ
- Bugzilla 2316: std.file のドキュメントが古い
- Bugzilla 2317: インラインアセンブラの offsetof で: Internal error: ../ztc/cod3.c 2651
D 2.018 での変更点
Aug 7, 2008新しい/変更のあった機能
- 配列演算に対応
バグ修正
- 衝突を減らすために、ライブラリ生成時にはモジュール名にハッシュを追加するようにしました
- Bugzilla 1622: TypeInfo_Struct.compare へのパラメタが逆になっている?
- Bugzilla 1644: Templateのインスタンス化の際には、いずれにせよ引数がconstの場合はconst性の関係をなくすためにconstへとキャストすべき
- Bugzilla 2216: 長さ0の静的配列の静的配列に対するコード生成がおかしい
- Bugzilla 2223: エラーメッセージのタイポ
- Bugzilla 2231: bigint のドキュメントが無い
- Bugzilla 2242: Linux のシステムこー路が GC でキャンセルされる
- Bugzilla 2247: if (auto o = ...) {} に対し不正なヘッダが生成される
- Bugzilla 2248: 拡張子 .di はサポートされるべき
- Bugzilla 2250: user32.lib と kernel32.lib の更新
- Bugzilla 2254: 一気に実行ファイルサイズが3倍に?!
- Bugzilla 2258: Docs -> Inline Assembler -> Operand Types -> qword が抜けている
- Bugzilla 2259: Assertion failure: '0' on line 122 in file 'statement.c'
- Bugzilla 2266: opEquals のドキュメントがまだ int を返している
- Bugzilla 2269: D BUG: 複素数のコサイン
- Bugzilla 2272: synchronized 属性のドキュメント
- Bugzilla 2273: コンマの後に空白が挿入されない
D 2.017 での変更点
Jul 11, 2008新しい/変更のあった機能
バグ修正
- Bugzilla 2207: deprecateとオーバーロード解決
- Bugzilla 2208: deprecateな関数宣言でdeprecateな型を使えない
- Bugzilla 2209: offsetofのドキュメントでtypo
- Bugzilla 2212: phobos自身は -w スイッチonでもコンパイル通るべき
- Bugzilla 2264: atof 関係のドキュメントにtypo
D 2.016 での変更点
Jul 8, 2008新しい/変更のあった機能
- internal.monitor をDで再実装。internal.object の合理化。
- Bugzilla 288: opEquals の返値をintからboolに変更。既存コードの opEquals の 返値型を全て変更する必要があります。
- ランタイムライブラリ内での使用のために、プロパティ .__vptr と .__monitor をクラスオブジェクトに追加。
- rdmd のソースをsvnに公開。http://dsource.org/projects/phobos/browser/trunk/tools/rdmd.d
- std.algorithm を、aliasを受け取る版と文字列を受け取る版を統合することにより簡略化
- モジュール std.array を追加。以下の配列演算を含んでいます: insert, erase, replace
- enforce の実装を変更し、一呼び出し当たり生成されるコード量を削減
- std.functional.binaryFun を変更し、aliasと文字列で同じように動作するようにしました
- 要望殺到につき、std.getopt に、optChar, assignChar, endOfOptions, を追加
- std.math で、大量の const を enum で置き換え
- std.numeric に、Don Clugston を作者として加え、またドキュメントの小規模な修正
- std.stdio.chunks を改良し、イテレーション回数をforeach変数に宣言できるようにしました
バグ修正
- D.announce/12322: mixin の退行
- Bugzilla 203: std.format.doFormat() がUnicode文字列に対してパディングがおかしい
- Bugzilla 211: mixin引数や無名メソッドをaliasしたときのリンクエラー
- Bugzilla 224: 正しくない警告 "no return at end of function"
- Bugzilla 252: -w と switch の return で不適切な "no return at end of function" 警告
- Bugzilla 253: 不正な <dl> タグが Ddoc で生成される
- Bugzilla 294: DDoc: 関数テンプレートで不完全なドキュメントが二重生成される
- Bugzilla 398: 二重に再帰したmixinでコンパイルが止まらない
- Bugzilla 423: dmd が空のコマンドライン引数を無視する
- Bugzilla 515: .offsetof の適用可能な式についてドキュメントがおかしい
- Bugzilla 520: invariant から public 関数が呼べてしまう
- Bugzilla 542: deprecated な型(クラス以外)が関数引数に使われていても警告されない
- Bugzilla 543: deprecated な型が返値型に使われていても警告されない
- Bugzilla 544: deprecated な型(クラス以外)の変数が警告されない
- Bugzilla 545: deprecated な構造体、共用体、列挙体やtypedefの組み込みstaticプロパティへのアクセスが警告されない
- Bugzilla 547: deprecated なメンバ変数への明示的なオブジェクト参照を通したアクセスが警告されない
- Bugzilla 548: deprecated な enum へのアクセスが警告されない
- Bugzilla 566: テンプレートで非staticメンバや関数をクラスに追加してもエラーにならない
- Bugzilla 570: おかしな再帰的mixinエラー
- Bugzilla 571: クラスインスタンスメンバテンプレートが奇妙な値を返す
- Bugzilla 572: typeofでテンプレートインスタンスを使うと構文解析エラー
- Bugzilla 581: ドットでインスタンス化したテンプレートで行番号無しエラー表示
- Bugzilla 617: IFTI 時に非テンプレート引数に対して通常の promotion 規則が適用されていない
- Bugzilla 870: テンプレートに対する矛盾したエラーメッセージ
- Bugzilla 951: 行番号無しエラー: デフォルトコンストラクタのないクラスから派生したクラスにコンストラクタがない
- Bugzilla 1097: 行番号無しエラー: 要素型のサイズの違う配列間のキャスト
- Bugzilla 1158: 行番号無しエラー: 関数スコープの外での不正なmixin
- Bugzilla 1176: 行番号無しエラー
- Bugzilla 1187: 二段階mixinの構文エラーでSEGV
- Bugzilla 1194: fcmov* のコード生成がおかしい
- Bugzilla 1207: デストラクタに関するドキュメントが混乱を招く
- Bugzilla 1341: typeof(int) はおそらく正当?
- Bugzilla 1601: shr と shl のエラーメッセージに行番号が無い
- Bugzilla 1612: インラインアセンブリでの無名ラベルで行番号無しエラー
- Bugzilla 1912: 行番号無しエラー (不正な値引数のタプル)
- Bugzilla 1936: 行番号無しエラー (配列の次元溢れ)
- Bugzilla 2076: asm: オフセットに関するドキュメントが間違っている。行番号無しエラー
- Bugzilla 2161: コンパイラを、_adEq と _adCmp に要素の TypeInfo ではなく配列の TypeInfo を渡させる変更
- Bugzilla 2178: 行番号無しエラー3つ: typeof
- Bugzilla 2188: man-or-boy テストがアクセス違反で失敗
- Linux版 std.file.rename と std.file.remove のバグ修正
- std.typecons のドキュメントを修正
D 2.015 での変更点
Jun 17, 2008新しい/変更のあった機能
- テンプレートの alias 引数 にリテラルが指定可能となりました。
- 関数テンプレート の返値型が auto と宣言されていると、 型を推論できるようになりました。
- 非左辺値は オーバーロード時に ref や out 引数とマッチしないようになりました。
- 関数隠蔽ハイジャックの検出を、 隠蔽される関数が階層中の 他のどの仮想関数のオーバーロード集合にも含まれない場合には緩和するようにしました
- -fPIC スイッチが指定されたことを示す バージョン識別子 D_PIC を追加
- テンプレートの 制約 (Constraint) を追加
バグ修正
- Bugzilla 1383: 関数テンプレート暗黙インスタンス化 と 型安全可変個引数delegate の組み合わせがうまくいかない
- Bugzilla 1947: null mixin で ICE (Assertion failure: '0' on statement.c:123)
- Bugzilla 1559: version 文の外のコードが消える
- Bugzilla 1675: OMF オブジェクトファイルで "Identifier too long" エラー
- Bugzilla 1963: -H で壊れたヘッダができる
- Bugzilla 2098: ドキュメントが古い
- Bugzilla 2099: 文章とサンプルコードがあってない (非staticローカルinvariant宣言)
- Bugzilla 2112: 未定義変数の型が勝手にintと推論されている
- Bugzilla 2118: ドキュメントで string と invariant(char[]) の使い方が一貫していない
- Bugzilla 2123: 無名クラスがクラッシュ
- Bugzilla 2129: foreach が invariant な limit で動かない
- Bugzilla 2132: CTFE: ~= がコンパイル時評価できない, D2のみ
- Bugzilla 2133: {} なしの無名 enum がアセンブラでの値として使えない
- Bugzilla 2136: typeof(super(...)) がコンストラクタ呼び出しとしてカウントされている
- Bugzilla 2140: 中身の無い static if を最後の文にすると他の部分がスキップされる
- Bugzilla 2143: ミックスインで導入された識別子が static if に認識されない
- Bugzilla 2144: 'is' がクラスと配列以外では '==' と同じとされているが opEquals が呼ばれない
- Bugzilla 2145: Phobos ビルドシステムが html をビルドできない
- Bugzilla 2146: テンプレート内で定義された 'static this' が複数回実行される
- Bugzilla 2149: -H オプションでできる di ファイルでは auto 変数宣言から "auto" が抜けている
D 2.014 での変更点
May 16, 2008新しい/変更のあった機能
- マニュアル閲覧用の -man スイッチ追加
- ライブラリ生成用の -lib スイッチ追加。 また、 一つのソースモジュールから複数のオブジェクトファイルを生成するようになります。
- 実行ファイルの生成時には、 1モジュール1オブジェクトファイルではなく、 全モジュールを含んだオブジェクトファイルを生成するように変更
- rdmd を書き直し、 依存関係の追跡とコンパイラオプションの処理を改善 (現在の所Linux版のみ)
- Phobos の makefile linux.mak を、 新しい -lib スイッチを使用するように変更。ビルドスピードを3倍高速化
- std.algorithm: map() 関数の返値を推論するようにしました。また、map がカリー化可能となりました。
- std.contracts: ファイル名と行番号の情報をenforceに追加。errNo に応じてエラーメッセージを生成する errnoEnforce を追加。また、対応する ErrnoException クラスを追加。
- std.conv: std.to をカリー化可能にしました。また、std.toを、オブジェクトからオブジェクトへの変換が失敗したときは例外を投げるよう変更。不要なprintfを除去。
- std.encoding: 新しい関数 encodedLength(dchar) と encode(dchar, ref E[]) を追加
- std.encoding: 型 Utf8, Utf16, Utf32, Ascii, Latin1, Windows1252 を廃止。型 AsciiChar, AsciiString, Latin1Char, Latin1String, Windows1252Char, Windows1252String を導入。
- std.encoding: 一時的に std.encoding.to をコメントアウト
- std.file: 真偽値を返す関数 (exists等) を、intではなくboolを返すよう変更。gotoをいくつか除去。readText, lastModified, mkdirRecurse, rmdirRecurse を追加。
- std.functional: compose を、何個でも関数を受け取れるように改善。pipe 関数を追加。
- std.getopt: 新しいオプション stopOnFirstNonOption を追加。スペースの埋め込まれたオプショングループの自動展開 (shebang スクリプトに有効)
- std.math: 整数ベキ乗の改善
- std.md5: sum のシグネチャを改善して、複数の配列を受け取るように変更。getDigestString 追加。
- std.path: test 関数のシグネチャをintではなくboolを返すよう変更。Windows用rel2absを実装。joinが複数のパスを受け付けるように改善。scope文を使うことで、gotoをいくつか除去
- std.process: getenv と setenv を追加。system() がLinuxで終了コードを正しく返すように改善
- std.random: dice関数を追加 - お手軽な (偏らせることもできる) サイコロです。
- std.typecons: Rebindableテンプレートのドキュメントが完成
- std.utf: codeLength 関数追加。gotoをいくつか除去
バグ修正
- std.format: 配列へのraw書き込みに関する未報告のバグを修正
- std.getopt: bundling無効時の一文字オプションに関する未報告のバグを修正
- Bugzilla 2014: fopen が巨大なファイルで失敗する
- Bugzilla 2031: Documentation: テンプレートの値引数
- Bugzilla 2032: スタックをクラス上に作る場合に関数ドキュメントが直感的でない
- Bugzilla 2037: 関数ハイジャックに関するドキュメントが古い
- Bugzilla 2038: サンプルディレクトリから hello2.html を除くべき
- Bugzilla 2039: -ignore スイッチがドキュメントから抜けている
- Bugzilla 2054: 構造体の代入で const システムがバグっている
- Bugzilla 2055: (ICE) 構造体初期化子が多すぎるとコンパイラがクラッシュ
- Bugzilla 2056: const システムが、安全なcast/変換を、複雑な複合型が絡むとエラーにしてしまう
- Bugzilla 2058: クラスのメンバ関数に渡される隠し引数について触れるべき
- Bugzilla 2063: std.xml が、ネストした閉じタグでアクセス違反
- Bugzilla 2065: std.file.exists() の返値が逆
- Bugzilla 2067: 無名クラスからの呼び出しでアクセス違反
- Bugzilla 2071: 仕様では、二つのポインタに関する算術演算について触れられていない
- Bugzilla 2072: std.typecons のドキュメントが不自然
- Bugzilla 2074: Variant の算術演算がうまく動かない。今のところ、_r 演算をコメントアウトすると直る。よりよい修正法求む。
- Bugzilla 2075: 仕様では、配列リテラルの格納方法について触れられていない
- Bugzilla 2084: ?: 演算子が最も狭い型を計算していない
- Bugzilla 2086: string と char[] の関係を明示すべき
- Bugzilla 2089: CTFE とタプル添え字の問題
- Bugzilla 2090: タプルのメンバになっているテンプレートインスタンスをaliasできない
- Bugzilla 2100: Assertion failure: '0' on line 4842 in file 'expression.c'
- Bugzilla 2109: asm {lea EAX, [0*0+EAX]; } が拒否される。
D 2.013 での変更点
Apr 22, 2008新しい/変更のあった機能
- 未対応のpragmaを無視する -ignore スイッチ追加
- 未対応プラグマを -v スイッチで表示するようになりました
- opDot を追加。 試験的な追加です
- SwitchStatement で、 実行時初期化されたconst/invariant値によるcase文が使用可能になりました
- __FILE__ と __LINE__ を、 引数のデフォルト初期化子として使いやすいように変更
- Benjamin Shropshire によるドキュメントの修正を取り込み
- メソッド隠蔽は、 実行時のエラーではなくコンパイル時警告するようになりました。
- Html ソースファイル は非推奨となりました。
- 関数属性 pure と nothrow を追加。 機能はまだ実装されていません。
- VolatileStatement を非推奨としました。代わりに SynchronizedStatement を使用してください。
- スレッドローカル記憶域を表す __thread 記憶域クラスを追加。 これはバックエンドの機能を試すための 試験的な機能追加です。 フロントエンド側のデザインは変更になる可能性があります。
- obj2asm と dumpobj で特別なELF fixup recordの扱いを改善
- 関数オーバーロードの曖昧性解決のための partial ordering 規則を追加。
- std.perf: Bill Baxter による整備
- std.xml.Document のコンストラクタは DOM ツリー全体を作成するようになった
- std.encoding 追加
バグ修正
- D/69085: const/invariant のバグ?
- Bugzilla 1712: インターフェイスの vtbl[0] が対応する Interface* になっていない
- Bugzilla 1723: 関数以外のものに __traits(getVirtualFunctions) を使うと無茶苦茶に失敗する
- Bugzilla 1741: 静的配列を添字型とする連想配列でクラッシュ
- Bugzilla 1905: foreach のドキュメントに一貫性がない
- Bugzilla 1906: foreach が巨大な配列で使えない
- Bugzilla 1925
- Bugzilla 1935: DMD の .zip 内の std.recls のサンプルは古い
- Bugzilla 1967: getDirName が windows で altsep を使っていない
- Bugzilla 1978: 間違った vtable 呼び出し
- Bugzilla 1991: Dmd がハング
- Bugzilla 2016: 'invariant' TypeSpecialization が抜けている
- Bugzilla 2019: 一要素の配列リテラルの結合がうまくいかない
D 2.012 での変更点
Mar 6, 2008新しい/変更のあった機能
- 定義済みバージョン (unittest) を追加。Bugzilla 458 参照のこと。
- std.math2 を削除
- クラス型と null の比較演算をコンパイル時エラーとしました。
- 構造体デストラクタと postblit を追加
- std.algorithm: Unittest のための import は条件的に行うように変更; ドキュメントのtypo修正; minとmaxは常にもっとも狭い型を返すようにし、 またsignedとunsignedの混合でも動作するようになりました; enum値の名前を規約に合わせて小文字にしました; OrderStrategy を SwapStrategy に変更 (eliminate の用に順序づけ以外にも使用するため)
- std.bitmanip: bitfield の生成するコードを簡単にし、 エラーメッセージを改善。
- std.format: bitfield を内部的に使用。
- std.functional: binaryfun を定数サイズの配列で使えるよう修正; compose を追加
- std.random: unpredictableSeed を毎回違う値を返すように変更 (非常に稀なMTの挙動を除く); 専門家にわかりやすいprivate変数名を追加; 境界の構文を二つの別々の文字 '[', '(' から 一つの文字列 "[(" に変更。
- std.traits: mostNegative 追加。 主として、"min" を浮動小数点数と整数型で違う意味に定義するという C++ の許し難いミスを引き継いでしまった許し難いミスを取り繕うためです。
- std.typecons: ドキュメント無しの Rebindable を、 opImplicitCast の準備のために追加
- std.math:
- 異なる CPU 用の IEEE 'real' 形式をサポート: 64-bit, 80-bit, 128-bit (四倍精度) 実数の、BigEndian/LittleEndian 双方に対応しています。また、 非IEEE の 'doubledouble' 実数を部分的にサポート。
- DMD-Windows に nextafter Bugzilla 1722 と scalb を実装
- nextUp(), nextDown() 追加
- Bugzilla 1881: feqrel nonsensical for non-real arguments.
- 内部関数 isPosZero(), isNegZero() を削除し、 より一般的に使える isIdentical() に移行
- DMD Windows で未実装だったアセンブラ版関数を追加: scalb, lrint
- sin+cos を一度に計算するのに便利な creal expi(real y) を追加
バグ修正
- std.contracts: pointsTo の未発見のバグを修正
- std.conv: 数値から数値への変換に関するバグを修正 (T.min が問題)
- dwarf の DT_AT_upper_bound に関するバグを修正
- Bugzilla 756: タプルに対する IFTI がタプルが最後の引数の時しか働かない
- Bugzilla 1454: alias引数があると IFTI が正しく推論しない
- Bugzilla 1661: 整数パラメタのあるテンプレートを特殊化できない
- Bugzilla 1800: 構造体内にネストしたenumでコンパイラがクラッシュ
- Bugzilla 1801: const構造体は参照をメンバに持っていない限りnon-constな変数に代入できるべき
- Bugzilla 1806: "const" によって型安全可変個引数関数が正しく動かなくなる
- Bugzilla 1809: template.c:2600
- Bugzilla 1810: MmFile の無名ファイルマッピングが win32 で動作しない
- Bugzilla 1819: synchronized のあとに retun 文が無いという無駄な警告
- Bugzilla 1821: const/invariant変数に__traits isSameを使うとICE
- Bugzilla 1823: 連想配列でのconstへの暗黙変換
- Bugzilla 1828: スレッド周りの問題幾つか
- Bugzilla 1833: std.c.windows.windows は定数にenumを使うか、もっと選択的に extern(Windows) を使うべき
- Bugzilla 1836: インラインアセンブラでenum値をパラメタとして使えない
- Bugzilla 1837: dmdが渡されたパラメタファイルの中身を延々表示してコンソールを溢れさせるのをやめて
- Bugzilla 1843: 構造体の前方参照時に、行番号無しの嘘の到達不可能文警告がでる
- Bugzilla 1850: コンパイラが小文字のレジスタ名を受け入れる
- Bugzilla 1851: 構造体のconstを外すとopCall が見失われる?
- Bugzilla 1852: 構造体にキャストしたときopCallが見失われる
- Bugzilla 1853: opCmp のドキュメントには例が必要
- Bugzilla 1854: 新しいフロー解析のバグ (正しいコードで警告が出る)
- Bugzilla 1857: プロファイル時に実行時SEGV - 不正なアドレスにジャンプ
- Bugzilla 1862: asm: [ESI+1*EAX] は正しいアドレッシングモードなはず
- Bugzilla 1865: エスケープシーケンスが変
- Bugzilla 1867: lazy で不要なconst修飾子が追加される
- Bugzilla 1871: DMD のデバッグメッセージが表示される
- Bugzilla 1873: 一つでも変更可能なメンバを持つ構造体は全体としても変更可能
- Bugzilla 1874: __traits(allMembers, T) が、non-mutating オーバーロードのみがあるときにメンバの列挙に失敗する
- Bugzilla 1876: 非static内部クラスのメソッド内では、"&( f)" は "&(this.f)" と同義であるべき?
- Bugzilla 1877: std.math.atan2 のドキュメントに間違い
- Bugzilla 1882: Internal error: ..\ztc\cod1.c 2529
- Bugzilla 1883: テンプレートを実数としてインスタンス化すると値がおかしい
- Bugzilla 1884: 文字列の記号定数
- Bugzilla 1885: invariant/mutable参照同士によるオブジェクトの同値性テストの構文エラー
- Bugzilla 1887: 動的配列の配列の初期化子の先頭が空だとコンパイラがフリーズ
D 2.011 での変更点
Feb 18, 2008新しい/変更のあった機能
- std.typecons: コード肥大化の問題に対処。追加: Tuple.toString, tuple()関数。enumValuesImpl のバグ修正
- std.process: shell() 関数を追加
- std.math: approxEqual の小さな修正
- std.contracts: pointsTo() 関数を追加
- std.numeric: 単体テストの修正
- std.bitmanip: コード肥大化の問題に対処。FloatRep と DoubleRep の再導入
- std.conv: 実装の簡素化
- std.regexp: ドキュメントに ECMA 標準へのリンクを追加
- std.getopt: 返値をboolからvoidに変更。エラーは例外で通知します。
- std.functional: unaryFun, binaryFun, adjoin 追加
- std.string: ドキュメントの更新。警告ONでコンパイルが通るよう修正
- std.traits: 変更:FieldTypeTuple; 追加:RepresentationTypeTuple, hasAliasing; バグ修正:1826; write関数内でflush() への呼び出しを追加; lines()のバグ修正
- std.algorithm: map, reduce, filter, inPlace, move, swap, overwriteAdjacent, find, findRange, findBoyerMoore, findAdjacent, findAmong, findAmongSorted, canFind, canFindAmong, canFindAmongSorted, count, equal, overlap, min, max, mismatch, EditOp, none, substitute, insert, remove, levenshteinDistance, levenshteinDistanceAndPath, copy, copyIf, iterSwap, swapRanges, reverse, rotate, SwapStrategy, Unstable, Semistable, Stable, eliminate, partition, nthElement, sort, schwartzSort, partialSort, isSorted, makeIndex, schwartzMakeIndex, lowerBound, upperBound, equalRange, canFindSorted 追加
- std.thread: 警告ONでコンパイルが通るよう修正
- std.file: getSize() をLinux版で高速化
- std.random: 警告ONでコンパイルが通るよう修正。uniform関数を引数からの型推論を行うように拡張
- std.format: 書式化がconstデータでも行えるように修正
- std.path: ドキュメントの細かい変更
- std.xml 追加
- std.complex 追加
- std.iterator 追加
- std.c.linux.tipc 追加
- std.c.linux.termios 追加
- 予約語 nothrow 追加
- auto interface を再度有効にしました
- 静的配列を左辺値として使えるようにしました
- null から/への const/invariant のキャストが可能になりました
- それぞれのメンバが暗黙キャスト可能な場合に限り、 構造体リテラルの暗黙キャストが可能になりました
- それぞれのメンバが暗黙キャスト可能な場合に限り、 構造体リテラルのconst/invariantへの暗黙キャストが可能になりました
- pragma startaddress 追加
- .tupleof 経由ならば構造体/クラスのprivateメンバにアクセス可能になりました
- 拡張: Bugzilla 493: 部分的なIFTIができない
バグ修正
- 修正 D/66406 Remaining const niggles #1 - Custom POD types
- aliasされたテンプレート引数のddocでの表示を改善
- Windows での std.file.readln() の変換モードでのバグを修正
- Bugzilla 1072: CTFE: 増分式が空のfor文でクラッシュ
- Bugzilla 1435: DDoc: DDOC_PSYMBOL をそこかしこに適用しすぎ
- Bugzilla 1815: 区間に対する foreach がポインタを正しくインクリメントしない
- Bugzilla 1825: ローカルなインスタンス化と関数のネスト
- Bugzilla 1837: dmd が渡されたパラメタファイルの内容を表示してコンソールを溢れさせるのをやめる
- Bugzilla 1842: Linuxでのコンパイル時に、意味のないリンカコマンドが出力される
D 2.010 での変更点
Jan 20, 2008新しい/変更のあった機能
- opAssign のクラスオブジェクトに対する多重定義を許さないようになりました
- WinMain と DllMain をテンプレートのmixinで定義可能になりました
- 予約語 pure を追加
バグ修正
- Bugzilla 1319: const ref 引数を取る関数でコンパイラがクラッシュ
- Bugzilla 1697: -O スイッチで Internal error: ..\ztc\cgcod.c 2322
- Bugzilla 1700: const な返値構造体を変更しようとするとICE
- Bugzilla 1707: is式のテンプレート引数リスト内で '==' を使うとsegfault
- Bugzilla 1711: delegate リテラルのtypeofがテンプレート引数として使えない
- Bugzilla 1713: foreach の index が tuple と template で使えない
- Bugzilla 1718: 終了コード 5 でおかしな終了
- Bugzilla 1719: スコープつきのinterfaceのインスタンスでコンパイラがクラッシュ、あるいは不安定なコードを生成
- Bugzilla 1720: std.math.NotImplemented のメッセージにスペースが足りない
- Bugzilla 1724: Internal error: toir.c 177
- Bugzilla 1725: std.stream.BufferedFile.create は FileMode.OutNew を使うべき
- Bugzilla 1757: Phobos の Windows API インターフェイスに間違い
- Bugzilla 1762: グローバルな extern(C++) 関数のポインタ引数のマングリングが間違っている
- Bugzilla 1767: 正しいコードが通らない
- Bugzilla 1769: 例外に関するページにtypo
- Bugzilla 1773: 巨大すぎる整数リテラル
- Bugzilla 1779: 2個以上の型引数の推論でコンパイラがクラッシュ
- Bugzilla 1783: DMD 1.025 が構造体、テンプレート、aliasに関するコードでassertで停止
- Bugzilla 1788: dmd が情報を出さずにsegfault
- D.announce/11066: Re: DMD 1.025 and 2.009 releases
D 2.009 での変更点
Jan 1, 2008新しい/変更のあった機能
- const/invariant のセマンティクスを再々考
- enum を拡張して、記号定数の定義に使用できることとしました
バグ修正
- Bugzilla 1111: 同じenum内の別のメンバを初期化子で参照していると、そのenumの型でなく基底型として扱われる
- Bugzilla 1694: Zip::ArchiveMember::name のフォーマットのバグ
- Bugzilla 1702: 識別子が未定義なときにICE
- Bugzilla 1738: 構造体に関するエラーで行番号が出ない
- Bugzilla 1742: CTFEがうまくいかないテンプレート関数がある
- Bugzilla 1743: CTFEのコードで interpret.c:1421 assertion failure
- Bugzilla 1744: CTFE: voidを返す関数を変数に代入するとクラッシュ
- Bugzilla 1745: Internal error: ..\ztc\out.c 115
- Bugzilla 1749: std.socket が strerror のせいでスレッド安全でない
- Bugzilla 1753: 再帰的CTFE関数で文字列が壊れる
- D/63456: thisのconst性に基づいたオーバーロードができない
D 2.008 での変更点
Nov 27, 2007新しい/変更のあった機能
- std.string: munch をより一般化。chompPrefix 関数を追加
- std.variant: variantArrayのドキュメントを追加
- std.traits: CommonType テンプレート追加。isStaticArray 修正。
- std.bitarray: 廃止される予定
- std.bitmanip: std.bitarray の内容に加え、bitfields, FloatRep, DoubleRep テンプレートを追加した新しいモジュール
- std.process: getpid を Linux 版でも使えるようにしました
- std.math: nextafter を全ての浮動小数点数型で使えるようにしました。approxEqual テンプレート追加。
- std.contracts: enforce のシグネチャに例外型を取る物を追加
- std.conv: conv_error を、変換を行おうとした型でパラメタ化されたテンプレートに変更
- std.stdio: 化粧直し
- std.system: 化粧直し
- std.file: dirEntries 関数のバグ修正
- std.random: 大きな変更:乱数生成エンジンと分布の追加
- std.format: writef* に raw ('r') フォーマット指定を追加
- std.path: rel2abs 追加 (Linux版のみ)
- std.algorithm: 新しいモジュール
- std.typecons: 新しいモジュール
- std.functional: 新しいモジュール
- std.numeric: 新しいモジュール
- const/invariant 構造体、 クラス、 インターフェイス 追加
- IsExpression に const と invariant を追加
- 型指定子 typeof(return) を追加
- カバレッジ解析の方法を変更して、 モジュール感の依存順序に影響を受けないようにしました。
- const/invariant の設計手直し
バグ修正
- Bugzilla 70: valgrind: Conditional jump or move depends on uninitialised value(s) in elf_findstr
- Bugzilla 71: valgrind: Invalid read of size 4 in elf_renumbersyms
- Bugzilla 204: abstractクラスをインスタンス化しようとした時のエラーメッセージは改善すべき
- Bugzilla 1508: dmd/linux テンプレートシンボルの問題
- Bugzilla 1651: -H スイッチでできる .di ファイルで function() 引数が正しく変換されていない
- Bugzilla 1655: Internal error: ..\ztc\cgcod.c 1817
- Bugzilla 1656: 不正な宣言が通ってしまう
- Bugzilla 1664: (1.23).stringof が拙いコードを生成
- Bugzilla 1665: Internal error: ..\ztc\cod2.c 411
D 2.007 での変更点
Oct 31, 2007新しい/変更のあった機能
- std.traits.ReturnType() が Functor に対応
- constを型の内側に波及させる際に、元々invariantだった部分はinvariantのまま残すようになりました
- 単項 * 演算子を opStar() でオーバーロード可能になりました
- 完全なクロージャのサポート
- サイズ 16 バイト以下の static data segment のデータは paragraph align されるようになりました
バグ修正
- void[0] 型変数の宣言を可能にしました
- 静的な多次元配列を、 サイズの合う他の静的多次元配列で初期化可能にしました
- Bugzilla 318: wait が Linux でスレッドリソースを解放しない
- Bugzilla 322: メモリの割り当て/解放を行うスレッドを実行すると、GCでスレッド停止エラーが起こりうる
- Bugzilla 645: std.thread.Thread.pauseAll でのスレッド間競合
- Bugzilla 689: 仕様書のサンプルからprintfを取り除こう!
- Bugzilla 697: アセンブラの db, dw 等で定数畳み込みが動作していない
- Bugzilla 706: 関数内の配列リテラルに関する型推論が正しくない
- Bugzilla 708: インラインアセンブラ: "CVTPS2PI mm, xmm/m128" がコンパイルできない
- Bugzilla 709: インラインアセンブラ: "CVTPD2PI mm, xmm/m128" がコンパイルできない
- Bugzilla 718: Internal error: ../ztc/cgcod.c 562
- Bugzilla 723: クラス定義を関数レベルでmixinする不正なコードで: func.c:535: virtual void FuncDeclaration::semantic3(Scope*): Assertion `0' failed
- Bugzilla 725: expression.c:6516: virtual Expression* MinAssignExp::semantic(Scope*): Assertion `e2->type->isfloating()' failed.
- Bugzilla 726: "override" を mixin するとエラー行番号が変
- Bugzilla 729: SwitchBody に scope(...) 文を書くとコンパイラがsegv
- Bugzilla 1483: スレッド内でのエラー出力がstderrになっていない
- Bugzilla 1580: invariant文字列の結合は可能であるべき
- Bugzilla 1593: ICE: 関数内の空のreturn文でコンパイラがクラッシュ
- Bugzilla 1613: DMD が構文エラーでハング
- Bugzilla 1618: std\system.d に typo
D 2.006 での変更点
Oct 16, 2007新しい/変更のあった機能
- 全ての string, wstring, dstring の定義を invariant としました。 これに伴い、 標準ライブラリの関数シグニチャと実装に大幅な変更が加えられています。 第一印象としては、 invariant文字列はなかなか良い感じです。
- 関数とクラスの オーバーロード集合 を実装
- 標準的なコマンドライン処理を簡単に実現する std.getopt モジュールを追加
- parse と assumeUnique を std.conv モジュールに追加
- dirEntries 関数を std.file モジュールに追加
- basename 関数と dirname 関数 (長い名前のgetBaseNameとgetDirectoryNameへのaliasです) を std.path モジュールに追加
- readln に行区切り文字を指定可能にしました。さらに、fopen と popen、lines と chunks 関数を std.stdio モジュールに追加
- std.string モジュールに munch 関数を追加
- isStaticArray 修正。BaseClassesTuple, TransitiveBaseTypeTuple, ImplicitConversionTargets, isIntegral, isFloatingPoint, isNumeric, isSomeString, isAssociativeArray, isDynamicArray, isArray を std.traits モジュールに追加
- std.variant モジュール追加
- Tango GC との構造的な違いを取り込む作業 (まだまだ途中).
- std.contracts モジュール追加
- 互換性のない変更: std.stdio.writef で書式指定できるのは第一引数のみとなりました。
バグ修正
- Bugzilla 1258: 配列結合時にガベージコレクタがメモリを見失う
- Bugzilla 1478: libcのネットワークAPIのスレッド安全性問題
- Bugzilla 1480: std.stream がいたるところで新しく追加されたoverrideの警告を出す
- Bugzilla 1491: 死んだソケットにデータを送ったときのSIGPIPEを抑制
- Bugzilla 1557: std.zlib がメモリを ubyte[] でなく void[] で割り当てているためメモリリーク
- Bugzilla 1562: テンプレートalias引数の推論失敗
- Bugzilla 1571: 関数引数のconstが.diファイルに伝わっていない
- Bugzilla 1575: タプルの代入ができない
- Bugzilla 1579: write[ln] が obj.toString() で動かない
- Bugzilla 1580: invariant文字列の結合は可能であるべき
D 2.005 での変更点
Oct 1, 2007新しい/変更のあった機能
- std.math.sin, cos, tan は、 引数が定数ならコンパイル時評価されるようになりました
- Cristian Vlasceanu の案を取り入れて、 "プラグイン"等を書くための C++ interface を導入
- phobos の linux.mak を書き直して、ビルドロジックを文書化しました
- std.conv を大幅に強化
- std.stdio に writeln() と write() を追加
バグ修正
- std.boxer の Object のボックス化 (単体テスト失敗) を修正
- std.demangle を、隠しパラメータ (thisと、delegateのコンテキストポインタ) を表示しないように修正
- Bugzilla 217: internal/object.d で typeof が正常動作していない
- Bugzilla 218: 古いビット配列のコードを削除
- Bugzilla 223: 未初期化変数に関するエラーメッセージがエラー箇所を表示しない
- Bugzilla 278: dmd.conf の検索パスが動作しない
- Bugzilla 479: 配列リテラルと文字列をコンパイル時比較できない
- Bugzilla 549: deprecatedクラスからの派生が検出されない
- Bugzilla 550: 型のサイズを超える量のシフトが許されている
- Bugzilla 551: 剰余演算子虚数や複素数に対しても動いている
- Bugzilla 556: is (Type Identifier : TypeSpecialization) が期待されるとおりに動かない
- Bugzilla 668: *.di ファイルを使うとモジュールコンストラクタの実行順序が変
- Bugzilla 1125: asmでサイズ指定なしにタプルを使うとsegv
- Bugzilla 1437: dmdのクラッシュ: "Internal error: ..\ztc\cod4.c 357"
- Bugzilla 1456: テンプレートのalias引数で定数を使えない
- Bugzilla 1474: 退行: 初期化子つきの const struct がテンプレートのalias引数として認識されない
- Bugzilla 1488: asm内でタプルを使うとおかしなコードが生成される
- Bugzilla 1510: ICE: Assertion failure: 'ad' on line 925 in file 'func.c'
- Bugzilla 1523: 構造体リテラルとtypedefを合わせて使えない
- Bugzilla 1530: DMD のフロントエンドのコードにaliasing問題
- Bugzilla 1531: typedefされたクラスのフィールドにアクセスできない
- Bugzilla 1537: Internal error: ..\ztc\cgcod.c 1521
D 2.004 での変更点
Sep 5, 2007新しい/変更のあった機能
- コマンドラインスイッチ -defaultlib と -debuglib を追加
- Bugzilla 1445: デフォルトライブラリオプションの sc.ini / dmd.conf への追加
- is式の結果型をintからboolに変更
- __traits に isSame と compiles を追加
- IsExpression に TemplateParameterList を書けるように変更
- override 省略時に警告を出すよう変更
- std.hiddenfunc 追加
- trace_term() を object.d に追加。(Bugzilla 971 の修正: アプリケーションがexitで終了するとプロファイル結果が生成されない)
- モジュールの静的コンストラクタ/デストラクタを複数定義可能にしました
- 文字列リテラルの新しい構文を追加 (デリミタ文字列, ヒアドキュメント, Dトークン)
- __EOF__ トークンを追加
バグ修正
- D/56414 修正
- Bugzilla 961: std.windows.registry のスタック破壊
- Bugzilla 1315: CTFE が構造体配列をデフォルト初期化しない
- Bugzilla 1342: const構造体が他の構造体の初期化子として使えない
- Bugzilla 1363: for文内の構造体に関するコンパイル時実行の問題
- Bugzilla 1375: CTFE がnull配列でエラー
- Bugzilla 1378: 配列リテラル内での価数呼び出しでコンパイラがクラッシュ
- Bugzilla 1384: opCallメンバのない構造体を関数のように呼び出すとコンパイラがSEGV
- Bugzilla 1388: 複数の静的コンストラクタがモジュールに定義できる
- Bugzilla 1414: コンパイラが構造体関係のCTFEでクラッシュ
- Bugzilla 1421: __traits(allMembers...) を使うとスタックオーバーフロー
- Bugzilla 1423: Registry: 値が壊れる
- Bugzilla 1436: std.date.getLocalTZA() がWindowsで夏時間の時に間違った値を返す
- Bugzilla 1446: Final Const and Invariant のページタイトルにカンマがない
- Bugzilla 1447: CTFE がクラスの静的関数で動作しない
- Bugzilla 1448: コンソールへの UTF-8 が全く動かない
- Bugzilla 1450: Registry: invalid UTF-8 sequence
- Bugzilla 1460: 正しいコードでコンパイラがクラッシュ
- Bugzilla 1464: "static" foreach でCTFEが動かなくなる
- Bugzilla 1468: スタックオーバーフローのバグ
D 2.003 での変更点
Jul 21, 2007新しい/変更のあった機能
- 型 dchar を Codeview 拡張で 0x78 と表現するよう変更
- next メンバを Object.Error から Object.Exception に移動
- ForeachRangeStatement 追加
- extern (System) を追加
- std.traits 追加
- Bugzilla 345: std.uni.isUniAlpha の Unicode 5.0.0 対応
バグ修正
- Bugzilla 46: 同梱されているmanファイルが更新されていない
- Bugzilla 268: SocketSet とクラスのバグ
- Bugzilla 406: std.loader が Linux で動かない
- Bugzilla 561: インターフェースのインスタンスを作ろうとするとおかしなエラーがダブる
- Bugzilla 588: std.demangleの、ネストしたシンボルとLazy引数対応
- Bugzilla 668: *.di ファイルを使うと静的コンストラクタの実行順がおかしい
- Bugzilla 1110: std.format.doFormat + toString()のない構造体 == クラッシュ
- Bugzilla 1199: コンパイル時に空の配列や文字列を添え字参照すると奇妙なメッセージがでる
- Bugzilla 1300: コンパイル時関数内での構造体に問題
- Bugzilla 1306: extern (Windows) は、変数に対する extern (C) と同じように動作すべき
- Bugzilla 1331: ヘッダファイル生成で、pragmaに ";" の代わりに ":" が出力されている
- Bugzilla 1332: Internal error: ../ztc/cod4.c 357
- Bugzilla 1333: -inline ICE: 配列の要素をクラス/構造体内のネスト関数内で内部クラスのコンストラクタに渡すと発生
- Bugzilla 1336: unittest内で宣言されたクラスをテンプレートクラスから構築しようとすると内部エラー
D 2.002 での変更点
Jul 1, 2007新しい/変更のあった機能
- Linux 版のライブラリを libphobos.a から libphobos2.a に改名
バグ修正
- Bugzilla 540: ネストしたテンプレートメンバ関数のエラー - "function expected before ()"
- Bugzilla 559: メソッドのfinalが効果がない
- Bugzilla 627: 文字列を文字列の配列に ~ で結合すると壊れる
- Bugzilla 629: エラーメッセージが変 "Can only append to dynamic arrays"
- Bugzilla 639: タプル引数でdmdがICE
- Bugzilla 641: テンプレート引数で複雑な文字列処理をするとdmdがICE
- Bugzilla 657: version() が無視される
- Bugzilla 689: 仕様書からprintfをなくそう!
- Bugzilla 1103: metastrings.ToString が long > 0xFFFF_FFFF で動かない
- Bugzilla 1107: CodeView: bool に対して間違った CV 型
- Bugzilla 1118: switch 文の邪悪な動作
- Bugzilla 1186: bind にちょっと修正が必要
- Bugzilla 1199: 空配列や文字列をコンパイル時に添え字参照すると奇妙なエラーメッセージ
- Bugzilla 1200: DMDのクラッシュ: 偽の ConditionalStatement のみを含む文で時々
- Bugzilla 1203: ループ内で無名クラスを作れない
- Bugzilla 1204: コンパイル時実行中に構造体を使うとsegv
- Bugzilla 1206: 構造体を前方参照するメソッドのあとでthis()を定義するとコンパイラが死ぬ
- Bugzilla 1207: デストラクタの仕様が混乱を招く
- Bugzilla 1211: mixin("__LINE__") が間違った値になる
- Bugzilla 1212: dmd が変な行番号を生成
- Bugzilla 1216: コンパイル時実行の外で結合を行うと 'non-constant expression'
- Bugzilla 1217: ドル ($) が文字配列の[]以外の箇所では非定数と見なされる
- Bugzilla 1219: long.max.stringof が壊れている
- Bugzilla 1224: CTFE中のassertでコンパイルが止まらない
- Bugzilla 1228: クラス不変条件はオブジェクトが完全に構築されるまでは呼ばれるべきでない
- Bugzilla 1233: std.string.ifind(char[] s, char[] sub) がASCII外の文字列で失敗することがある
- Bugzilla 1234: "Occurrence" のスペルミス
- Bugzilla 1235: std.string.tolower() がutf8文字列で失敗することがある
- Bugzilla 1236: 浮動小数点数の文法が不完全
- Bugzilla 1239: 空のタプルが可変個引数テンプレート関数に渡されるとICE
- Bugzilla 1242: DMD AV
- Bugzilla 1244: 配列のlengthの型が未定義
- Bugzilla 1247: インドのタイムゾーン重宝がない
- Bugzilla 1285: 例外のtypedefがcatchで区別されない
- Bugzilla 1287: タプルの配列上をループすると "glue.c:710: virtual unsigned int Type::totym(): Assertion `0' failed."
- Bugzilla 1290: real, imaginary, ? :, += を使ったときのICE
- Bugzilla 1291: テンプレートから返されたクラスの .stringof が動作しない
- Bugzilla 1292: テンプレート引数推論が動作しない
- Bugzilla 1294: 引数で渡された構造体配列のフィールドアクセスで正しくないコードが生成される
- Bugzilla 1295: 字句解析の文法にいくつか細かい間違い
D 2.001 での変更点
Jun 25, 2007新しい/変更のあった機能
- コンパイラが D バージョン 2.0 であることを示す D_Version2 定義済みバージョン識別子を追加
- __VENDOR__ と __VERSION__ を追加
- 同じ宣言に const と invariant 記憶域クラスを両方指定するのはエラーとなりました
- 変数の .init プロパティはその変数を初期化した値ではなく、 その型のデフォルト値を返すようになりました
バグ修正
- std.compiler は自動更新されるように修正
- mutable配列をinvariant配列に結合する際の問題を修正
- CTFE時 e++ と e-- のバグを修正
- Bugzilla 1254: void初期化された引数をコンパイル時関数に渡すと動作しない
- Bugzilla 1256: シンボルを渡す "with" 文
- Bugzilla 1259: inline ビルドで不正なエラーメッセージ "Error: S() is not an lvalue" が出現
- Bugzilla 1260: またタプルのバグ
- Bugzilla 1261: 過剰なエラーメッセージからの退行
- Bugzilla 1262: リテラルで初期化された構造体変数を.initと比較すると再初期化されてしまう
- Bugzilla 1263: テンプレート関数のオーバーロードが、テンプレートとそうでないクラスの両方に対してなされていると失敗する
- Bugzilla 1268: 構造体リテラルで静的配列を初期化しようとするとおかしな結果になる
- Bugzilla 1269: void初期化された配列への代入でCTFE時にコンパイラがクラッシュ
- Bugzilla 1270: -inline で ICE
- Bugzilla 1272: 新しい 1.0 セクションの問題点
- Bugzilla 1274: 2.0 βのリンクが1.x系列のdmd.zipを指している
- Bugzilla 1275: 'in' の意味の曖昧性
- Bugzilla 1276: static assert のメッセージがエスケープされた文字で表示される
- Bugzilla 1277: "in final const scope" が冗長と判定されない
- Bugzilla 1279: const/invariant 関数が const/invariant 返値を受け付けない
- Bugzilla 1280: std.socket.Socket.send (void[],SocketFlags) は const(void)[] をうけとるべき
- Bugzilla 1283: writefln: 以下の変数にフォーマッタが適用される
- Bugzilla 1286: グロバールを指す invariant 構造体メンバ関数でクラッシュ
D 2.000 での変更点
Jun 17, 2007新しい/変更のあった機能
- 文字列型に関するalias string, wstring, dstring を追加
- 配列のinvariantなコピーを作成する .idup プロパティを追加
- const, invariant, final の追加
- 引数の修飾 in は、final scope const という意味になりました
- foreach の変数が inout と宣言されていない場合は、デフォルトで final とするようになりました
- class と構造体の不変条件宣言には()が必要になりました
バグ修正
- 標準エラー出力に出る例外のメッセージに\nが抜けていたのを追加
- コンパイル時関数実行の際の構造体のデフォルト初期化バグ修正
- Bugzilla 1226: 構造体リテラルでICE
