変更ログ 2.065.0
Download D 2.065.0
2014年2月24日リリース
言語の変更
- Goto ジャンプで変数宣言をスキップできなくなった。
- すべてのインスタンス化された関数がその属性を推測するようになった。
- 新しい型修飾子inout const を追加した。
- 組み込みタプルのスライス操作が受け入れられるようになった。
- パッケージ名とモジュール名に型がなくなった。
- 初期化子を持つ Const フィールドと不変のフィールドは非推奨となった。
- 順序なしの浮動小数点比較は非推奨となった。
- 浮動小数点型の.min プロパティを非推奨とした。
- CTFE はオーバーラップした共用体フィールドを扱えるようになった。
- 新しい trait getAliasThis を追加した。
- 構造体コンストラクタと静的 opCall の混在が許されなくなった。
ライブラリの変更
D 2.065におけるすべてのバグ修正と機能強化のリスト。
コンパイラの変更
- runスイッチを使用すると、拡張子のないDソース・ファイル名を実行できるようになった:
Posixシステムでは、拡張子なしファイルの先頭にshebang行があると便利なことが多い、 Posixシステムでは、スクリプトのコンパイルに使用したツールを示すshebang行を拡張子なしファイルの先頭に置くと便利なことがよくある。このテクニックをDでも使えるようになった。 以下は、"my-script" というファイル名のDソース・ファイルである:
#!rdmd void main() { }
注釈:Dソースファイルは適切なD識別子である必要があるため、任意の拡張子を使用することはできない。
注釈:Windowsには拡張子のない実行ファイルがないため、この機能はWindowsでは利用できない。
注釈:コンパイル時に、デフォルトの動作である を生成するデフォルトの動作を避けるためである。 を生成するデフォルトの動作を避けるため、コンパイラーは代わりに"a.out"を生成する。
言語の変更
- Gotoジャンプは変数宣言をスキップできないようになった:
非常に長い間、以下のコードは誤って許可されていたが、現在は禁止されている:
import std.stdio; void main() { goto Label; // エラー: gotoは変数vの宣言をスキップする int v = 42; Label: writeln(v); }
- すべてのインスタンス化された関数は、その属性を推論するようになった:
関数がどのように直接、間接的にインスタンス化されたかに関係なく、その属性は推論される:
struct S(T) { T square(T x) { T calc() { return x * x; } return calc(); } static double pi() { return 3.141592; } } void main() pure @safe nothrow { S!int s; // S!int.squareとその入れ子関数calcはインスタンス化された関数であるため、 // それらの属性は純粋でmain()から呼び出し可能であると推測される。 assert(s.square(2) == 4); // OK // staticメンバ関数の属性も推論されるようになった auto pi = typeof(s).pi(); }
- 新しい型修飾子inout const を追加する:
これまでは、immutable(T) とinout(T) の共通型は次のようになっていた。 const(T).しかし、これではinout の情報が失われ、有効なコードが拒否される可能性がある。 現在では、型はinout(const(T)) となり、適切な型修飾子を意味を持って伝播する。
inout(const(int))[] foo(bool condition, inout(int)[] x, immutable(int)[] y) { static assert(is(typeof(condition ? x : y) == inout(const(int))[])); return condition ? x : y; } void main() { int[] marr = [1,2,3]; const(int)[] carr = [4,5,6]; immutable(int)[] iarr = [7,8,9]; // inout(const(int))[]は、const(int)[]またはimmutable(int)[]に戻ることができる。 static assert(is(typeof(foo(true, marr, iarr)) == const(int)[])); static assert(is(typeof(foo(true, carr, iarr)) == const(int)[])); static assert(is(typeof(foo(true, iarr, iarr)) == immutable(int)[])); }
- ビルトイン・タプルのスライス操作全体が受け入れられるようになった:
Bugzilla 8244型が有効な場所では'[]'でタプルをスライスすることはできない:
import std.typetuple; alias Types = TypeTuple!(int, double, string); // 2.064ではエラーだったが、2.065からは許されるようになった。 alias Types2 = Types[]; static assert(is(Types == Types2));
- パッケージ名とモジュール名に型がなくなった:
Bugzilla 9081:モジュールは型を持つべきではない。
import std.stdio; // 2.064ではどちらも'void'と表示されていた。 // 2.065からはどちらも"has no type"エラーになる。 pragma(msg, typeof(std)); pragma(msg, typeof(std.stdio));
変化することによって、かつて使われていた慣用句が機能するようになった。 is(typeof(package_or_module_name)) が使えないように変更された。代わりに次のように使う:__traits(compiles, package_or_module_name).
- 初期化子を持つconstフィールドと不変のフィールドは非推奨となった:
最終的には、オブジェクトのスペースを占有するために変更されるだろう。そのようなフィールドはenumかstaticに変更すべきである。 2.063のリリースノートも参照のこと。
これに関連して、voidで初期化されたconstフィールドや不変のフィールドが、予定よりも早くオブジェクト・インスタンス内のスペースを占めるようになった。 は、オブジェクト・インスタンス内のスペースを予定より早く占有するようになる:
struct S { const int[1000] x = void; this(int n) { // 2.064では許可されていなかった。 // 2.065からxはランタイム・オブジェクトのフィールドになった。 x[] = n; } } // 2.064では、S.sizeofは1であった。 // 2.065から、フィールドs.xはオブジェクトのスペースを占める。 static assert(S.sizeof == int.sizeof * 1000); void main() { S s = S(3); foreach (e; s.x) { assert(e == 3); // OK } }
- 順不同の浮動小数点比較は廃止される:
Bugzilla 10369:非順序浮動小数点比較の廃止
- 浮動小数点型の.min プロパティを廃止する:
Bugzilla 10439:float.min, double.min, real.min を非推奨とする。
- CTFEはオーバーラップした共用体フィールドを扱うことができる:
コード例:
union U { size_t x; int* y; } bool test() { U u; assert(u.x == 0); // ここで、u.yを読むとCTFEエラーになる。 u.y = [1,2,3].ptr; // オーバーラップしたフィールドu.yに値を書き込むと、対応するフィールドu.xが無効になる。 assert(u.y[0..3] == [1,2,3]); // u.yは有効なフィールドを保持しており、読み出しは許可されている // ここで、u.xを読むとCTFEエラーになる。 u.x = 10; // u.xに値を設定し直す。 assert(u.x == 10); // OK // ここでu.yを読むとCTFEエラーになる。 return true; } static assert(test()); // CTFEを実行する
CTFE中、オーバーラップした2つの共用体フィールドを用いたビットイメージの再解釈は許されない。
- 新しいトレイトgetAliasThisを追加する:
新しいgetAliasThis 特性は、集約型のサブタイプとしてマークされたフィールド名のタプルを返す。 フィールド名のタプルを返す。 例:
struct S { string var; alias var this; } static assert(__traits(getAliasThis, S)[0] == "var");
注釈:Dでは多重部分型はまだ実装されていないため、このトレイトは常に長さ1のタプルを返す。 長さ1のタプルを返す。
- structコンストラクタとstatic opCallを混在させることはできなくなった:
これは正しく実装されておらず、曖昧さの原因となっていた。
例: 構造体コンストラクタとstatic opCallを混在させることはできなくなった:
struct S { this(int i) {} static S opCall() // コンストラクタにより許可されない { return S.init; } }
注釈:static opCall を使って、引数のない構造体コンストラクタをシミュレートすることができる。 コンストラクタを引数なしでシミュレートするために使うこともできるが、これは推奨されない。 推奨されない。その代わりに、構造体インスタンスを生成するファクトリー関数 関数を使うことである。
ライブラリの変更
- std.algorithmの多くの関数が、他の関数への述語として使用できるようになった:
次のような関数がある。 any, all, canFind そして equalなどの関数がテンプレートになった。 他のテンプレートへの述語として使用することができ、また、ユーザーがそのようなテンプレートのインスタンス化のエイリアスを作成することもできる。 ユーザー・コードでどのように構文を変化させることができるかの例として、次の例を挙げよう。 プログラマーは、文字列配列のすべての文字列が少なくとも1つのASCII桁を持つかどうかをチェックしたい:
import std.algorithm : all; import std.ascii : isDigit; void main() { string[] inputs = ["foo1", "bar2"]; bool allContainDigit; foreach (input; inputs) { if (!any!isDigit(input)) // どの文字もASCII数字ではない { allContainDigit = false; break; } } }
しかし、any テンプレートそのものを述語として使う方が単純になった。 別の便利なテンプレート、all テンプレートの述語にすることができる:
import std.algorithm : any, all; import std.ascii : isDigit; void main() { string[] inputs = ["foo1", "bar2"]; bool allContainDigit = all!(any!isDigit)(inputs); }
これらの関数が述語になることに加えて、エイリアスもできるようになった、 これにより、関数をより理解しやすくすることができる:
import std.algorithm : any, all; import std.ascii : isDigit; void main() { alias isAnyDigit = any!isDigit; // 視覚的ノイズが少なく、自己記述関数である string[] inputs = ["foo1", "bar2"]; bool allContainDigit = all!isAnyDigit(inputs); // 理解しやすくなる alias doAllContainDigits = all!isAnyDigit; // または、アルゴリズム全体を1つのシンボルにまとめる! assert( doAllContainDigits(["1", "a 1", "b 2"])); // 自己記述コード assert(!doAllContainDigits(["c", "a 1", "b 2"])); }
もちろん、all とany 、さまざまな組み合わせが可能だ。例: を逆にして、代わりに文字列配列中の文字列のどれかがすべての数字を含むかどうかをチェックしたい場合、コードは次のようになる。 の文字列がすべての数字を含むかどうかをチェックしたい場合、コードは次のようになる:
import std.algorithm : any, all; import std.ascii : isDigit; void main() { alias areAllDigits = all!isDigit; alias areAnyIntegrals = any!areAllDigits; assert( areAnyIntegrals(["123", "456"])); assert( areAnyIntegrals(["abc", "123"])); // "123"は数字である assert(!areAnyIntegrals(["abc", "def123"])); // "def123"は実際には数字ではない }
一方、文字列配列のすべての文字列がすべての数字を含むようにしたい場合は、次のようになる。 を含むようにしたい場合は、次のようになる:
import std.algorithm : any, all; import std.ascii : isDigit; void main() { alias areAllDigits = all!isDigit; alias allStringsDigits = all!areAllDigits; assert( allStringsDigits(["123", "456"])); assert(!allStringsDigits(["abc", "123"])); // "123"は数字だが、"abc"は数字ではない }
- std.algorithm.allを述語なしで使えるようにする。
に暗黙的に変換される範囲内の全ての項目にマッチさせたい場合、述語を渡す必要がなくなる。 true に暗黙的に変換する:
import std.algorithm; void main() { auto arr1 = [true, true, true]; assert( all(arr1)); // すべての値が真である auto arr2 = [false, true, true]; assert(!all(arr2)); // すべての値は真ではない auto arr3 = [1, 2, 3]; assert( all(arr3)); // すべての値が真に変換される auto arr4 = [0, 2, 3]; assert(!all(arr4)); // すべての値は真に変換されない }
- std.uni.byGraphemeとstd.uni.byCodePointを追加した。
補完的な高次の範囲で、graphemesに対する範囲操作を可能にする:
import std.array : array; import std.range : retro; import std.string : text; import std.uni : byCodePoint, byGrapheme; void main() { string s = "noe\u0308l"; // noël // 逆にし、結果をUTF-8に戻す string reverse = s.byGrapheme() .array() // 注釈: byGraphemeは将来双方向性をサポートする予定である .retro() .byCodePoint() .text(); assert(reverse == "le\u0308on"); // lëon }
注釈:byGrapheme は将来双方向性をサポートする予定である、 上記の例では、array の必要性がなくなる。 - std.range.onlyに任意の数の引数のサポートを追加する。
onlyを複数の引数で使えるようにした:
import std.algorithm : joiner; import std.range : equal, only; void main() { assert(only("one", "two", "three").joiner(" ").equal("one two three")); }
さらに、only() 、空のレンジを手に入れることができるようになった。
リンカーの変更
- Win32 Optlink リンカに /LARGEADDRESSAWARE を追加した。
win32でデフォルトのOptlinkリンカーを使用する場合(32ビット・オブジェクト・ファイルと実行可能ファイルをリンクする場合)、 /LARGEADDRESSAWARE オプションは、アプリケーションが2ギガバイト以上のアドレスを扱えることをリンカに知らせる。 これは Visual C のこれはVisual Cの の同名のリンカー・オプションと同等である。 これはオペレーティング・システムの機能であり、実行ファイルに特定のフラグを設定することで有効になる。
D 2.065のすべてのバグ修正と機能強化のリスト:
DMDコンパイラのリグレッション
- Bugzilla 7782: [ICE] 誤ったインポート構文がある。
- Bugzilla 9107: uintとbyteによる値域解析
- Bugzilla 9639: テンプレート・インスタンスの再帰的セグメンテーションのセグメンテーション・フォールト dmd
- Bugzilla 11078: プロパティ・グループのプロパティ・アサインにおける間違ったRHSの診断が改善されるべきである。
- Bugzilla 11321: D6object15__T7reserveTyaZ7reserveFNaNbNeKAyamZmをリンクできない。
- Bugzilla 11441: DMDがsemantic3でコンパイルを停止する
- Bugzilla 11447: クロージャが偽の値を提供する
- Bugzilla 11472: REGRESSION(2.064): dmd が間違ったコードでエラーを出す代わりにセグメンテーションエラーになる。
- Bugzilla 11487: ネストされたテンプレート内の writefln で dmd がセグメンテーションエラーになる。
- Bugzilla 11504: [CTFE] JSONValue が CTFE で作成できない。
- Bugzilla 11505: 不正なエラーメッセージ:opAssign [...] is annotated with "@disable" "...] is annotated with "@disable""
- Bugzilla 11508: [REG 2.064] x86_64のchar比較で-Oを使ったコードが間違っている
- Bugzilla 11513: [REG 2.064] module.cのアサーション
- Bugzilla 11525: REG(2.065):エラー: 'a[] *= a[]' 各要素はスカラーではなく、Complex!doubleである。
- Bugzilla 11553: 再帰テンプレートでdmdのセグメンテーションエラーが発生する
- Bugzilla 11554: is(T == enum); Tがメンバなしで定義された列挙型だとエラーになる
- Bugzilla 11563: モジュールの依存関係サイクルにより、無関係なテンプレートのインスタンスが失敗する
- Bugzilla 11566: 無効な配列opを持つICE
- Bugzilla 11596: 内部エラー: backend/cgcs.c 351
- Bugzilla 11610: FreeBSD ではコンパイラーコアがダンプし、Linux では永遠にコンパイルされる。
- Bugzilla 11614: エラー: _expand_field_0 の this は Foo 型ではなく Tuple 型である必要がある。
- Bugzilla 11626: [ICE] (mtype.c line 9718) ref型に欠落がある。
- Bugzilla 11659: 変数の初期化をスキップするエラー (列挙型の初期化をスキップする)
- Bugzilla 11718: [REG2.065a] ネストされたテンプレート構造体の意図しない名前の衝突
- Bugzilla 11723: 整数のオーバーフローエラーが多すぎる
- Bugzilla 11730: Nullable!SysTime値の連想配列:Nullable!SysTimeの値でget 。
- Bugzilla 11751: [REG2.065a] 16進数の浮動小数点は10進数であるべきである。
- Bugzilla 11755: 演算子 <>= と !<>= を配列に使用すると、e2ir で内部エラーが発生する
- Bugzilla 11767: "意味解析に失敗した" 二重混合構造体
- Bugzilla 11776: [ICE] アサーション失敗: 'tf->next == NULL' (ファイル 'mangle.c' の119行目)
- Bugzilla 11777: [ICE] dmd のメモリ破壊Scope::pop free sfieldinit でも使用されている。enclosing
- Bugzilla 11805: Boolの削除は式の評価を決定的に壊している。
- Bugzilla 11818: 三項演算子を値パラメータに指定できなくなった。
- Bugzilla 11822: -de スイッチはauto リターンや他のものでICEを引き起こす
- Bugzilla 11824: CTFE Phobosコードにおけるスタック変数のエスケープ問題
- Bugzilla 11844: ICE(template.c:6643) Assertion failed: (td->semanticRun != PASSinit).
- Bugzilla 11849: 再帰列挙型がセグメンテーションフォールトを引き起こす
- Bugzilla 11850: [ICE] 符号付き-符号なし配列比較のフィルタに関する問題
- Bugzilla 11852: GithubのHEADでRDMDが壊れた。
- Bugzilla 11854: Git-headがVisual Studioでビルドされない
- Bugzilla 11863: std.conv.to!string(int/uint, radix)が不正な文字列を返す
- Bugzilla 11868: TemplateTupleParameterとしてinout const 引数を渡す際のICE(template.c)
- Bugzilla 11896: [REG2.066a] isVirtualMethod関連のGithub HEADのリグレッション(2.064では動作する)
- Bugzilla 11914: cartesianProductのforeachにおけるタプルのアンパッキングのミス
- Bugzilla 11919: getAttributesのGithub HEADリグレッション (DMD CORE DUMP)
- Bugzilla 11922: [REG2.065a] テンプレートの自動メソッドで存在しない識別子をICEする
- Bugzilla 11924: inout 可変長のテンプレートパラメータ
- Bugzilla 11925: [2.065] [REGRESSION] CompoundStatement::semantic におけるICE
- Bugzilla 11930: Github regression -- is(T unused: U)のマッチングでエイリアスが考慮されない。
- Bugzilla 11931: dmd HEADで-g指定時にリンカーが"Symbol Undefined"を繰り返す
- Bugzilla 11941: CTFEで集約メンバ配列に追加する際にエラーが発生する
- Bugzilla 11956: dmdが/etc/dmd.confをルックアップしない。
- Bugzilla 11963: リグレッション(2.065) ICE(parse.c) パーサがクラッシュした。
- Bugzilla 11965: リグレッション(2.064) ガベージでセグメンテーションフォールトが発生する。
- Bugzilla 11966: リグレッション2.065.b1: inout(const(char))[] が inout(char)[] に変換されない。
- Bugzilla 11967: リグレッション(2.065) ICE(parse.c) パーサのクラッシュ
- Bugzilla 11980: startaddress プラグマが壊れている (DMD 2.061 リグレッション)
- Bugzilla 11993: [メンバ関数テンプレートの制約のtypeof(this)はメソッド修飾子を反映すべきである。
- Bugzilla 12002: 内部エラー: toir.c 181
- Bugzilla 12008: 内部エラー:toir.c 181 : エイリアスthisと「前方参照を解決できない」エラー
- Bugzilla 12010: [REG DMD2.065-b1] デバッグシンボルでリンクされた静的ライブラリのテンプレートシンボルが未定義である。
- Bugzilla 12016: CTFEで暗黙の不変アップキャストがNULLになる
- Bugzilla 12017: DDocは大部分のドキュメントを残している
- Bugzilla 12023: リグレッション2.065-b2: テンプレートクラス内で "テンプレートミックスイン"が失敗する。
- Bugzilla 12037: std.numeric.CustomFloatとのリンク失敗
- Bugzilla 12044: 無効なコード生成でセグメンテーションエラーが発生する
- Bugzilla 12047: リグレッション(2.065 git-head):UDA がチェックされない
- Bugzilla 12070: バリアント opCall が静的でない
- Bugzilla 12079: 内部エラー: backend/cod4.c 358 の連想配列アクセス。
- Bugzilla 12080: 内部エラー: backend/symbol.c 1035 for invariant
- Bugzilla 12089: std.utf.validateとinout(char[])のコンパイルに失敗した。
- Bugzilla 12144: [REG DMD2.064] 動的配列コンストラクタから参照されるxopEqualsが未解決である。
- Bugzilla 12158: 存在しない選択インポートの.initでICEが発生する
- Bugzilla 12160: UDA関連の不具合
DMDコンパイラのバグ
- Bugzilla 235: ゴトーとスコープ:異なるトライ・ブロック・レベルにゴトー・フォワードできない。
- Bugzilla 275: フォワードミックスインを持つテンプレートのインスタンスにおける未定義の識別子
- Bugzilla 602: コンパイラーはgoto文が頭文字をスキップすることを許可する。
- Bugzilla 899: 構造体フィールドの.offsetofプロパティがスコープ内でアクセスできない。
- Bugzilla 900: インポート順序を変更すると型が不一致になる。
- Bugzilla 918: D1のみ):テンプレートの順序の問題、typedefでバージョン・ブロックが何かを変更すること、そして別のテンプレートのバグ。
- Bugzilla 1687: C++とのインターフェイス "と "vtbl"。
- Bugzilla 1748: テンプレート化されたクラスの文字列ofが正しくない
- Bugzilla 2481: クラス内の匿名構造体にフィールドを混ぜると、vtableに重なるフィールドが生成される。
- Bugzilla 2806: 列挙型メンバは前方参照できない。
- Bugzilla 2885: ReturnTypeを使った無言の前方参照バグ
- Bugzilla 3013: 型の関数を呼び出すとエラーメッセージが重複する。
- Bugzilla 3107: [meta] プロパティ構文
- Bugzilla 3226: -fPICフラグが機能しないようだ。
- Bugzilla 3279: (D1のみ) 型比較時のエラーメッセージが混乱する
- Bugzilla 3307: テンプレートエイリアスのデフォルトパラメータが正しく解決されない
- Bugzilla 3753: ICE(eh.c): 例外処理とアロカに関連する。
- Bugzilla 3817: 配列op: 誤ったエラーメッセージ
- Bugzilla 3834: テンプレート化されたクラスでの前方参照
- Bugzilla 3903: トレイトが間違った構文で配列和を真としてコンパイルする
- Bugzilla 3970: キャストの問題 -1.0L ==> uint/ulong
- Bugzilla 3991: 共用体内のVoidイニシャライザーが重複しているとみなされる。
- Bugzilla 4145: クロスエイリアス名前空間を解決できない
- Bugzilla 4162: エイリアスによるオフセットの問題
- Bugzilla 4983: [ICE] 構造体メンバをそのメソッドのアドレスで初期化する際にスタックオーバーフローが発生する
- Bugzilla 5569: 64ビットDwarfシンボリックデバッグ情報がgdbで認識されない
- Bugzilla 5878: is()式を使ってテンプレートからスーパークラスを返す際の前方参照(std.trait.BaseTypeTupleが壊れる) : -fPIC is broken on the template.
- Bugzilla 6010: freebsd/64で-fPICが壊れている
- Bugzilla 6382: 静的foreachのエッジケース
- Bugzilla 6439: [CTFE]共用体フィールドは独立に初期化される。
- Bugzilla 6764: 非IntegerLiteral長を持つ静的配列上のタイプセーフ可変引数関数でIFTIが失敗する。
- Bugzilla 6796: 間違った列挙型の定義でいくつかの__エラーが発生する。
- Bugzilla 7077: (D1のみ) "ミックスイン(mixin)"ステートメントが囲むスコープに侵入する可能性がある。
- Bugzilla 7175: 長さ0の静的配列.ptrは常にNULLになる
- Bugzilla 7472: セマンティック中にクラスから基本型へのキャストが拒否されない。
- Bugzilla 7645: ICE(e2ir.c)の入れ子クラス
- Bugzilla 7744: 文字列ミックスインにおける前方参照
- Bugzilla 7966: with 内で最初にテンプレートをインスタンス化するとError 42: Symbol Undefined
- Bugzilla 8019: D1のみ)[]をint[]に変換できない。
- Bugzilla 8117: デフォルトコンストラクタなしで構造体メンバを初期化できない。
- Bugzilla 8179: ICE(e2ir.c)で固定サイズ配列のキャストに失敗した。
- Bugzilla 8200: DMDのセグメンテーションエラー: マップのテンプレートエイリアスの結果
- Bugzilla 8244: 型が有効な場所で'[]'を含む型タプルをスライスできない
- Bugzilla 8255: [CTFE] 'ref' リテラルを渡したときのICE
- Bugzilla 8313: 再帰的なifti評価でスタック・オーバーフローが発生する
- Bugzilla 8365: 列挙型の静的固定サイズ配列の初期化に失敗する
- Bugzilla 8396: 関数引数のタプル展開の評価順序が正しくない。
- Bugzilla 8492: static assertで "型"を推測できない。
- Bugzilla 8511: 前方参照列挙型でセグメンテーションエラーが発生する。
- Bugzilla 8525: オプティマイザが無限ループする
- Bugzilla 8543: SIMDリテラルのCTFEサポートを改善する必要がある。
- Bugzilla 8581: 内部エラー: backend/cod1.c 1677 on structs with bitfields (releaseまたはoptimizeパラメータでコンパイルした場合)
- Bugzilla 8648: 不完全なテンプレートでエラー行番号がない
- Bugzilla 8658: b値に大きな構造体を渡すとスタックが破壊される。
- Bugzilla 8664: コンパイラーが再帰的型定義とオプション-gでスタック・オーバーフローを引き起こす
- Bugzilla 8711: 配列による関数ポインタの初期化でICEが発生する。
- Bugzilla 8722: foreachが0次元の多次元配列で浮動小数点例外を引き起こす
- Bugzilla 8735: ICE:アサーションの失敗:ファイル'aliasthis.c'の100行目の't'
- Bugzilla 8739: DDocがデリゲート・パラメータ・リストに誤ったパラメータ名を出力する
- Bugzilla 8825: エラーメッセージの行番号が正しくない
- Bugzilla 8903: 列挙型配列メンバのコードが間違っている。
- Bugzilla 8997: 他のモジュールで使用される可能性のあるシンボルがテンプレート・インスタンスで省略されている
- Bugzilla 9008: 別の前方参照バグ
- Bugzilla 9050: テンプレート構造体のインスタンス化が早すぎる。
- Bugzilla 9081: モジュールは "型"を持つべきではない。
- Bugzilla 9212: 不変キーを持つ連想配列foreachの繰り返し
- Bugzilla 9256: メンバー・アクセス時の純度に関するエラー・メッセージ
- Bugzilla 9271: 型推論を伴うラムダ述語の転送がセグメンテーションフォールトを引き起こす
- Bugzilla 9296: LinuxではLITTLE_ENDIANとBIG_ENDIANが常に定義されている。
- Bugzilla 9301: XMM.PSHUFDを使用するとコンパイラー内部エラーが発生する。
- Bugzilla 9356: -inlineでinoutとappendを使用すると間違ったコードが生成される
- Bugzilla 9459: フロントエンドが無効な配列操作を検出しない
- Bugzilla 9466: ファイルサイズが大きい場合のコード・カバレッジ生成でコンパイラがクラッシュする。
- Bugzilla 9504: typeof がテンプレート引数でプロパティを正しく検索しない。
- Bugzilla 9562: 組み込みのランタイム・プロパティは"@property"でエラーになる。Type.prop
- Bugzilla 9572: 間違った暗黙の積分変換を見逃す
- Bugzilla 9577: 関数リテラルの静的配列でクラッシュする。
- Bugzilla 9644: スペル・チェッカーが1-2文字の記号に対しておかしな候補を出す
- Bugzilla 9662: RDMDテスト・スイートの実装
- Bugzilla 9690: 無効化されたシンボルの内部関数から無効化されたシンボルにアクセスできない。
- Bugzilla 9741: ユーザー定義属性を持つ未定義識別子
- Bugzilla 9765: 構造体リテラルdotvar式で__errorのエラーメッセージが表示される。
- Bugzilla 9807: このエイリアスではwith文は機能しない。
- Bugzilla 9831: ラムダ推論失敗によるエラーメッセージ
- Bugzilla 9861: テンプレートのインスタンス化に失敗し、偽の「型として使用される」エラーが発生した。
- Bugzilla 9912: 複数のメソッドでメンバ変数にタプルを使用した場合の誤ったコード生成
- Bugzilla 10207: エイリアスと@属性:アサーションの失敗: '!udas'(ファイル'parse.c'の3132行目
- Bugzilla 10224: core.simd ICE cgcv.c 2162行 -gでコンパイルした場合
- Bugzilla 10251: CTFE: 既知の値のグローバル静的変数へのポインタを返すことを許可する。
- Bugzilla 10259: コンパイル時の無効なクラス・インスタンス化に関する ICE
- Bugzilla 10312: simd vector 型の CTFE でコンパイラがアサート失敗する。
- Bugzilla 10313: inoutコンストラクタ+IFTI+間接引数が機能しない
- Bugzilla 10329: 間接テンプレート化されたメソッドの属性が推測されない
- Bugzilla 10391: Mac OS 10.8でのコンパイルでセグメンテーションエラーが発生する。
- Bugzilla 10459: Win64でalign(16)が分割コンパイルで動作しない。
- Bugzilla 10483: ICE(expression.c) .init of struct with block initialized 2D static array : ICE(expression.c) .init of struct with block initialized 2D static array : ICE(expression.c) .init of struct with block initialized 2D static array
- Bugzilla 10598: AssertFail: 'global.errors' line 6040 'template.c' - インポートされていない型を使用している。
- Bugzilla 10632: [ICE](glue.c 1227行目) インラインとタプルを使用する
- Bugzilla 10635: エラー: S の初期化に配列を使用できない
- Bugzilla 10643: void で初期化された const 配列構造体フィールドは拒否された。
- Bugzilla 10747: Win64: 存在しない vc100.pdb に関する警告
- Bugzilla 10770: is(T BASE==enum) with tag enum T - AssertFail:'列挙型' line 428 declaration.c
- Bugzilla 10805: 間違った区切り文字列に対する間違ったエラーメッセージ
- Bugzilla 10883: [ICE] 内部エラー: ../ztc/cod4.c 358 -inline付きコンパイル時
- Bugzilla 10905: [ICE](ctfeexpr.c 355行目) structsにulong2が含まれている。
- Bugzilla 10922: を使用すると、コンパイラがセグメンテーション・フォールトを起こす。
- Bugzilla 10926: 三項演算子をl値として使用すると誤った式が出力される
- Bugzilla 10927: 複素数のべき乗が内部エラーを引き起こす
- Bugzilla 10938: opDispatch の再帰的インスタンス化の ICE
- Bugzilla 11019: C++では合法、DではCTエラー(定義中の前方参照を解決できない)。
- Bugzilla 11034: ICE:Assertion failed: (!scope), function toObjFile, file toobj.c, line 366.
- Bugzilla 11155: 生成された SIMD コードが正しくない(整列されていない movap)
- Bugzilla 11193: [ICE] 文字列テンプレート引数と "可変長テンプレート引数"が混在している。
- Bugzilla 11198: main()やその他の関数内で "version"を宣言した場合のエラーメッセージが不明瞭である。
- Bugzilla 11215: inout が解決時にshared を囲むのを失う
- Bugzilla 11224: インライン化でNRVOが止まる
- Bugzilla 11247: エラー: typeof(i).sizeofが型として使われている。
- Bugzilla 11286: 不純なdtorは実際には呼び出されないが、"純粋でない関数を呼び出せない"エラーになる。
- Bugzilla 11288: (static)opDispatchへの代入時にdmd assertionが発生する。
- Bugzilla 11297: [ICE](glue.c行868)のグローバル列挙型ラムダで文字列を連結している。
- Bugzilla 11314: タプル代入とif/elseを繰り返すインラインice
- Bugzilla 11317: glue.c:1218: virtual unsigned int Type::totym():アサーション0 に失敗した。
- Bugzilla 11322: ICE with -inline cgcs.c 221.
- Bugzilla 11332: ICE(dt.c)で未実装の組み込み関数を解釈するときにエラーが発生する
- Bugzilla 11371: core.simd と ctfe
- Bugzilla 11375: [profile+nothrow] -profile スイッチによる意味的な "nothrow"エラー
- Bugzilla 11376: (compiles,...)で無効なarray-opを使用した__traits(compiles,...)のICE
- Bugzilla 11383: 安全なコードで一部の配列キャストが正しく拒否される
- Bugzilla 11385: XXXはネストされた関数であり、XXXからアクセスすることはできない。
- Bugzilla 11394: NRVOはコンストラクタ内のオブジェクト・フィールドの初期化で機能するはずである。
- Bugzilla 11406: ld.goldはスイッチ・テーブルのジャンプを壊す
- Bugzilla 11425: シャドーイング変数の診断が壊れた
- Bugzilla 11427: 無名共用体が"@safe"コードで構造体を壊す
- Bugzilla 11445: double[string] を追加するとクラッシュする
- Bugzilla 11479: テンプレートのメンバがddocのprivate属性を無視する
- Bugzilla 11484: [e2ir] 静的配列へのキャストと静的配列からのキャストの際にe2irでエラーが発生する
- Bugzilla 11485: [e2ir] e2irでnumeric/boolからクラス/インターフェイスへのキャストでエラーが発生する。
- Bugzilla 11489: immutable への暗黙のキャストが不適切である。
- Bugzilla 11497: static if"/"assert"のラムダが関数のインライン化を妨げる。
- Bugzilla 11518: 複数のテンプレートマッチでDMDのセグメンテーションフォールトが発生する。
- Bugzilla 11534: [CTFE] inout + メンバー配列へのポインターを返す
- Bugzilla 11540: [ICE] try-catch-finallyとgotoでCTFEセグメンテーション・エラーが発生した。
- Bugzilla 11552: セマンティック中にラベルの欠落が検出されない
- Bugzilla 11562: セマンティック中にfinallyブロックへのgotoやfinallyブロックからのgotoが捕捉されない
- Bugzilla 11565: [オプティマイザ] ?: 式のレジスタの上位32ビットをゼロにする。
- Bugzilla 11587: コンパイル時にAAを比較できない
- Bugzilla 11618: コンパイラー内部エラー
- Bugzilla 11627: [CTFE] コンパイル時にAA代入でdcharをcharにキャストできない。
- Bugzilla 11629: AA.rehashで[CTFE]がクラッシュする
- Bugzilla 11635: RDMDが-opフラグを食べてしまう。
- Bugzilla 11653: 範囲ケースでブレークを忘れてもエラーにならない。
- Bugzilla 11656: プロパティoffsetofが"__vector"フィールドで動作しない。
- Bugzilla 11661: 無意味なエラー:"構造体はvoid関数()の有効なイニシャライザーではない" : 意味のないエラー: "struct is not a valid initializer for a void function()"
- Bugzilla 11664: ローカル静的変数を持つ関数はCTFEでは使えない。
- Bugzilla 11689: 非推奨ローカル関数は動作しない。
- Bugzilla 11696: C++の不正な静的メンバのマングリング
- Bugzilla 11722: 修飾子のみのキャストは opCast を呼び出すべきではない。
- Bugzilla 11726: 未定義識別子と opDispatch の ufcs による ICE
- Bugzilla 11727: 前方参照列挙型を変数として使用するとエラーメッセージが繰り返される
- Bugzilla 11735: pragma(msg, ...) が"wstring", "dstring" の表示に失敗する。
- Bugzilla 11745: privateの場合、__traits(getUnittTraits)で取得したunittestsを呼び出すことができない。
- Bugzilla 11748: [ICE] テンプレートのエイリアスパラメータとしての関数呼び出しはICEを与える。
- Bugzilla 11749: スイッチケースのフォールスルーエラーは -w で有効になるが、警告を通知するようにはできない。
- Bugzilla 11750: デバッグ情報と空の#行を持つICE Filespec
- Bugzilla 11756: CTFE のエラーメッセージに無関係な変数名が表示される
- Bugzilla 11769: matches both "エラーメッセージの行番号が正しくない
- Bugzilla 11785: メソッド/関数宣言の順序がコンパイル結果に影響する。
- Bugzilla 11790: ICE(interpret.c):文字列型を持つ配列の作成をCTFEにサイズとして渡す。
- Bugzilla 11793: [ICE] 自前のクラス・メンバ・インスタンスを持つクラスという些細なプログラムでコンパイラがメモリ不足になる。
- Bugzilla 11800: このマッチングが誤ってl値性を変更する。
- Bugzilla 11802: win32でオーバーロード関数を持つextern(C++)クラスのvtbl順序が正しくない。
- Bugzilla 11813: IFTIエラー診断の改善
- Bugzilla 11814: IFTI失敗時に "doesn't match ... "という不要なエラーメッセージが表示される。
- Bugzilla 11843: テンプレートが2回インスタンス化された:意味解析に失敗した
- Bugzilla 11875: テンプレートの型推論が再帰的エイリアスで無限再帰を引き起こす場合、"static if"を使用する。
- Bugzilla 11926: 列挙型でconstを使ったときのセグメンテーションフォールト
- Bugzilla 11944: ICE(expression.c) Assertionf 失敗。
- Bugzilla 11968: ICE(expression.c) "__FILE__" を削除する際にクラッシュした。
- Bugzilla 11969: ICE(文.c) エラーを含む配列リテラルを混ぜるとクラッシュする。
- Bugzilla 11974: ICE(cast.c):無効な代入でセグメンテーションエラー
- Bugzilla 11982: ICE(func.c):本体がない関数リテラルを含む
- Bugzilla 12038: エイリアスのthisと&thisがICEを引き起こす
- Bugzilla 12040: 変数型の循環参照によるコンパイラのセグメンテーションエラー : ICE(func.c)
- Bugzilla 12051: x86-64 では、?: が char になってしまう。
- Bugzilla 12095: O -inlineによる誤ったコード
DMDコンパイラの機能強化
- Bugzilla 3597: パーサーとドキュメンテーションの文法のための単一のソースが必要だ。
- Bugzilla 5109: いくつかのアドバイス
- Bugzilla 5746: std.range.iotaを強く純粋にする。
- Bugzilla 6930: immutable(T)とinout(T)の結合型はinout(const(T))とすべきである。
- Bugzilla 9477: 文字列(と配列)の比較は不必要に非常に遅い。
- Bugzilla 10199: ラベルは文なしでは使えない。
- Bugzilla 11284: 追加 -allinst コンパイラー・スイッチ
- Bugzilla 11365: run使用時にDソースファイル名に拡張子なし(または任意の拡張子)を許可する。
- Bugzilla 11417: オプティマイザが認識しない即時回転を指定する。
- Bugzilla 11510: 安全なコード中/CTFE中のオーバーラップしたポインタフィールドアクセスの制限を緩和した。
- Bugzilla 11533: コンパイラは静的ローカルテンプレート関数をネストできるようにすべきである。
- Bugzilla 11546: 文字列インポートの依存性の不具合。
- Bugzilla 11711: traits(getAliasThis)を追加する。
- Bugzilla 11759: リテラル接尾辞に小文字のLを使おうとしたときのエラーメッセージが悪い。
- Bugzilla 11840: 行内で未定義の識別子が使われた場合のエラーをすべて表示する
phobosのリグレッション
- Bugzilla 1832: アーカイブの読み書きでデータが失われる。
- Bugzilla 11309: std.concurrency:OwnerTerminatedメッセージが機能しない
- Bugzilla 11512: win32のmakefileでPhobosドキュメントをビルドできない。
- Bugzilla 11527: JSONValueは名前付きフィールドを通して値を設定できない
- Bugzilla 11528: appender: -inline -Oでクラッシュする
- Bugzilla 11576: std.algorithm.remove!(SwapStrategy.unstable)が配列の境界をオーバーランする。
- Bugzilla 11583: bigint のバグ
- Bugzilla 11591: std.typecons.Tuple -s with classesが連想配列のキーとして実行時に失敗する。
- Bugzilla 11603: std.algorithm.canFindが針が1バイトゼロの場合に動作しない
- Bugzilla 11671: ctRegexが壊れた
- Bugzilla 11684: バージョン2.22のld.bfdでSIGSEGVが発生する。
- Bugzilla 11692: std.zip.ArchiveMemberにファイル属性を設定できない。
- Bugzilla 11764: [REG2.065a]std.getoptが壊れた。
- Bugzilla 11831: std.zipでzipファイルのmadeVersionフィールドを設定できなくなった。
- Bugzilla 11838: std.range.zipのemplaceインポートがない?
- Bugzilla 11853: タプルが"isAssignable"に失敗する
- Bugzilla 11973: std/datetime.d(14647):Deprecation: 関数std.algorithm.canFind!(not).canFind!(immutable(dchar)[]).canFindは非推奨である。
- Bugzilla 12024: [REG DMD2.065-b2] swap(SysTime, SysTime)のテンプレートのインスタンス化に失敗した。
- Bugzilla 12071: Algebraicが構造体を返すデリゲートを受け取らない
- Bugzilla 12098: libcurlがnullハンドルで不正な引数を取る
- Bugzilla 12135: [AA] 明示的な区切り文字が空の場合、連想配列の値の後にある書式の末尾が区切り文字として扱われる
- Bugzilla 12168: [REG2.065a] 新しい要素を追加するために JSONValue ゲッターの array() と object() に ref を追加する
phobosのバグ
- Bugzilla 1804: 配列の繰り返し割り当てで深刻なGCリークが発生する
- Bugzilla 2162: スレッドがクロージャを実行する際のアクセス違反
- Bugzilla 4301: BigInt * const(BigInt)がうまく動作しない。
- Bugzilla 4673: std.stringのバグ(isNumeric)
- Bugzilla 4874: std.numeric.dotProductがbigintsで動作しない
- Bugzilla 5280: to!FP(Hex float string)がうまく動作しない。
- Bugzilla 5762: getopt: 短いオプションパラメータがバンドル有効時に正しく読み込まれない
- Bugzilla 5977: 空のセパレータで文字列を分割する
- Bugzilla 6730: std.algorithm.splitterがstd.array.splitterと競合する
- Bugzilla 7069: VariantがConstまたはImmutableコンテンツを扱わない
- Bugzilla 7689: UTF-8配列のsplitter()
- Bugzilla 8013: splitter()とsplit()で結果が異なる
- Bugzilla 8203: std.regex.match()を使用すると "not enough preallocated memory "エラーが発生する
- Bugzilla 8291: dirEntry がルートディレクトリを扱えない + 未処理の例外でクラッシュする
- Bugzilla 8298: dirEntries はホームディレクトリにある特別な linux ファイルを処理する
- Bugzilla 8877: std.encoding.transcodeが非常に遅い
- Bugzilla 9528: std.array.appenderがconstメンバを持つ要素を追加できない
- Bugzilla 9645: std.algorithm.splitterがcharをセパレータとする文字列に対して特定の状況で悪いパフォーマンスをする
- Bugzilla 9823: std.range.putでエレメントを受け入れない。
- Bugzilla 10569: std.trait.EnumMembers、isExplitter.Delegateで要素を受け付けない:EnumMembers、isExpressionTuple、isTypeTuple、Largestは大きな入力で失敗する。
- Bugzilla 10571: デリゲートと文字列のformattedWriteエラー
- Bugzilla 10710: 共有phobosライブラリがすべてのLinuxディストリビューションで動作しない。
- Bugzilla 10864: [REG 2.064][PERFORMANCE]新しいSafe appenderは"~="よりも遅い。
- Bugzilla 11005: std.xmlが属性をエンコードしない。
- Bugzilla 11110: Variant.converstsToがisImplicitlyConvertibleのように動作しない。
- Bugzilla 11112: 異なるスレッドでシェルコマンドを実行できない
- Bugzilla 11148: const(BigInt)やimmutable(BigInt)を暗黙的にBigIntに変換できない。
- Bugzilla 11180: WindowsのGUIプロセスからstd.process.spawnProcessを使ってプロセスを起動すると必ず失敗する
- Bugzilla 11403: std.algoの関数はpredとして使用できない
- Bugzilla 11459: std.container.Arrayのbool制約の曖昧さ
- Bugzilla 11568: Windowsでstd.stdio.rawWriteを-m64でコンパイルできない。
- Bugzilla 11600: to!BigInt(string) は数値以外の入力を受け付ける
- Bugzilla 11606: 表示不可能なタプルをインスタンス化できない
- Bugzilla 11617: std.uni.normalizeがコンパイルできない。
- Bugzilla 11652: std.complexで数値^ ^複素数演算をサポートする。
- Bugzilla 11681: std.datetime.IntervalRange.opAssignにref以外のパラメータを指定する必要がある
- Bugzilla 11691: pathSplitterをdirSeparatorで結合できない
- Bugzilla 11713: std.stringのmunch()はUTF文字列を正しく扱えない。
- Bugzilla 11738: partialShuffleは実際には入力全体をシャッフルする。
- Bugzilla 11771: charとのUnicode集合の交点が壊れている
- Bugzilla 11775: std.regexはassertモードで有効な反復範囲をチェックすべきである。
- Bugzilla 11780: 書式指定子が不完全な場合に書式でRangeErrorが発生する
- Bugzilla 11808: std.uni.CodepointSet('А', 'Я'+1, 'а', 'я'+1) はアサートする。
- Bugzilla 11839: std.regexのキャプチャグループ名には数字を含めるべきである
- Bugzilla 11879: std.net.curlにデフォルトのUser-Agentがない。
- Bugzilla 11884: std.container.Arrayに入力範囲からのコンストラクタがない
- Bugzilla 12069: ctRegexはR-Tより3倍遅い?
phobosの機能強化
- Bugzilla 3868: 範囲を使ってファイルを読み込む関数があるといいのだが。
- Bugzilla 4859: 別のFile.byChunk()
- Bugzilla 4909: std.algorithm.schwartzSort()に関する2つの提案。
- Bugzilla 5611: back()とfront()をref return + opSlice()でsort()制約にする。
- Bugzilla 6986: SortedRange[x..$]が未確認の__ドルで失敗する
- Bugzilla 8167: BigInt(BigInt(1))すぎる。
- Bugzilla 9061: BigInt | BigInt, BigInt & int
- Bugzilla 11770: std.regex.capturesはboolに変換可能であるべきだ
- Bugzilla 11789: getAttributesを補完するsetAttributesがない。
- Bugzilla 11798: std.algorithm.allで述語もない。
Druntimeのリグレッション
- Bugzilla 11478: OSX の共有ライブラリ: 2.062では動作していたが、2.063.2では失敗、2.064でも失敗している。
Druntimeのバグ
- Bugzilla 3454: GC.realloc()のフラグ設定に一貫性がない。
- Bugzilla 4809: 例外発生時のスタックトレースでthrow文の位置がずれる。
- Bugzilla 7508: 初期化時にfloat4の値が格納されない。
- Bugzilla 8301: 大きな配列が割り当てられたときのアクセス違反
- Bugzilla 10701: [GC] GCでのセグメンテーション違反
- Bugzilla 11806: マルチスレッド使用時のGC.collect()の契約内フリーズ
Optlinkのリグレッション
- Bugzilla 11559: 2048以上のモジュールが生成されるとOptlinkがクラッシュし、デバッグ情報が表示される
Optlinkのバグ
- Bugzilla 2837: OPTLINKとLARGEADDRESSAWARE
- Bugzilla 3956: リンカはモジュールの最初のシンボル以外のすべてのエクスポートされたシンボルからアンダースコアを削除する。
- Bugzilla 6673: マップファイルに16,384バイトごとに改行が含まれる。
- Bugzilla 7634: optlinkは多数のモジュールに対して不正なデバッグ情報を作成する。
インストーラのバグ
- Bugzilla 10246: Windows 版インストーラが ftp.digitalmars.com からダウンロードされる。
- Bugzilla 11799: create_dmd_release の引数の型に互換性がない。
インストーラの強化
- Bugzilla 10153: ベータリリースはすべて一意な名前を持つべきである
ウェブサイトの不具合
- Bugzilla 11449: phobosのジャンプリストの順番が間違っている
ウェブサイトのバグ
- Bugzilla 5388: SList.insertFrontの複雑さはO(log(n))である。
- Bugzilla 9734: setIntersection は2つの範囲しか受け付けないが、ドキュメントではそうなっている。
- Bugzilla 10205: '非推奨' '(' assignExpression ')' 文法はドキュメント化されていない
- Bugzilla 10206: ユーザー定義属性は言語仕様でうまく文書化されていない
- Bugzilla 10250: 文法は構造体宣言での不変化を許さない。
- Bugzilla 10514: コンストラクタ宣言の文法が間違っている
- Bugzilla 11398: 言語仕様が新しい同名テンプレート構文を許可していない
- Bugzilla 11579: git がないと dlang.org リポジトリをビルドできない。
- Bugzilla 11762: std.regex マクロが正しく表示/展開されない
ウェブサイトの拡張
- Bugzilla 11676: D WikiサイドバーにDLang.orgへ戻るためのリンクを追加した。
- Bugzilla 12087: Readmeをdlang.orgのリポジトリに追加し、貢献の仕方を説明する。
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
サイト全体のドキュメントのdmdのバージョン: 2.109.1
最新のdmdのバージョン: 2.111.0 ダウンロード
翻訳日付:
HTML生成日時:
編集者: dokutoku