D 更新履歴
D 2.046 での変更点
May 10, 2010新しい/変更のあった機能
- import 忘れがあった場合のヒント表示を追加
- コンパイル速度向上
- Phobos 内の .length メソッドは全て @property になりました
- Bugzilla 1001: (デバッグモードでの) スタックトレース表示
バグ修正
- 未定義識別子でハングする問題を修正
- Bugzilla 461: モジュールの循環参照で定数が定数と認識されない
- Bugzilla 945: 名前付きネスト構造体のみのテンプレートの前方参照
- Bugzilla 1055: union の前方参照で "overlapping initialization" エラー
- Bugzilla 2085: 前方参照された関数で CTFE が失敗
- Bugzilla 2386: 前方参照された構造体の配列がコンパイルできない
- Bugzilla 3945: AssertExpression の message は const char[] に暗黙変換できるべき
- Bugzilla 4015: alias での前方参照でエラー
- Bugzilla 4016: const 初期化子が他の const 初期化子を前方参照できない
- Bugzilla 4042: 構造体テンプレートをインスタンス化できない
- Bugzilla 4100: break と continue のラベルの仕様は foreach に言及すべき
- Bugzilla 4116: object.di と object_.d の不一致
- Bugzilla 4146: core.sys.posix.sys.wait.waitid() がない
- Bugzilla 4184: ある種のkey型の連想配列でイテレーションの間に値が壊れる
- D 2.046 での変更点
- D 2.045 での変更点
- D 2.044 での変更点
- D 2.043 での変更点
- D 2.042 での変更点
- D 2.041 での変更点
- D 2.040 での変更点
- D 2.039 での変更点
- D 2.038 での変更点
- D 2.037 での変更点
- D 2.036 での変更点
- D 2.035 での変更点
- D 2.034 での変更点
- D 2.033 での変更点
- D 2.032 での変更点
- D 2.031 での変更点
- D 2.030 での変更点
- D 2.029 での変更点
- D 2.028 での変更点
- D 2.027 での変更点
- D 2.026 での変更点
- D 2.025 での変更点
- D 2.023 での変更点
- D 2.022 での変更点
- D 2.021 での変更点
- D 2.020 での変更点
- 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.045 での変更点
May 2, 2010新しい/変更のあった機能
バグ修正
- Dwarf 周りの問題の再修正
D 2.044 での変更点
Apr 30, 2010新しい/変更のあった機能
- スペルチェックの認識距離を2に増強
- 途中でいくつかfailしても全てのunittestを実行するようになりました
- エラーメッセージや回復に関する細かい改善多数
バグ修正
- Bugzilla 1079: gdb: Dwarf エラー: 0x250 の DIE から参照されている 0xb705 の DIE が見つからない
- Bugzilla 2437: ICE(tocsym.c, !needThis()) - デフォルト構造体引数
- Bugzilla 2935: ICE(out.c) 関数のデフォルト引数にコンストラクタを持つ構造体を使う
- Bugzilla 2549: 配列の乗算でsegv
- Bugzilla 3066: スライスなしの配列を左辺値として配列演算できてしまうが、コード生成が変
- Bugzilla 3207: gdb: Push D patches upstream
- Bugzilla 3415: 壊れた JSON 出力
- Bugzilla 3522: ICE(cg87.c): variable*array[].
- Bugzilla 3987: [gdb] 関数ポインタで DWARF 出力がおかしい
- Bugzilla 3974: ICE(init.c): 格納先より長い静的配列の初期化子
- Bugzilla 4036: unionを含む構造体リテラルと-inlineでsegv
- Bugzilla 4037: [gdb] wchar で DWARF 出力がおかしい
- Bugzilla 4038: [gdb] ref引数の関数ポインタで DWARF 出力がおかしい
- Bugzilla 4067: [CTFE] try-catch ブロック内のコードが無視される
- Bugzilla 4072: 契約の中の再帰的なテンプレート展開でスタックオーバーフロー
- Bugzilla 4081: FreeBSD 8 で dmd をコンパイルできない
- Bugzilla 4089: 不完全な構造体からJSON出力するとクラッシュ
- Bugzilla 4093: Segfault(interpret.c): 再帰的な構造体テンプレートで
- Bugzilla 4105: aliasテンプレート引数と未定義識別子でスタックオーバーフロー
- Bugzilla 4108: ICE(cod2.c): 関数呼び出しでの長さ0静的配列
- Bugzilla 4118: std.conv.to!SomeStruct("hello") でコンパイラクラッシュ
- Bugzilla 4131: 連想配列とforeachでbreakが正しく動かない
D 2.043 での変更点
Apr 6, 2010新しい/変更のあった機能
- 静的配列の .init プロパティは配列リテラルとなりました
- 連想配列の速度改善
- std.bigint を、より高速な実装に完全に置き換え。 乗算は5倍、除算は300倍、二乗は10倍高速です。 巨大な数 (~5000 word) に対しては、このさらに5倍速くなります。
バグ修正
- 配列のappendでのメモリ破壊問題を修正
- Bugzilla 122: DDoc の改行の扱いが最適でない
- Bugzilla 1628: Ddoc が --- ブロックに対し不正な文書を生成する
- Bugzilla 2609: デストラクタのドキュメントが生成されない
- Bugzilla 3808: Assertion failure: 'classinfo->structsize == CLASSINFO_SIZE' on line 870 in file 'toobj.c'
- Bugzilla 3884: 無効な object.d でtypedefを定義するとsegv
- Bugzilla 3911: CTFE中の連想配列の使用でコンパイラがクラッシュ
- Bugzilla 3958: mixin(non-static method) でコンパイラがクラッシュ
- Bugzilla 3972: ファイル名と違う名前のモジュール
- Bugzilla 3984: Segfault(interpret.c): ローカルstatic変数に構造体コンストラクタを使うCTFE
- Bugzilla 3986: 構造体コンストラクタはメンバ変数のデフォルト初期化子を無視する
- Bugzilla 4002: dmd.conf と dmd -v の出力にバイナリ
- Bugzilla 4004: DMD 2.042 ref 引数を取る関数のCTFEで退行
- Bugzilla 4005: CTFE 中の std.c.stdlib.exit など
- Bugzilla 4011: mixin による正しくない関数オーバーロード
- Bugzilla 4019: [CTFE] 空連想配列へのアイテム追加
- Bugzilla 4020: [ICE][CTFE] CTFE中の構造体postblit
- Bugzilla 4023: どちらかの引数が 0 だと std.math.hypot() が無限大を返す
- Bugzilla 4027: CTFE 中にクロージャを使うと不正なコード生成
- Bugzilla 4029: CTFE: 関数の返したdelegateを呼び出せない
D 2.042 での変更点
Mar 19, 2010新しい/変更のあった機能
バグ修正
- object.d の clear() に基底クラスの破棄を追加
- Bugzilla 3842: ICE(expression.c) CTFE でのポインタの使用
- Bugzilla 3885: Windows DLL がマルチスレッド非対応
- Bugzilla 3899: CTFE: 未初期化変数の使用に対するとても駄目なエラーメッセージ
- Bugzilla 3900: CTFE: array.var 代入で間違った返値
- Bugzilla 3901: PATCH: CTFE でのネスとした構造体の代入
- Bugzilla 3902: opCmp の定義
- Bugzilla 3912: pure static ネスト関数が pure と認識されない
- Bugzilla 3914: レジスタに収まるサイズの構造体引数へのメンバアクセスがおかしい
- Bugzilla 3919: ICE(expression.c, 9944): typedef ireal に対する * や /
- Bugzilla 3920: Assertion failure: '0' on line 10018 in file 'expression.c'
- Bugzilla 3930: 連想配列が壊滅的に壊れている
D 2.041 での変更点
Mar 6, 2010新しい/変更のあった機能
- __traits の allMembers と derivedMembers は、文字列の配列ではなく 文字列のタプルを返すようになりました。配列にするには __traits を [ ] で囲みます。 これによって、コンパイル時にforeachでメンバ一覧をたどれるようになりました。
- interfaceのメンバ関数に契約を書けるようになりました
- 新しい演算子オーバーロードの制度を採用
- 警告では構文解析/意味解析をストップしないようになりました。 "compiles" trait でもエラー扱いとは見なされません。 しかし依然として、コマンドの実行結果としてはエラー状態を返し、オブジェクトファイルは生成しません。
- Bugzilla 2567 に対し -wi スイッチを追加
- mixinテンプレートの定義には mixin という修飾が必要になりました
- !in 演算子を追加
- 連想配列の内容の同値性を比較できるようになりました
- [ ] の中での length の使用は非推奨となりました。$ を使用して下さい
- std.functional に関数ポインタをdelegateに変換する toDelegate() を追加
- 構造体の属性を実装
- 構造体リテラルの修飾子を実装。例: immutable(S)(1,2,3)
- 配列の内容の同値性を、違う型の配列同士でも要素ごとの比較が可能ならば、比較できるようになりました
- 簡単なスペルチェッカを追加
- Bugzilla 3378: [tdpl] ++x は左辺値であるべき
バグ修正
- Bugzilla 2321: インラインアセンブラの仕様が誤解を招く
- Bugzilla 2463: "statement is not reachable" 警告に行番号が出ない
- Bugzilla 3029: 配列値のマングリング規則にバグ
- Bugzilla 3306: ヘッダファイルにおかしな関数/デリゲートリテラルが生成される
- Bugzilla 3373: longとulongに対する間違ったcodeviewデバッグ情報
- Posix限定, Bugzilla 3420: [PATCH] サブディレクトリに対応した文字列import
- Bugzilla 3450: 構造体内の is (typeof({ ... }())) で結果がおかしい
- Bugzilla 3453: リンク順がプログラム実行に影響する (Mac OSX 限定)
- Bugzilla 3491: typeof( (string[string]).init) == AssociativeArray!(string, string) で、string[string] に暗黙変換されない
- Bugzilla 3500: -inline を付けると super の挙動が変わる
- Bugzilla 3558: 最適化のバグでfalseなif分岐が実行される
- Bugzilla 3582: core.stdc.ctype 関数が pure でない
- Bugzilla 3619: スレッドが終了時にクラッシュ
- Bugzilla 3637: スレッドローカルなappendのパフォーマンス向上などのための、配列のappendのパッチ
- Bugzilla 3644: core.stdc.limits モジュールの UCHAR_MAX の値が間違い
- Bugzilla 3670: 宣言子の文法規則が壊れている
- Bugzilla 3689: 文法では const(int) が許されていない
- Bugzilla 3692: std.variant が import されていると連想配列で ICE(mtype.c)
- Bugzilla 3695: __EOF__ トークンがドキュメント化されていない
- Bugzilla 3697: StructTemplateDeclaration などの文法規則でテンプレート制約が抜けている
- Bugzilla 3710: allMembers の説明にtypo?
- Bugzilla 3736: 最適化(-O)時に関数から壊れた構造体が返される
- Bugzilla 3737: まずいopDispatchで、expression.c:6255 でSEGV
- Bugzilla 3763: std.stdio.readlnImpl は非常に非効率的でスタックも溢れる
- Bugzilla 3768: ddoc.html で引用符が重複
- Bugzilla 3769: 退行: 配列リテラルとcase文でSEGV(constfold.c)
- Bugzilla 3775: SEGV(cast.c): ゼロ引数テンプレート関数をプロパティ構文で使う
- Bugzilla 3776: core.stdc.limitsモジュールの CHAR_MIN の値が間違い
- Bugzilla 3781: ICE(interpret.c): C形式可変胡引数関数をゼロ引数でCTFE時に呼び出す
- Bugzilla 3803: コンパイラがSEGV
- Bugzilla 3840: phobosのドキュメントのquicklinkはソートされているべき
D 2.040 での変更点
Jan 29, 2010新しい/変更のあった機能
- 明確化: 関数の返値は左辺値ではない
- shared 静的コンストラクタ/デストラクタを追加。通常の 静的コンストラクタ/デストラクタはTLSへの操作となります
- -map コマンドラインスイッチを追加
- @disable 属性を追加
- delegateと関数ポインタがCTFEで使用可能になりました
- delegateリテラルと関数リテラルがCTFEで使用可能になりました
- lazy関数引数がCTFEで使用可能になりました
- char[]配列のスライスがCTFEで使用可能になりました
- interface に static/final 関数が実装可能になりました
- traits に getOverloads, identifier, isStaticFunction を追加
- ModuleInfo をクラスから構造体に変更
- Bugzilla 3556: version(CTFE)
- Bugzilla 3728: getOverloads と identifier trait
バグ修正
- OSX で TLS をサポート
- Bugzilla 47: Internal error: cg87 3316
- Bugzilla 1298: CTFE: tuple foreach のバグ
- Bugzilla 1790: CTFE: タプルがstringを含んでいるとforeach(Tuple)が通らない
- Bugzilla 2101: CTFE: コンパイル時にmutableな配列が使いたい
- Bugzilla 2066: to!(string)(int) を CTFE対応に
- Bugzilla 3488: Segfault(expression.c): 構造体の静的初期化子で宣言されたenum
- Bugzilla 3535: 構造体コンストラクタがCTFEで動作しない
- Bugzilla 3552: ICE(mtype.c): 'AssociativeArray' という名前の変数を定義してから連想配列を使う
- Bugzilla 3569 の部分的な修正: スタック溢れ野防止
- Bugzilla 3600: 空タプルでのテンプレートのインスタンス化
- Bugzilla 3660: テンプレートとshared関数がうまく混ざらない
- Bugzilla 3668: typedef された配列へのforeachでdmdがクラッシュ
- Bugzilla 3671: x が浮動小数点数リテラルの時 x^^3 の結果がおかしい
- Bugzilla 3674: 同名の複数のオーバーロードで前方参照のエラー
- Bugzilla 3675: 退行: 構造体リテラルを別の構造体リテラルで初期化できない
- Bugzilla 3687: 配列演算 "スライス×スライス" が変
- Bugzilla 3719: 前方参照でメモリ不足エラー
- Bugzilla 3723: 退行: enumの前方参照
- Bugzilla 3724: Expression::arraySyntaxCopy にバグ (struct->union->struct でのnull参照)
- Bugzilla 3726: 退行: ICE(mangle.c 81): static と構造体の前方参照
- Bugzilla 3727: コンパイル中に大量の "deffering SomeStructName" というメッセージ
- Bugzilla 3734: [patch] src/traits.c が gcc (Ubuntu 4.4.1-4ubuntu8) 4.4.1 でコンパイルできない
- Bugzilla 3740: 退行: ネスト構造体の前方参照を持つクラスでabstractが正しく働かない
D 2.039 での変更点
Jan 1, 2010新しい/変更のあった機能
バグ修正
- Bugzilla 3663: 構造体の前方参照に関する退行
- Bugzilla 3664: 構造体の前方宣言によってenumが自分自身と衝突
D 2.038 での変更点
Dec 30, 2009新しい/変更のあった機能
- Druntime に core.cpuid を追加
- Bugzilla 3514: foreach の繰り返し方法としては最初に opApply を試すべき
- Bugzilla 3577: opPow の優先順位の間違い
- auto ref 関数 を追加
- 関数テンプレート auto ref 引数
- isRef, isOut, isLazy を __traits に追加
- 引数から返値への型の転送。DIP2 参照
バグ修正
- Bugzilla 45: Internal error: cgcod 1594
- Bugzilla 46: long double の定数畳み込み
- Bugzilla 282: おかしな、循環importによるネスト名不可視問題
- Bugzilla 390: 構造体内のネストしたenumを前方参照できない
- Bugzilla 400: 前方参照エラー; 型YのプロパティXが存在しない (構造体内の構造体)
- Bugzilla 1160: enumが前方参照できない
- Bugzilla 1564: 循環import中のenumの前方参照
- Bugzilla 2029: 型安全可変個引数関数がCTFE中に動作しない
- Bugzilla 2816: 突然死する static assert はあまり有用でない
- Bugzilla 3270: 構造体を返すpure関数
- Bugzilla 3443: Thread.thread_needLock() は nothrow であるべき
- Bugzilla 3455: 識別子に使えない Unicode 文字がある
- Bugzilla 3458: int fsync(int) が core.sys.posix.unistd でコメントアウトされている
- Bugzilla 3476: コンストラクタを持つ構造体で C形式構造体初期化が使えない
- Bugzilla 3575: CTFE: メンバ構造体が正しく初期化されていない
- Bugzilla 3583: unsigned の右シフトが singed の右シフトと同じ動作をしている
- Bugzilla 3584: DeclDef 文法規則のエントリがない
- Bugzilla 3585: EqualExpression と RelExpression の文法規則に重複
- Bugzilla 3587: Aggregate 文法規則が未定義の Tuple を参照
- Bugzilla 3588: WithStatement 文法規則が未定義の Symbol を参照
- Bugzilla 3589: BaseClassList と InterfaceClasses 文法規則は不正確。',' が足りない
- Bugzilla 3590: FunctionParameterList 文法規則が抜けている
- Bugzilla 3591: TemplateIdentifier 文法規則にスペルミス
- Bugzilla 3592: ClassTemplateDeclaration と FunctionTemplateDeclaration 文法規則が参照されていない
- Bugzilla 3593: IntegerExpression 文法規則が未定義
- Bugzilla 3594: AsmPrimaryExp 文法規則が未定義の文法規則を参照
- Bugzilla 3595: いくつかの文法規則のうしろに ':' が足りない
- Bugzilla 3596: std.algorithm.remove を使うのに alias が必要
- Bugzilla 3601: Debug と Release で DMD が生成するオブジェクトファイルが違う
- Bugzilla 3611: enum の前方参照の退行
- Bugzilla 3612: ExpressionList が未定義
- Bugzilla 3617: CTFE: x が int かそれより小さい型の時 if(x) が誤った動作に
- Bugzilla 3621: constへの暗黙変換規則はもっと厳密化されるべき
- Bugzilla 3633: 最適化によってアクセス違反が発生
- Bugzilla 3641: alias shared T U が動作しない
- Bugzilla 3645: 記号定数 (enum) で dmd がクラッシュ
- Bugzilla 3647: 関数でない opDispatch で dmd がクラッシュ
D 2.037 での変更点
Dec 3, 2009新しい/変更のあった機能
- 条件演算子式 ?: の結果を変更可能な左辺値とすることが可能になりました
- 配列リテラル から推論される型は、静的配列ではなく、動的配列となりました。
- array.length op= に対応
- 配列や連想配列リテラルの型は、先頭要素の型ではなく、 全要素に ?: した型を使うようになりました。
- 配列と要素の結合は、 要素から配列要素型への暗黙変換を許すようになりました。
- [ と ] の間でコンマ演算子は使用不可能となりました
- ClassInfo は TypeInfo_Class へとマージされました。
- Bugzilla 3379: [tdpl] 引数名がテンプレートのif制約から見えない
- Bugzilla 3380: [tdpl] typeid(obj) はオブジェクトの動的型を返すべき
- コマンドラインスイッチ -safe を取り除き、-noboundscheck を追加
- Bugzilla 3481: PATCH: opPow(), x ^^ y を累乗演算子として
- opDispatch を追加
- プロパティの引数の個数は 0 か 1 に限定されました
- プロパティと非プロパティのオーバーロードは不可能となりました
- std.math: 浮動小数点数例外を有効にするための FloatControl, IeeeFlags を追加
- std.math: 逆三角関数をpure nothrowとしました
バグ修正
- std.array: array() の報告されていないバグを修正
- Bugzilla 111: dchar の char[] への追加
- Bugzilla 2664: OSX での標準数学関数は精度が足りない
- Bugzilla 2802: VariantN.opCmp!(T) が、T != VariantN の時 fail
- Bugzilla 2967: インラインアセンブラが正当な "return" として扱われることが仕様に記載されていない
- Bugzilla 2977: std.random.unpredictableSeed() はスレッドIDをどこかで使うべき
- Bugzilla 3115: >>> と >>>= の生成コードがおかしい
- Bugzilla 3171: 浮動小数点の % の実装が正しくない
- Bugzilla 3311: std.range.chain は引数がmutableでないときは opIndexAssign を持つべきでない
- Bugzilla 3375: [tdpl] 三項演算子が左辺値にならない
- Bugzilla 3381: [tdpl] 三角形型の継承階層でのオーバーライドの扱い方が正しくない
- Bugzilla 3388: [tdpl] 契約にthrow式を書けるべき
- Bugzilla 3390: [tdpl] out(result) 契約がresultを再束縛できてはいけない
- Bugzilla 3407: [tdpl] -safe -release でコンパイルするときは境界検査を保持するべき
- Bugzilla 3433: [tdpl] 構造体の同値性比較がメンバ毎比較になっていない
- Bugzilla 3469: ICE(func.c): 退行。別モジュールから非テンプレート関数をテンプレートとして呼び出し
- Bugzilla 3478: void への return で "no effect in expression" エラー
- Bugzilla 3494: Segfault(mtype.c) using typeof(return) を auto 関数の中で使用
- Bugzilla 3495: Segfault(typinf.c) Dの可変長引数関数を少なすぎる引数で呼び出し
- Bugzilla 3496: ICE(cgelem.c, optimizer bug) cast(void *)(x&1)== null.
- Bugzilla 3502: サポートの無くなった Mac OS X 10.5 向け修正
- Bugzilla 3521: 最適化されたコードが pop済みレジスタにアクセス
- Bugzilla 3540: また別の DWARF 行番号の修正
- Bugzilla 3551: ネスト構造体の => で dmd が隠しポインタを追加
- Bugzilla 3553: 関数引数のデフォルトが __LINE__ の時にICE
D 2.036 での変更点
Nov 5, 2009新しい/変更のあった機能
- 静的配列は参照渡しではなく値渡しされるようになりました。
- std.algorithm: topN には hasLength が必要となりました;。 topN が隣接していないレンジに対しても実行可能となりました; replaceTop 関数を BinaryHeap に追加; BinaryHeap.top が ref を返すよう変更。
- std.ctype: isalnum, isalpha, iscntrl, isdigit, islower, ispunct, isspace, isxdigit, isgraph, isprint, isascii, toupper にpureを追加
- std.date: isLeapYear と daysInYear の実装変更と単体テスト追加。両者ともpureに変更
- std.encoding: count() 関数を追加
- std.md5: 固定サイズバッファ引数に明示的なrefを追加
- std.numeric: gcd を追加
- std.random: 線形合同法生成器のパラメタに関する静的チェックを追加
- std.range: いくつかの単体テストを復活; Cycle が固定サイズ配列の新仕様で動作するよう修正
- std.typecons: Tuple.field の別名 'expand' を追加
- std:utf: count 関数を追加。encode 関数を、 固定サイズ配列をrefでとるよう変更
- Bugzilla 3446: float.min を float.min_normal に改名
バグ修正
- std.range: Transposed の未報告のバグを修正
- 複雑な配列演算の問題
- Bugzilla 195: 例が "protected" 属性を含んでいるときにDDocがおかしな出力を出す
- Bugzilla 424: 予期しない OPTLINK の停止 at EIP=0044C37B (too many fixups)
- Bugzilla 1117: 例にコロン付き属性があると ddoc の出力が壊れる
- Bugzilla 1812: DDOC - Unicode識別子が正しくマークアップされない
- Bugzilla 2694: alias pure nothrow XXX; が pure nothrow にならない!
- Bugzilla 2862: ICE(template.c) 型タプルを関数引数として使う
- Bugzilla 3035: const/invariant かつ shared の out 引数を使えない
- Bugzilla 3102: 型を誤ってsharedとしてマッチする (is 式で。2つの場合)
- Bugzilla 3269: pure 関数が暗黙に nothrow になる
- Bugzilla 3292: ICE(todt.c) 初期化子ありの名前付きmixinがテンプレートalias引数をとる場合
- Bugzilla 3349: typeid(shared(T)) が間違った値を生成
- Bugzilla 3367: Regression: 構造体初期化がコンストラクタの多重定義に対応していない
- Bugzilla 3397: 意図しない static opCall への関数呼び出し
- Bugzilla 3401: on invariant + メソッドオーバーロードでコンパイラがクラッシュ
- Bugzilla 3422: ICE(cgcod.c) レジスタサイズ以上のデフォルト初期化子を持つ構造体をデフォルト引数にできない
- Bugzilla 3423: -H を使うとデストラクタとpostblitがヘッダファイルにコピーされない
- Bugzilla 3426: ICE(optimize.c): キャストした構造体リテラルを関数のデフォルト引数にした場合
- Bugzilla 3429: テンプレートリテラルをメンバ関数に渡すとcore dump
- Bugzilla 3432: ICE(e2ir.c): テンプレート式のキャスト
D 2.035 での変更点
Oct 14, 2009新しい/変更のあった機能
- JSON ファイルを生成する -X オプション
バグ修正
- Bugzilla 1170 のパッチを取り込み
- Bugzilla 1534: case文をmixinできない
- Bugzilla 2423: 間違った到達不能コード警告
- Bugzilla 2826: 代入のエラーで行番号が変
- Bugzilla 3190: enumがfor loopでの増分として使えない
- Bugzilla 3316: pureテンプレートネスト関数が外側スコープのローカル変数を参照できない
- Bugzilla 3352: std.convでRangeError
- Bugzilla 3385: `std.string.split` がmutable配列を要求する
- Bugzilla 3392: tango.core.Thread での this から void へのキャストは許されない
D 2.034 での変更点
Oct 11, 2009新しい/変更のあった機能
バグ修正
- Bugzilla 258: 循環importで未定義識別子エラー
- Bugzilla 1140: ICE(cod1.c) 関数の最後の引数を8byte値にキャスト
- Bugzilla 1592: ファイルをパッケージに入れるとdmdがクラスシンボルを解決できなくなる
- Bugzilla 2687: ICE(statement.c) エラーのあるテンプレートでtuple foreach した場合
- Bugzilla 2773: ICE(go.c) ポインタ経由の配列代入で。-O 時のみ。
- Bugzilla 2829: ICE(expression.c) 構造体リテラルの中で静的配列をブロック初期化
- Bugzilla 3006: ICE(e2ir.c, tocsym.c) 配列演算を使うテンプレートモジュールで
- Bugzilla 3041: 配列スライスがその要素型と比較できてしまう: 不正なコード生成またはICE
- Bugzilla 3042: 間違ったオーバーライドでSegfault
- Bugzilla 3101: 集成体のメンバをstatic ifで2回宣言するとスタックオーバーフロー
- Bugzilla 3119: Segfault(expression.c) テンプレート関数と、他モジュールの同名関数とのオーバーロード
- Bugzilla 3174: ICE(mtype.c): auto 返値と const / immutable / invarient / pure の組み合わせでコンパイラがハングまたはエラー
- Bugzilla 3176: 可変長引数関数の中でおかしな形式のmixinをするとコンパイラがハング
- Bugzilla 3261: mixinと前方参照でコンパイラがクラッシュ
- Bugzilla 3286: デフォルト引数があるとモジュール間循環依存が解決されない
- Bugzilla 3301: 循環参照があるときに、import順に依存して未定義エラーが出たり出なかったり
- Bugzilla 3325: ICE(func.c) 事後表明つき関数リテラル
- Bugzilla 3343: "auto main(){}" でクラッシュ
- Bugzilla 3344: ICE(e2ir.c) main() から不正な関数を返す
- Bugzilla 3357: ICE(cod1.c) 静的char配列をキーにする連想配列で 'in' を使用
- Bugzilla 3366: Segfault(declaration.c) 制約が満たされない可変長引数テンプレート
- Bugzilla 3374: [tdpl] ICE(init.c): 連想配列型が推論されない
D 2.033 での変更点
Oct 5, 2009新しい/変更のあった機能
- Phobos のライセンスを Boost 1.0 license に変更
- -O つきでコンパイルすると、不正なnullポインタ参照のうちいくらかをコンパイラが検出するようになりました
- typeid(type) の結果型はTypeInfoの基底クラスではなく最も深く派生したTypeInfoクラスとなりました
- Bugzilla 2905: 浮動小数点数リテラルに関する +-*/ の高速化
- int から string への変換の高速化
バグ修正
- gdb のスタックトレースが動作するようになりました
- Bugzilla 302: in/out 契約の継承が未実装
- Bugzilla 718: int /= cast(creal) で ICE(cgcod.c)
- Bugzilla 814: lazy argument + variadic arguments = segfault
- Bugzilla 1168: テンプレートの値引数として式の .stringof を取るとその型名の文字列になる
- Bugzilla 1253: 配列初期化式がconst配列で使えない
- Bugzilla 1571: Segfault(class.c) 関数引数のconstが.diファイルに継承されない
- Bugzilla 1731: 関数型のaliasの前方参照が呼び出し規約をリセットしてしまう
- Bugzilla 2202: クラスの非staticメンバの型の取得エラー
- Bugzilla 2469: ICE(cod1.c) 任意の構造体が構造体初期化子として使えてしまう
- Bugzilla 2697: 関数のfloat返値をulongやuintにキャストするとおかしな値になる
- Bugzilla 2702: 構造体初期化の裏でキャストが挿入されている
- Bugzilla 2839: int /= 虚数で ICE(cgcs.c)
- Bugzilla 2970: version(Windows) での std.path.join
- Bugzilla 2998: 浮動小数点数のenumでICE(expression.c)
- Bugzilla 3049: ICE(cod4.c) or segfault: void[] 配列に対する配列演算
- Bugzilla 3059: 複素数の、意味を成さない op= は不正とされるべき
- Bugzilla 3132: std.string.split はテンプレート化して mutable/const/immutable 全対応になるべき - 2009-09-03 07:56:25 PDT を再オープンしてこちらをクローズ
- Bugzilla 3160: void main から string を返すと ICE(cgcod.c 1511-D1) or bad code-D2
- Bugzilla 3173: 間違ったコードで ICE(mtype.c) (double から long から int への変換)
- Bugzilla 3288: conv.d: to を const int や long に使うとコンパイルエラー
- Bugzilla 3300: std.string.toupper と tolower は string ではなく (const(char)[]) を受け取るべき
- Bugzilla 3304: ポインタの enum に 'is' を使うと segfault
- Bugzilla 3305: 再帰的な構造体テンプレートの alias 式で Segfault(expression.c)
- Bugzilla 3333: std.conv.to!(string, const int) error: cannot modify const
- Bugzilla 3335: 警告の整頓
- Bugzilla 3336: ICE(glue.c) タプルがキーの連想配列の宣言で。-g オプションをつけたときのみ
- Bugzilla 3340: std.string.split(S1 s, S2 delim) がまだ char[] に対して動かない
- Bugzilla 3353: メンバ関数の記憶域クラスがデフォルト引数にも引き継がれている
- (unlisted): std.algorithm: reduce に const 引数を渡したときのバグを修正
- (unlisted): std.stdio: ドキュメントの例を修正
- (unlisted): std.utf: decodeFront と decodeBack を修正
D 2.032 での変更点
Sep 2, 2009新しい/変更のあった機能
- Windows 版の -release ビルドでの assert(0) のエラーメッセージを改善
- CTFE時の:
a[i].var = e2
と:a[] = e
に対応 (thanks, Don!) - CTFE時のメンバ関数呼び出しに対応
- CTFE時の演算子オーバーロードに対応
- CTFE時のネスト関数呼び出しに対応
- CTFEのエラーメッセージで、 何故コンパイル時実行できないのかを説明するようになりました
- synchronized メンバ関数は暗黙に shared 型になるようになりました。
- std.algorithm: minPos 追加
- std.format: 読み込み用に raw 指定を追加
- File.byChunk 追加
- std.algorithm: topN にユーザ定義の比較関数が渡された場合の単体テストを増強
- std.math: std.c を core.stdc で置き換え; approxEqual を、数値や配列だけでなくレンジでも動くように拡張
- std.range: 意味をなすときは常に Take.popBack を定義するよう変更。iota が負のレンジとステップを受け取るように変更
バグ修正
- Bugzilla 601: statement.html - BNFのフォーマット/マークアップエラー
- Bugzilla 1461: ローカル変数をテンプレートalias引数とするとCTFEがおかしくなる
- Bugzilla 1605: goto のある switch で break するとCTFEがおかしくなる
- Bugzilla 1616: std/metastrings.d
- Bugzilla 1940: Phobos のビルドスクリプトが x86_64 で動かない
- Bugzilla 1948: 配列要素の構造体を書き換えるコードがCTFEできない
- Bugzilla 1950: ref渡しされた構造体を使うとCTFEが正しく動かない
- Bugzilla 1969: constオペランドに対して未定義演算子を使うと ICE(cod1.c)
- Bugzilla 1972: foreach range 文が CTFE でおかしい
- Bugzilla 2150: const variant から値を取り出せない
- Bugzilla 2277: 配列演算と const 配列が非互換
- Bugzilla 2398: ポインタの writef("%x") が常に大文字になってしまう
- Bugzilla 2560: ref const 構造体引数をとるメソッドの呼び出しでICE(cod4.c)
- Bugzilla 2564: CTFE: タプルに対する foreach のindex変数が未初期化という偽のエラー
- Bugzilla 2569: CTFE関数内の静的配列がコンパイルできない
- Bugzilla 2575: gdb がコードを表示できない
- Bugzilla 2587: std.process.shell が win32 で動作しない
- Bugzilla 2604: DW_TAG_module と GDB
- Bugzilla 2665: 特定の const struct を返値にもつ関数で ICE(cod4.c)
- Bugzilla 2784: interface では型宣言要求ができるべき ("invalid" として却下)
- Bugzilla 2785: interface では非メンバ関数の要求ができるべき ("invalid" として却下)
- Bugzilla 2786: interface ではコンストラクタの要求ができるべき ("invalid" として却下)
- Bugzilla 2882: シードなしの std.random.MersenneTwisterEngine
- Bugzilla 2925: デストラクタが呼ばれない
- Bugzilla 2937: 構造体の配列に対するforeachでpostblitが呼ばれない
- Bugzilla 2940: null is null がコンパイル時実行できない
- Bugzilla 2976: retreatN を retreat に改名
- Bugzilla 2979: 属性のみのXMLタグを ElementParser.parse すると属性が入らない
- Bugzilla 2980: writefln( uint ) でコンパイラエラー
- Bugzilla 2987: D2 の phobos の BigInt の opMul が正しく動いていない
- Bugzilla 2988: Chain に opIndexAssign が必要
- Bugzilla 2989: std.typetuple: 任意の種類の静的タプルに対する対応が必要
- Bugzilla 2992: ("later" としてクローズ)
- Bugzilla 2996: std.typetuple: 任意の種類の静的タプルに対する対応が必要
- Bugzilla 3000: iota は浮動小数点数でも使えるべき
- Bugzilla 3017: std.range のドキュメントエラー (Steven Schveighoffer の代理)
- Bugzilla 3025: uniform(float,float) は先頭を除き、uniform(int,int) は末尾を除いている
- Bugzilla 3037: Stride.length の Off-by-one エラー
- Bugzilla 3039: -vtls コンパイラフラグがmanに無い
- Bugzilla 3058: [CTFE] foreach range 文からreturnで抜けられない
- Bugzilla 3074: std.conv.to!(string)(int.min)
- Bugzilla 3077: 結果コード無しの main() からの脱出でクラッシュ
- Bugzilla 3087: std.range.retro.opIndex で out of range
- Bugzilla 3098: std.algorithm.reduce の例がコンパイルできない
- Bugzilla 3100: ICE(cast.c) shared メンバを持つ構造体
- Bugzilla 3132: std.string.split は mutable/const/immutable それぞれに対応するためtemplate化されるべき
- Bugzilla 3148: invariantを使う構文エラー
- Bugzilla 3153: win32.mak が、phobos.lib や gcstub.obj を存在しないlibフォルダにコピーしようとする
- Bugzilla 3162: コンパイル時浮動小数点数を完全にはテンプレート引数として使えない
- Bugzilla 3165: Dの整数除算はどのような除算なのか?
- Bugzilla 3166: mod演算子の仕様で "正の" -> "非負の"
- Bugzilla 3169: ulongのint除算でSegfault(cast.c)
- Bugzilla 3170: ネストクラスの前方参照が、外のクラスが単純なクラスでないと動かない
- Bugzilla 3184: std.algorithm.until は "find" のように動くべき
- Bugzilla 3183: align属性の仕様が不十分
- Bugzilla 3185: osx がディレクトリでない (std/c/osx/socket.d が読めない)
- Bugzilla 3186: http://www.digitalmars.com/d/2.0/dmd-osx.html の修正
- Bugzilla 3189: `std.conv.to` : 観衆としてクラスや構造体の `to` メソッドを調べるべき
- Bugzilla 3192: 無名delegateでasmを使うとコンパイラがクラッシュ
- Bugzilla 3195: `std.conv` のpure性 ("later" としてクローズ)
- Bugzilla 3196: delegateリテラルに関するエラーほとんどの後で Segfault(mtype.c)
- Bugzilla 3197: std.traits への簡単な修正と追加
- Bugzilla 3199: sort(chain(...)) が場合によって動かない
- Bugzilla 3205: CTFE: $ が lvalue の中で使えない
- Bugzilla 3212: エラーメッセージで "mutable" と出るが正しくは "immutable"
- Bugzilla 3217: std.functional.binaryFunImpl が文字列関数でUDTをサポートしてないので、多くのalgorithm関数も同様
- Bugzilla 3218: std.xml.encode のパフォーマンス改善
- Bugzilla 3219: 不正確な std.conv.to!(numeric)(numeric) のエラーメッセージ
- Bugzilla 3224: std.random ドキュメントバグ
- Bugzilla 3229: 関数の末尾にreturnもassert(0)もない
- Bugzilla 3236: Postblit が呼ばれるが対応するデストラクタが呼ばれない
- Bugzilla 3239: std.conv.roundTo が const/immutable/shared をとらない
- Bugzilla 3240: std.numeric.findRoot が real でしか動作しない
- Bugzilla 3242: splitter が、唯一のseparatorからなる入力レンジを正しく扱わない
- Bugzilla 3245: std.encoding の無効化されたテストケースは簡単にフィックスできる
- Bugzilla 3246: ローカルな配列変数に対して添字付き配列初期化しを使うと ICE(init.c)
- Bugzilla 3249: 構造体やクラスの配列に対する sort と setIntersection
- Bugzilla 3253: DMD crashes on function pointer struct member initialization with function literal
- Bugzilla 3255: -w スイッチをつけると final switch がおかしい
- Bugzilla 3257: 文字列のswitch caseラベルに関して仕様があいまい
- Bugzilla 3260: 'write' で 'wchar' を使うと "Error: undefined identifier backend"
- Bugzilla 3264: enum を使っていると -O オプション付きでコンパイルしたときに "used before set" エラーが誤って出る
- Bugzilla 3281: ICE(cod1.c) returnされた構造体の配列への追加
- dmd のディレクトリパスに空白文字があったときのバグを修正
- 修正: assert failure on line 4823 in expression.c
- OSX での samples/d/dhry.d のコンパイルエラーを修正
- std.format: ドキュメントの未報告のバグを修正
- std.random: immutable なデータを渡すと uniform が動かない
- std.range: Take.back の未報告のバグを修正
- unlisted: entropy が const/immutable 配列でも動作するよう修正
D 2.031 での変更点
July 6, 2009新しい/変更のあった機能
- ルートディレクトリを \dmd から \dmd2 に変更
- with文によるローカルシンボルを隠すシンボルの使用は許されなくなりました。
- final switch文 追加
- case range文 追加
- 情報量の落ちる整数型の暗黙変換は、 許されなくなりました
- return文がない場合は警告ではなくエラーとなりました
- Bugzilla 3080: dmd はコンパイルエラーを stderr に出すべき、stdout ではなく
- Bugzilla 3122: [patch] フロントエンドへの拘束で信頼性の高いビルドツールサポートの追加
- std.algorithm: std.algorithm.swap を、memcpyを使うようにし高速化。std.algorithm.group, std.algorithm.until, std.algorithm.nWayUnion, std.algorithm.largestPartialIntersectionWeighted 追加。std.algorithm.equal に制約を追加。std.algorithm.topNIndex と std.algorithm.topNCopy の引数をboolからenumに変更
- std.array: array 関数を追加
- std.conv: Shin Fujishiro による、enumの表示とparse用のコードを追加
- std.ctype: isupper と tolower を pure に
- std.date: benchmark の返値を uint[] から ulong[] に変更
- std.demangle: ranged label を使ったエレガントな switch 文による実装に変更
- std.random: randomSample を追加
- std.string: std.string.find と std.string.find を非推奨にし、std.string.indexOf で置き換え。deprecated std.string.rfind と std.string.irfind を非推奨にし、std.string.lastIndexOf で置き換え。indexOf と lastIndexOf に CaseSensitive フラグを追加。std.algorithm に同じ機能があるため startsWith と endsWith を廃止。std.string.byDchar を定義
- std.traits: isSomeChar, isPointer を追加
- std.typetuple: indexOf を indexOfType で置き換え。古い名前はaliasで残してありますが非推奨です
- std.utf: エラーメッセージの改善
バグ修正
- マルチコア Windows での dmd のクラッシュを修正
- std.algorithm.startsWith の未報告バグを修正
- std.algorithm.topN の未報告バグを修正
- std.algorithm.topNIndex の未報告バグを修正 (空インデックスでクラッシュ)
- std.algorithm.setIntersection の未報告バグを修正
- std.range.retro の未報告バグを修正: rangeを2回retroした場合元のrangeを返すべき
- Bugzilla 106: template - mixin シーケンス
- Bugzilla 810: テンプレートを前方参照できない
- Bugzilla 852: 静的ネスト関数の中の非静的ネスト関数の中のローカルクラスで ICE(toir.c)
- Bugzilla 1343: 構造体と配列の静的初期化の様々なバグ
- Bugzilla 1358: 0x7FFFFFFF より大きい Unicode コードポイントで ICE(root.c)
- Bugzilla 1524: CTFE中に文字列に "is" を使うと ICE(constfold.c)
- Bugzilla 1984: Assertion failure: 'e1->type' on line 1198 in file 'constfold.c'
- Bugzilla 2323: ICE(cgcs.c): テンポラリ構造体のメソッドのアドレスを取る操作
- Bugzilla 2429: std.stream.File フラグの解析と共有モードの間違い
- Bugzilla 2432: 複雑なaliasで mtype.c:125: virtual Type* Type::syntaxCopy(): Assertion `0' failed.
- Bugzilla 2603: 文字列リテラルの減算で ICE(cgcs.c)
- Bugzilla 2843: typeidを使うis式の中の不正なdot式を使うis式で ICE(constfold.c)
- Bugzilla 2865: RandomCover がランダムでない
- Bugzilla 2875: delegate = &Struct.func で ICE(cgcod.c)
- Bugzilla 2884: ICE: Assert: 'template.c', line 3773, 'global.errors'
- Bugzilla 2888: [PATCH] float*2.0の高速化
- Bugzilla 2900: druntimeの統合以来、配列のappendが非常に遅い
- Bugzilla 2915: [Patch]: -a*-b を a*b に最適化
- Bugzilla 2923: -O が ?: で不正なコードを生成
- Bugzilla 2932: 間違った e_ehsize (36 != 52)
- Bugzilla 2952: 8要素を越えるdoubleの配列の配列演算をしたときに終了時にsegv
- Bugzilla 2974: auto 関数で Segfault(mtype.c)
- Bugzilla 2981: invariant を含む構造体のコード生成がおかしい
- Bugzilla 2982: if() 節付き関数で Assertion failure
- Bugzilla 3003: メンバテンプレート関数呼び出しに暗黙に () を付け加える必要がある
- Bugzilla 3014: テンプレートとタプルで ICE(template.c)
- Bugzilla 3016: std.math.acos のドキュメントの間違い
- Bugzilla 3026: 不完全な静的配列初期化子でsegv
- Bugzilla 3044: 構造体のタプルコンストラクタをゼロ引数でインスタンス化すると Segfault(template.c)
- Bugzilla 3071: ネストした関数宣言のパースの問題
- Bugzilla 3078: NaN が 0 と等しいと報告される
- Bugzilla 3081: 構造体から要素を取り出すのに unaryFun が使えない
- Bugzilla 3095: D2 の wc の例はコンパイルが通らない
- Bugzilla 3114: マルチコア機でoptlinkが失敗
- Bugzilla 3117: *1 で dmd がクラッシュ
- Bugzilla 3121: 再帰で正しい数値が生成されない
- Bugzilla 3128: Internal error: ..\ztc\cod4.c 2737
- Bugzilla 3130: 三重スターでクラッシュ
D 2.030 での変更点
May 11, 2009新しい/変更のあった機能
- -vtls コンパイラスイッチを追加
- 従来のグローバル変数のデフォルトを TLS (スレッドローカル記憶域) に。 これは非常に大きな変更です。sharedへの移行 参照
- std.algorithm: minPos を追加。Brad Roberts の提案による Splitter の改善。Splitter は bidirectional となりました。また、separator で終わっていた場合は Splitter は1つ追加の要素を持つようになりました。setUnion と setIntersection の可変引数版を追加。setSymmetricDifference, largestPartialIntersection 関数を追加。BinaryHeap のインターフェイスと実装を改善
- std.array: Appender の改善。stringやその他immutable配列でも動作し、put()にレンジを受け取れるようになりました。
- std.format: 読み取りに raw 指定を追加
- std.range: 2引数の iota を追加。FrontTransversal と Transversal を追加。
- std.stdio: File.byChunk を追加
- std.traits: isImplicitlyConvertible を追加
- std.tuple: Tuple.opCmp を追加
- Unknown W. Brackets による、Solaris 対応のためのコンパイラ/ライブラリの変更を取り込み
- ClassInfo に .typeinfo を追加 Bugzilla 2836: ClassInfo から TypeInfo へのナビゲート
バグ修正
- Linuxでの命令スケジューラのバグを修正
- unlisted: std.numeric.entropy が const/immutable 配列でも動作するよう変更
- スレッドローカル記憶域に関する問題をいくつか修正
- Bugzilla 642: "static this" がおけない場所へのmixin
- Bugzilla 713: モジュール演算子"."を使った循環したconstの定義でコンパイラがsegfault
- Bugzilla 752: Assertion failure: 'e->type->ty != Ttuple' on line 4518 in file 'mtype.c'
- Bugzilla 858: クラス内での構造体の前方参照でコンパイラがクラッシュ
- Bugzilla 884: 再帰テンプレートでSegfault
- Bugzilla 934: テンプレート内で前方参照した識別子の.mangleofをとるとSegfault
- Bugzilla 1011: 不正なimport宣言でコンパイラがsegfault
- Bugzilla 1054: 退行: 循環aliasでsegfault
- Bugzilla 1061: "asm inc [;" でコンパイラがsegfault
- Bugzilla 1305: テンプレートクラスを返すテンプレート化opCmpでコンパイラがハング
- Bugzilla 1385: 巨大な配列リテラルでスタックオーバーフロー
- Bugzilla 1428: delegateとtupleを使ったテンプレートの特殊化でSegfault
- Bugzilla 1791: 無名クラス内の無名クラスと非定数の変数初期化でSegfault
- Bugzilla 1916: 不正な文字列結合でsegfault
- Bugzilla 1946: const typedef から 非const への暗黙変換をしようとするとコンパイラがクラッシュ
- Bugzilla 2048: void初期化された構造体へのメンバ代入を伴うCTFEでDMDがクラッシュ
- Bugzilla 2061: インターフェイスの多重継承で誤ったvtable呼び出し
- Bugzilla 2215: 構造体内でのenumのベース型の前方参照でコンパイラがSegfault
- Bugzilla 2309: 可変引数テンプレートに未定義テンプレート識別子を渡したもののmixinでコンパイラがクラッシュ
- Bugzilla 2346: typedef されたクラスの比較でSegfault
- Bugzilla 2580: D2 の WinMain のドキュメントが不正
- Bugzilla 2633: object.di の ModuleInfo の宣言が不正
- Bugzilla 2695: pure 関数が impure 関数ポインタを呼べてしまう
- Bugzilla 2807: ネスト関数をpureとマークするとまずいコード生成が知らないうちに通ってしまう
- Bugzilla 2821: { int, long } で C とスタック整列の互換性がなくなる
- Bugzilla 2851: C形式の構造体初期化で引数が少なすぎる場合にSegfault
- Bugzilla 2865: RandomCover がランダムでない
- Bugzilla 2882: シード無し std.random.MersenneTwisterEngine
- Bugzilla 2890: std.stdioのデッドロック
- Bugzilla 2893: 修飾された型が対応するUnsigned持たない
- Bugzilla 2906: 浮動小数点数の書式化に関する writef の問題
- Bugzilla 2914: to!string(struct) が壊れている
- Bugzilla 2920: 再帰テンプレートがコンパイラのスタックを吹き飛ばす
- Bugzilla 2922: 文字列に対する最悪なパフォーマンスのハッシュ
D 2.029 での変更点
Apr 19, 2009新しい/変更のあったPhobos
- std.algorithm
- 全てをレンジベースに変更しました。既存のコードに大きく影響します。いくつかのアルゴリズムを追加。
- std.array
- 配列用のレンジプリミティブ
- Appender テンプレート
- insert, replace 関数
- std.bitmanip
- 長さ 0 のビットフィールドの中身は常に 0 となるようにしました。
- ビットフィールドの読み取り関数を const に
- std.contracts
- enforce が string の代わりに const(char)[] を受けるようになりました。
- 失敗時に呼び出すdelegateを指定するenforceのオーバーロードを追加
- assumeSorted テンプレートを追加
- structuralCast を追加。 (不完全ですが) 構造的なキャストの実装です。
- std.conv
- テンプレート制約によって変換を書き直しました。
- 全ての値をテキストに変換する text() 関数を追加
- std.date
- 簡単な時間測定を行える benchmark 関数を追加
- std.file
- read, write, append, rename, remove, getSize, getTimes, getAttributes, isfile, isdir, chdir, mkdir, mkdirRecurse, rmdir, listdir, copy, がファイル名を "in char[]" で受け取るようになりました。
- テキストファイルを読み込んで検証する readText 関数を追加
- タプルの配列にファイルを読み込む slurp 関数を追加。
例:
auto a = slurp!(int, double)("filename", "%s, %s");
ファイルの各行は "1, 2.3" のような形とします。slurp は、 各行をパースした Tuple!(int, double) の配列を返します。
- std.format
- 書式指定子 "%()" でのベクトル書式化機能を追加しました。 例えば、writefln("[%(s; )]", [1, 2, 3][]) は "[1; 2; 3]" を出力します。 これは試験的な機能で、将来的には変更される可能性があります。
- formattedRead 関数 (別名、腐ってない scanf) を追加。 実装は未完成ですが、よくあるケースには対応済みです。
- std.functional
- エラーメッセージの改善
- 関数の引数名を文字列で渡してカスタマイズできるように拡張
- Adjoin テンプレートを追加
- std.getopt
- 無引数delegateに対応
- std.math
- 組み込みの std.math.yl2x と yl2xp1 を追加。 std.math.log() などの関数のパフォーマンス向上 (と pure nothrow化) に使われています。
- std.mmfile
- 細々とした変更
- std.numeric
- 型 CustomFloat を追加。カスタムな浮動小数点数の定義に使うことができます。 (例、16-bit float、positive float など)
- テンポラリ値を格納するのに最適な型を示す FPTemporary を追加
- oppositeSigns をテンプレート化
- ユークリッド距離関数を追加
- dotProduct を追加
- cosineSimilarity を追加
- normalize を追加
- 文字列カーネル関数 gapWeightedSimilarity, gapWeightedSimilarityNormalized, gapWeightedSimilarityIncremental を追加
- std.outbuffer
- いくつか不足していた write() のオーバーロードを追加
- std.path
- getDrive が全ての文字列型に対して動作するようになりました
- isabs が in char[] を受け取るよう変更
- join が可変個の in char[] を受け取るよう変更
- fnmatch が in char[] を受け取るよう変更
- std.random
- 指定されたレンジをランダムにカバーする RandomCover を追加
- 旧形式の random 関数を削除
- random 関数の呼び出しを簡単にするため、 デフォルトのランダムオブジェクトを提供
- ジェネレータのインターフェイスをレンジに合わせるよう変更。これによって、以下のような記述が可能になります:
Random r; foreach (n; take(100, uniform(0, 100))) { ... }
- std.range (新モジュール)
- レンジ操作
- std.regex (新モジュール)
- 新しい正規表現ライブラリ。ワイド文字対応、 簡潔なインターフェイス、改善されたスピードなどが特徴です。
- std.regexp
- 非推奨となりました。std.regex を使用して下さい。
- std.stdio
- 互換性のない大きな変更: File 構造体を導入。stdin, stdout, stderr は File 構造体のインスタンスとなりました。
- コンパイラのバグのため、 File のコピーコンストラクタとデストラクタはコメントアウトされています。Walter が近いうちに修正予定です。 File の close は手動で行う必要があります
- byRecord イテレーションモードによって、 構造化されたテキストファイルに対するループが簡単に書けるようになりました。
- writef と writefln の第一引数が string となりました。
- std.string
- strip, stripl, stripr, startsWith, endsWith が全ての文字列型で動作するようになりました。
- std.typecons
- コンストラクタ、代入演算子、length, toString, slice を Tuple に追加。
- std.utf
- toUTF16z が in char[] を受け取るように
- std.variant
- 自分自身のvectorとhashを含むVariantに対応
- std.c.stdio
- fopen64 と friends を追加
新しい/変更のあった機能
- テンプレート関数リテラルを追加
バグ修正
- Bugzilla 675: %a 書式が非正規化数で out-by-1 バグ
- Bugzilla 2199: 関数呼び出しの中で配列操作をするとsegv
- Bugzilla 2203: typeof(class.template.foo) でコンパイラがクラッシュ
- Bugzilla 2577: 未定義識別子でのforeachでDMDがクラッシュ
- Bugzilla 2808: 'nothrow' のネスト関数がパースできない
- Bugzilla 2812: sqrt(2.0) が、およそ -2.7341e-53
D 2.028 での変更点
Apr 7, 2009新しい/変更のあった機能
バグ修正
- Bugzilla 1586: 不完全なコードセグメントで DMD と GDC が segfault
- Bugzilla 2064: 中身が空の for/foreach の mixin でsegv
- Bugzilla 2804: pure関数の中のimpureネスト関数は許可されるべき
- Bugzilla 2812: sqrt(2.0) が、およそ -2.7341e-53
D 2.027 での変更点
Mar 31, 2009新しい/変更のあった機能
- std.math のほとんどの関数を pure nothrow としました。std.math.hypot の速度改善。
- Linux と OSX 用コンパイラにレスポンスファイルを追加
- alias this を追加
- Bugzilla 2746: float.init のデフォルトを signalling NaN に
- Windows 版では、コマンドラインで複数のソースを指定した際には、 バックグラウンドスレッドで読み込むようになりました。 これによってコンパイル速度の向上が期待されます。
- Tomas Lindquist Olsen からの、LDC との互換性向上パッチを取り込み
- ライブラリから etc.gamma を削除
バグ修正
- std.math.hypot が非正規化数に対して誤動作していた
- '/' が Windows でパス区切りとして認識されていなかったバグを修正
- Bugzilla 920: scope ではなく auto を使っている古いソースを修正
- Bugzilla 1645: 基底クラスのconstメソッドを非constメソッドでオーバーライドできてしまう
- Bugzilla 2319: "Win32 Exception" ではあまり役に立たない
- Bugzilla 2336: 存在しない std_array.html へのリンク
- Bugzilla 2570: Ddoc コメントのいくつかのミスに対するパッチ
- Bugzilla 2574: std.c.stdio がコンパイルできない: va_list not defined!
- Bugzilla 2591: カスタムアロケータ new の引数は unit ではなく size_t であるべき
- Bugzilla 2595: テンプレートコンストラクタでコンパイラがクラッシュ
- Bugzilla 2596: 可変引数コンストラクタがコンパイルできない
- Bugzilla 2626: テンプレート関数がデフォルト引数でインスタンス化されたテンプレート構造体に対して動かない
- Bugzilla 2674: コピー postblit コンストラクタ this(this) がメンバに対して呼ばれない
- Bugzilla 2689: seek が MAC OSX でおかしい
- Bugzilla 2692: x86 Linux での double の整列が不正
- Bugzilla 2700: typeof のテストがコンパイルを変に止めてしまう
- Bugzilla 2705: レスポンスファイルのサイズが 64kb 以下しか扱えない
- Bugzilla 2711: 関数宣言がテンプレートで返値型がautoの場合、-H がおかしなヘッダファイルを生成
- Bugzilla 2722: 可変長テンプレート引数でICE
- Bugzilla 2723: 可変長テンプレート引数でICE, 別のケース
- Bugzilla 2724: テンプレートコードのsegv
- Bugzilla 2725: static if でのパターンマッチが可変引数でうまく動かない
- Bugzilla 2727: std.date の循環依存
- Bugzilla 2728: const ref 返値でのおかしなエラー
- Bugzilla 2729: hash_t がドキュメント化されてない、また、不要
- Bugzilla 2730: op= の制限は緩和できる
- Bugzilla 2731: 連想配列の例の間違い
- Bugzilla 2739: クラスメソッド内でネストした関数で_argptrが不正
- Bugzilla 2743: dumpobj が Tiger で "buss error"
- Bugzilla 2744: forstatement の間違った toCBuffer
- Bugzilla 2745: トークン tochars が lexer.c に無い
- Bugzilla 2747: funexp の不適切な toCBuffer
- Bugzilla 2750: コンパイル時にサイズのわかっているスライスのコピーの最適化
- Bugzilla 2751: scope 記憶域クラスつきのvardeclarationのtoCBufferが不正
- Bugzilla 2752: std.xml の CData のエンコードが不正
- Bugzilla 2754: The error message regarding implicit conversion to shared doesn't mention shared in the message.
- Bugzilla 2755: リンクされるオブジェクトの不正なref returnでICE: Assertion failure: 'type' on line 6566 in file 'expression.c'. 不正なコードがファイルローカルならばICEにならない
- Bugzilla 2756: pure nothrow math 関数でおかしなコード生成
- Bugzilla 2761: std.string で未到達コード警告
- Bugzilla 2763: std.mangle.demangle が 'ya' を変換しない
- Bugzilla 2766: DMD が 0%cpu でハング
- Bugzilla 2767: DMD が NTFS ストリームファイル名を間違ってマングリングする
- Bugzilla 2772: lib がレスポンスファイルを開けない
D 2.026 での変更点
Mar 3, 2009新しい/変更のあった機能
- エスケープ文字列リテラルは非推奨となりました。Bugzilla 2658 参照
- exp, expm1, exp2 を3倍高速化。std.math のCの標準ライブラリへの依存を減らしました。
- ネスト構造体 を追加
- ビルド可能なdmdのソースを追加
- std.math への、速度、精度、Tangoとの互換性向上などのための大幅な変更:
- Mac OSX 版での exp, expm1, exp2, sinh, cosh, tanh の精度向上および、 すべてのプラットフォームでの3倍の高速化
- IEEE754-2008 の camelCase 形式の名前を isNaN, isFinite, isNormal, isSubnormal, isInfinity に仕様。旧形式の名前のエイリアスは残します。
- nan(char[]) を NaN, getNaNpayload に置き換え
バグ修正
- Bugzilla 1603: ポインタ型に束縛される文字列リテラル
- Bugzilla 1629: Link error: Previous Definition Different: blablah__initZ
- Bugzilla 1662: -gありで-debuglibがないとき、libphobos にフォールバック
- Bugzilla 1681: cast(real) ulong.max == 0
- Bugzilla 2416: typedef された配列のスライスは typedef された型を保つべき
- Bugzilla 2597: いろいろなケースで auto return が動かない
- Bugzilla 2612: invariant が使えたところで immutable が使えないことがある
- Bugzilla 2619: 構造体のローカルインスタンスが実際はローカルなインスタンス化になっていない
- Bugzilla 2621: ユーザー定義型の右辺値に束縛されるref
- Bugzilla 2622: ref return が複雑なテンプレートで使えない
- Bugzilla 2623: 関数の型がrefを落とす
- Bugzilla 2670: std.file.read() は長さ0のファイルを読めるべき
- Bugzilla 2673: -libでコンパイルすると時々静的コンストラクタが動かない
- Bugzilla 2675: コピーコンストラクタのある構造体をforeachできない
- Bugzilla 2676: alias引数がconcept-if節でマッチしない
- Bugzilla 2677: alias引数がconcept-if節から見えない
- Bugzilla 2678: for ループは必ず止まると見なされている
- Bugzilla 2679: 嘘の "warning - " メッセージと、is(typeof({void function}())) の間違った挙動
- Bugzilla 2684: 連想配列の opIndex のシグネチャが間違っている
- Bugzilla 2690: DMD が MALLOC_CHECK_ のセットでabort
D 2.025 での変更点
Feb 14, 2009新しい/変更のあった機能
- Mac OSX 対応
- bin ディレクトリと lib ディレクトリを windows, linux, osx に分離
- Windows版を使用するのにdmcのダウンロードは不要となりました。
- Mac OSX 用のバージョン識別子は version(OSX) です。version(darwin) も現在はサポートされていますが、非推奨です。
バグ修正
- Bugzilla 2448: テンプレートからの参照返しでSEGV
D 2.023 での変更点
Jan 2, 2009新しい/変更のあった機能
- long除算の速度を改善
- 最適化の際に immutable と pure 指定を考慮するようになりました。
- 定義済みversion識別子 D_Ddoc を追加。-D スイッチ指定時に有効になります。
- 文字列リテラルの型を invariant(char)[文字列の長さ] から invariant(char)[] に変更しました。 前者への暗黙変換は依然として可能です。 これはテンプレートのインスタンス化による肥大化を抑えるための処置です。
- Bugzilla 2500 の修正を取り消し。 元々のバグ以上に悪い事態を引き起こしたため
バグ修正
- Bugzilla 1078: フロントエンドが、'scope' であるべきところに 'auto' を使っている
- Bugzilla 2517: DDoc がクラスの abstract を省略してしまう
- Bugzilla 2518: scope(success) が実行されず RAII 変数のデストラクタも呼ばれない
- Bugzilla 2519: 不正なスライスの中で >> が使われるとSEGV
- Bugzilla 2527: aliasテンプレート引数が常に最初のインスタンス化の実引数と同じになってしまう (typeof(x).stringof 調べ)
- Bugzilla 2531: static if 内のメソッドに関して DDoc が正しく生成されない
- Bugzilla 2533: 誤ったコードでコンパイラが "assertion failed" と言って落ちる
- Bugzilla 2534: dmd.conf が間違っている
- Bugzilla 2537: このコードでコンパイラがクラッシュ
- Bugzilla 2541: foreach変数にalias型を使えない
- Bugzilla 2542: 配列のキャストがコンパイル時と実行時で挙動が違う
D 2.022 での変更点
Dec 11, 2008新しい/変更のあった機能
- IUnknown を、extern(Windows) の代わりに extern(System) を使うよう変更しました。
- pure関数の意味論的チェックを行うようになりました。
- nothrow関数の意味論的チェックを行うようになりました。
- shared 型コンストラクタを追加
バグ修正
- Bugzilla 1518: 'scope' と 'with' と未定義の 'RegExp' を使うとクラッシュ
- Bugzilla 1649: Variant のコアーションがdelegateで失敗する
- Bugzilla 1685: 配列の添え字が二回評価される
- Bugzilla 1933: デリミタ文字列定数でSEGV
- Bugzilla 1963: -H が壊れたヘッダを生成
- Bugzilla 2041: 仕様はインターフェースとCOMオブジェクトの関連を暗示している
- Bugzilla 2105: パッチ追加
- Bugzilla 2441: ヘッダファイル生成がenumを記号定数に変換
- Bugzilla 2468: AndAndExp と OrOrExp の結果型が間違って推論される
- Bugzilla 2489: 構造体内でのimportでassert失敗
- Bugzilla 2490: extern(C++) が構造体を戻り値として扱えない
- Bugzilla 2491: druntime の GC がTLSから指されているデータを誤って解放
- Bugzilla 2492: Linux で -lib オプション付きでビルドするとICE
- Bugzilla 2499: テンプレートエイリアスのデフォルト値をテンプレートのインタンスにできない
- Bugzilla 2500: テンプレート構造体メソッドが、複数のモジュールからimportされると未解決となる
- Bugzilla 2501: final override とマークされたメンバ関数は override を無視する
- Bugzilla 2503: Error 42: Symbol Undefined _D3std7process6systemFAyaZi
- Bugzilla 2506: this.member 構文でアクセスした場合コンストラクタ内でconstメンバを初期化できない
- Bugzilla 1752 のパッチを幾つか取り込み
- extern __thread が Linux で動作するよう修正
D 2.021 での変更点
Oct 20, 2008新しい/変更のあった機能
- -safe スイッチと module(system) Identifier; 構文の追加
- foreach 構文の range 対応
- scope 引数記憶域クラスによって、 引数が関数起動のスコープを 'escape' しないことを指定できるようになりました。 delegate引数にこの指定をつけることで、 クロージャ化によるメモリ割り当てを避けられる場合があります。
- lazy 記憶域クラスは同時に scope を意味するようになりました。 これによって、lazy引数はクロージャ割り当てを引き起こさなくなります。
- 構造体メンバ関数での 'this' は、 ポインタではなく参照型になりました。 既存のコードが動かなくなる可能性があります。
- druntime へのさらなる変更:
from to OutOfMemoryException OutOfMemoryError SwitchException SwitchError HiddenFuncException HiddenFuncError ArrayBoundsException RangeError AssertException AssertError FinalizeException FinalizeError onArrayBoundsError onRangeError stdc.* core.stdc.* sys.* core.sys.* - 実験的な機能として、core.runtime.loadLibrary() によるライブラリの動的ロード機能を追加。(現在のところ Win32 専用です)
- 実験的な機能として、core.runtime.unloadLibrary() によるライブラリの動的アンロード機能を追加。
- core.thread.sleep() は100ナノ秒単位でlong整数を受け取るようになりました。 (前のリリースではfloatを受け取るとされていました)
- druntime を別々にリンクする必要はなくなりました。 libphobos2.a に挿入されます。
バグ修正
- Bugzilla 313: 完全修飾名を使うとprivate importの抜け道になってしまう
- Bugzilla 920: SPEC: scopeであるべきところでautoクラスが参照されている
- Bugzilla 929: 連想配列の配列 (uint[char[]][]) をリサイズすると無限ループ / ハング
- Bugzilla 1372: pragma(msg,) が通る
- Bugzilla 1610: Enum.stringof がenumの名前ではなくint
- Bugzilla 1663: pragma(lib, "") がlinuxで動かない
- Bugzilla 1797: ドキュメントコメント ///
- Bugzilla 2428: enum化された配列の要素にアクセスするとコンパイラエラー
- Bugzilla 2429: std.stream.File のフラグ解析と共有モードが間違っている
- Bugzilla 2431: Internal error: ../ztc/cgcod.c 1031 when using -O
- Bugzilla 2470: ライブラリから別のライブラリをビルドすることができない
- unittest 関数がDのリンケージにならないことがある
D 2.020 での変更点
Oct 20, 2008新しい/変更のあった機能
- rehash時にツリーの平衡化を同時に行うことで連想配列のパフォーマンスを改善
- immutable を実装
- Bugzilla 2344: 配列関数の間違ったlookup
- Bugzilla 2345: 参照返し が可能であるべき
- Linux 環境下で Posix が定義済みバージョン識別子となりました
- Sean Kelly の尽力をもとに、Phobos を2つのライブラリ
druntime.lib と phobos.lib に分割しました。
これによって Tango との統合が改善されます。
ユーザのソースコードで必要な変更は以下の通りです:
スレッドに関する変更:from to bit bool _d_OutOfMemory() onOutOfMemoryError() import std.asserterror; import core.exception; import std.hiddenfunc; import core.exception; import std.switcherr; import core.exception; import std.array; import core.exception; import std.outofmemory; import core.exception; import std.gc; import core.memory; import std.thread; import core.thread; SwitchError SwitchException AssertError AssertException HiddenFuncError HiddenFuncException ArrayBoundsError ArrayBoundsException std.gc.fullCollect() GC.collect() std.gc.*() memory.gc_*() _moduleUnitTests() import runtime; runModuleUnitTests() printf add import std.c.stdio; - ネイティブのスレッドハンドルはユーザーに公開されません。 これは、必要な場合はスレッド内で適切なOSの機能を呼び出すことで取得します。
- druntime には Thread.pause() と Thread.resume() に対応するものがありません。近い物は thread_suspendAll() と thread_resumeAll() ですが、これは基本的にはGCが使うための機能です
- Thread.wait() から Thread.join() へ改名
- Sleep機能が Thread.sleep(double) として使用可能になりました。引数はsleepする秒数です。
バグ修正
- Bugzilla 1229: リンカがディスクを埋めつくす
- Bugzilla 2332: constやinvariantのハッシュの初期化がまずい
- Bugzilla 2333: ハッシュの初期化子が正しく動かない
- Bugzilla 2336: 存在しない std_array.html へのリンク
- Bugzilla 2340: テンプレートのプロパティが動かない
- Bugzilla 2341: 途中のコピーなしで二重デストラクト
- Bugzilla 2362: 'invariantのmutableなエイリアス' に関する説明が混乱を招く
- Bugzilla 2363: 配列前置形式で関数を呼び出したときに余計な () が必要になる
- Bugzilla 2366: constメンバ関数の文法が抜けている
- Bugzilla 2368: 関数を別の関数のアドレスで呼び出し、返値を呼び出すコードがrejectされる
- Bugzilla 2373: freebsd の select は 999,999 より大きい値をうけつけない
- Bugzilla 2376: charの配列リテラルの配列リテラルで CTFE が失敗
- Bugzilla 2380: static構造体初期化子が非static変数の初期化にも使えることがドキュメント化されていない
- Bugzilla 2383: デフォルト引数が、呼び出し側からは見えないprivateグローバル変数に暗黙にアクセスできることがドキュメントにない
- Bugzilla 2385: 仕様ではLinuxでは全ての構造体返値は隠れポインタで返されることになっているが、実際はレジスタが使われる
- Bugzilla 2390: intからcharへの変換で警告がでない
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

フォーラム
コメント
English
ダウンロード
トップ