英語版
このページの英語版を見る

変更ログ 2.062

前バージョン: - 次のバージョン:

Download D 2.062
2013年2月18日リリース

言語の変更

  1. typeof() を変更した:
  2. Bugzilla 6408を修正した結果、typeof() の使用法とインデックス付けに、ユーザーコードの変更が必要になる可能性がある:

    template ElementTypeOf(T)
    {
        alias typeof(T[0]) ElementTypeOf;
    }
    
    void main()
    {
        // バグにより2.061で動作していた
        static assert(is(ElementTypeOf!(int[]) == int));
    }
    

    typeof(T[0]) の式はT の要素型として誤って解釈されていたが、v2.062では長さ0の要素T の静的配列として解釈される。これを回避するには、標準ライブラリのtraitを使用するか、任意の式の型の.init プロパティを使用する:

    import std.range;
    
    template ElementTypeOf(T)
    {
        // T.initを使用
        alias typeof(T.init[0]) ElementTypeOf;
    }
    
    void main()
    {
        // std.range.ElementTypeを使用
        static assert(is(ElementType!(int[]) == int));
    
        // コードを修正した後、カスタムテンプレートを使用
        static assert(is(ElementTypeOf!(int[]) == int));
    }
    
  3. alias 構文の変更:
  4. 新しく導入された"alias foo = int"構文は、サブタイピングでは使用できない。 構文は使用できない。これは、スーパーコンストラクタのエイリアシングを可能にする将来の構文による混乱を防ぐためである。今のところ、既存のalias 構文を使うことができる:

    struct S
    {
        int x;
        // alias this = x;  // エラー
        alias x this;
    }
    

    今後のリリース(v2.063)では、新しい構文が導入される予定である:

    struct S
    {
        int x;
        alias this : x;  // 次期2.063の新機能
    }
    

すべてのバグ修正と機能強化のリスト:

DMDコンパイラのリグレッション

  1. Bugzilla 9174: regression(2.057) ice(cast.c)で三項演算子とエイリアスthisが使えない。
  2. Bugzilla 9244: ポインターを含む "共用体"は許可されない。
  3. Bugzilla 9258: opAssignが基底クラスを含むと "identity assignment operator overload "エラーが発生する
  4. Bugzilla 9259: ポインタの配列を型安全なvarargに渡すとエラーになる
  5. Bugzilla 9263: 文に到達可能なのに文に到達できない。
  6. Bugzilla 9266: 2つのTupleオブジェクトを定義できない。
  7. Bugzilla 9268: [ice-on-invalid]fail44.dのvoid代入がフロントエンドで検出されなくなった。
  8. Bugzilla 9273: 暗黙のスーパーコールでテンプレート化されたCTORでDMDのセグメンテーションフォールトが発生する。
  9. Bugzilla 9276: リグレッション(2.061):前方参照エラー
  10. Bugzilla 9278: ICE todt.c:692 で float を含む構造体が使用後に定義されている。
  11. Bugzilla 9309: 回帰 (2.061): -O -release が間違ったコードを生成する
  12. Bugzilla 9332: [REG][2.060 -> 02.061] 構造体のコンストラクタがそれ自身を実行すると「Warning: 文に到達できません」を生成する
  13. Bugzilla 9377: 問題8504の修正によるリンク失敗リグレッションの原因
  14. Bugzilla 9385: [回帰2.057] NULLリテラルは暗黙的にboolに変換されるべきである
  15. Bugzilla 9387: コンパイラー・スイッチ -O が正しいコードの動作を変更する
  16. Bugzilla 9399: ネストされた関数、テンプレートエイリアスパラメータ、-inline、ソースファイルの順序によるICE
  17. Bugzilla 9404: 2.061 で Nullable が使えなくなった。
  18. Bugzilla 9406: (リグレッション: 2.061) 前方参照エラーからのスタックオーバーフロー
  19. Bugzilla 9409: (Regression: 2.061) 前方参照エラーによるスタックオーバーフロー : [2.062-alpha] 式タプル内の$に関するリグレッション
  20. Bugzilla 9410: [2.061] 関数のオーバーロードの選択を間違えた。
  21. Bugzilla 9416: [REG][2.060 -> 02.061] DMDがテンプレート・パラメーターのないopAssignを熱心にインスタンス化する
  22. Bugzilla 9420: [2.062alpha] エラーメッセージに奇妙な"(null)"が出力される
  23. Bugzilla 9435: regression(head): 前方参照エラー
  24. Bugzilla 9436: enumは循環インポートやミックスインでは前方参照できない。
  25. Bugzilla 9496: [REG 2.061 -> 2.062 alpha] "this[1 ... $]" は、間違った "this" を "opDollar" に渡す。
  26. Bugzilla 9514: テンプレートのインスタンスはエイリアスではない
  27. Bugzilla 9525: [CTFE] コンパイル時に &S を const(S*) に変換できない

DMDコンパイラのバグ

  1. Bugzilla 1369: __traits(getMember)で'this'が見つからない。
  2. Bugzilla 1730: const構造体参照に対してconst構造体でないメソッドを呼び出すと、不正なエラーメッセージが表示される。
  3. Bugzilla 1841: ネストされた関数内で変数が使用されている場合、クロージャ検出が機能しない。
  4. Bugzilla 2452: 未実装メソッドのエラーは関数のオーバーロードを表示すべきである。
  5. Bugzilla 3321: デバッグ・フラグ
  6. Bugzilla 3466: テンプレート化されたクラス、構造体、インターフェースのJSON出力が正しくない。
  7. Bugzilla 4178: JSON出力でデストラクタが見つからない。
  8. Bugzilla 4269: リグレッション(2.031): エラーが箝口令が敷かれている間に評価された場合、無効な型が受け入れられる。
  9. Bugzilla 4477: 関数定義のJSON出力に不十分な型情報が含まれる。
  10. Bugzilla 4478: JSON出力でimport文が省略される。
  11. Bugzilla 4540: 間違ったスイッチ型に対するエラーメッセージを改善した。
  12. Bugzilla 5168: 文字列列挙型は-gコンパイラスイッチでは動作しない。
  13. Bugzilla 5461: DMD -Hで生成された.diファイルのauto関数の宣言が無効である。
  14. Bugzilla 5933: auto-returnメンバ関数の戻り値の型が取得できない。
  15. Bugzilla 5978: ICE(mtype.c)の無名関数の子関数で"__traits(parent)"を呼び出すと、その関数の戻り値の型が取得できない。
  16. Bugzilla 6057: 関数内での列挙型定義の問題
  17. Bugzilla 6319: デバッグの緩和された純粋性がネストされたスコープに適用されない
  18. Bugzilla 6332: auto-return関数を@safeとして推論できない。
  19. Bugzilla 6408: string[].initが間違った型になる。
  20. Bugzilla 6538: ICE(mangle.c) 無効なテンプレート制約がある。
  21. Bugzilla 6552: CaseRangeのフォールスルー警告が正しくない
  22. Bugzilla 6652: 数値範囲を持つforeachパラメータは常にrefである
  23. Bugzilla 6708: への暗黙のキャスト : immutable ref implicit cast to const ref
  24. Bugzilla 6743: ICE(mars.c)がexeファイルをコンパイルしようとしている
  25. Bugzilla 6833: 浮動小数点リテラルがヘッダで小数部を失う
  26. Bugzilla 6873: テンプレート引数で複数ストレージクラスが許可されない
  27. Bugzilla 6902: 純粋nothrow int()」型が異なる。
  28. Bugzilla 6905: 戻り値の型がない場合、refはauto refとして動作する。
  29. Bugzilla 6962: スコープ終了と配列パラメータで間違ったコードになる。
  30. Bugzilla 6963: 純粋/nothrow推論は関数ポインタでは機能しない。
  31. Bugzilla 7152: デフォルト引数にnullを代入できない
  32. Bugzilla 7159: オートリターン・メソッドをキャストする際の前方参照
  33. Bugzilla 7252: ICE(template.c):ファイル「template.c」の4893行目の「global.errors」。
  34. Bugzilla 7408: テンプレート・インスタンスの組み込みプロパティでトレイトのコンパイルに失敗する。
  35. Bugzilla 7420: コンパイル時に読み取れない」エラーメッセージが重複する
  36. Bugzilla 7585: テンプレート化された関数はデリゲートとして推論される。
  37. Bugzilla 7740: unicodePropertiesがctRegexのコンパイル時に読み込めない。
  38. Bugzilla 7950: 型のタプルがインターフェースの基本型リストで誤って平坦化される。
  39. Bugzilla 8053: 再帰的エイリアスが無限ループを引き起こす
  40. Bugzilla 8152: CライブラリをリンクするとSeg-faultが発生する
  41. Bugzilla 8153: x86_64 で toHash シグネチャに関する警告が正しくない。
  42. Bugzilla 8504: テンプレート属性の推論が機能しない
  43. Bugzilla 8583: [64ビット] AA ushort[dchar] byValue range is corrupted on x86_64
  44. Bugzilla 8631: 不正なオーバーライドを受け付ける
  45. Bugzilla 8717: privateprotected が同じモジュール内でメンバの使用を制限している
  46. Bugzilla 8741: 構造体コンストラクタを使用して初期化された構造体メンバのコードが間違っている。
  47. Bugzilla 8742: 別のネストされたクラスから派生した匿名ネストされたクラスがDMDをクラッシュさせる
  48. Bugzilla 8763: 空の可変長引数を持つ構造体の初期化がコンストラクタを呼び出そうとする。
  49. Bugzilla 8783: コンストラクタ内の固定サイズ配列のref foreach更新
  50. Bugzilla 8787: インターフェイスの抽象メソッドではない仮想メソッドのエラーメッセージ
  51. Bugzilla 8832: ローカル変数を参照するデリゲートを持つ関数が返す範囲にアクセスする際のセグメンテーションエラー
  52. Bugzilla 8847: voldemort + inoutで "is"が混乱する。
  53. Bugzilla 8892: 静的配列代入の間違った診断
  54. Bugzilla 8898: 偽陽性ダングリングelse警告
  55. Bugzilla 8913: If文の条件Expressionのコードが間違っている。
  56. Bugzilla 8922: __traits(parent, <imported package>) は現在のモジュールを親として表示する。
  57. Bugzilla 8969: is(T == __parameters) は文書化されていない
  58. Bugzilla 8982: ICE(ctfeexpr.c)の__parametersが誤ったデフォルト・パラメータである。
  59. Bugzilla 9018: traits(compiles,...)は、同じコンパイル不可能なコードの2回目のチェックで真になる。
  60. Bugzilla 9083: テンプレート引数の"ミックスイン"式が機能しない
  61. Bugzilla 9113: ICE(interpret.c):unionの構造体のメンバへのCTFE代入 : ICE(interpret.c): 構造体のメンバへのCTFE代入がうまくいかない。
  62. Bugzilla 9178: UDA: getAttributesがtupleofとうまく動作しない。
  63. Bugzilla 9191: オーバーライド失敗時のエラーメッセージが役に立たない
  64. Bugzilla 9195: safedではポインタのインデックスを作れないようにすべきである。
  65. Bugzilla 9198: Vararg関数はIFTIルールを尊重しない。
  66. Bugzilla 9200: 間違ったSIMDコードが生成される
  67. Bugzilla 9208: [ICE](func.c行1205)で再帰関数にauto returnがある
  68. Bugzilla 9236: スイッチでCTFE ice + with(EnumType)
  69. Bugzilla 9250: 静的配列の長さに関わるエラーの行番号が正しくない
  70. Bugzilla 9254: 無効なforeach集約でICE
  71. Bugzilla 9264: [64bit] intパラメータからfloatパラメータへの変換で誤ったコードがあった。
  72. Bugzilla 9284: コンストラクタ内のテンプレート化されたCTORでDMDのセグメンテーションフォールトが発生する。
  73. Bugzilla 9291: [ICE][REG] nothrowで未定義の識別子を投げるとDMDがクラッシュする
  74. Bugzilla 9293: StructInitializer を持つ列挙型構造体が奇妙なエラーを報告する。
  75. Bugzilla 9304: 単項マイナス演算子がSIMD型で正しく動作しない。
  76. Bugzilla 9305: デフォルトのテンプレートラムダ式のDdocが醜い。
  77. Bugzilla 9312: with文のエラーメッセージがおかしい。
  78. Bugzilla 9315: ICE (expression.c:4249, StructLiteralExp::getField) ネストされた構造体リテラルのTupleof。
  79. Bugzilla 9320: オプティマイザは構造体に対してもコピー伝搬を行うべきである。
  80. Bugzilla 9322: 内部エラー : ../ztc/cod1.c 3510 OSX 32 で SIMD を使用している。
  81. Bugzilla 9330: MSYSでdmdテスト・スイートを実行できない。
  82. Bugzilla 9338: 有効な "this"がないメンバ関数をCTFEしようとするとコンパイラがsegfaultする。
  83. Bugzilla 9348: tmpl!arg "構文の後に"!is"または"!in"が続く
  84. Bugzilla 9350: std.algorithm.findAdjacentが無限大の範囲で到達不能なコード警告を出す
  85. Bugzilla 9357: 浮動小数点リテラルは診断エラーで常にピリオド付きで出力されるべきである
  86. Bugzilla 9358: コンパイラはエラー後に重複したスイッチケースを作成する
  87. Bugzilla 9368: 型定義された列挙型の最終スイッチが正しくチェックされない。
  88. Bugzilla 9369: DDocはコード内で'&'->'&amp;'をハードコードする
  89. Bugzilla 9374: 'super'はテンプレート制約の内部でアクセス可能でなければならない
  90. Bugzilla 9398: 三項演算子の型不一致の診断が正しくない。
  91. Bugzilla 9418: datetimeとstdioのみを使用したセグメンテーション・フォールト。
  92. Bugzilla 9438: RefCountedのスタックオーバーフロー
  93. Bugzilla 9442: this. 、クラスフィールドのtypeid()が動作しない。
  94. Bugzilla 9453: ice(symbol.c)でテンポラリにスライスがある。
  95. Bugzilla 9458: ModExpが配列オペランドに対して無効なコードを生成する
  96. Bugzilla 9461: で型システムを壊すことができる。inout
  97. Bugzilla 9479: デリゲート・リテラルの型推論のエラーメッセージに_error_が含まれる。
  98. Bugzilla 9484: JSON出力の構文エラー
  99. Bugzilla 9510: core.bitop.bsrが未定義である。

DMDコンパイラの機能強化

  1. Bugzilla 2630: ddocはunittestを文書化できるようにすべきである。
  2. Bugzilla 3404: JSON出力はオリジナルのエイリアス名を保持すべきである。
  3. Bugzilla 4194: JSON出力に含まれる属性
  4. Bugzilla 5529: 純粋関数のエンディアンはstd.system.endianか?
  5. Bugzilla 5893: 演算子オーバーロードのための単純なエイリアスを許可する
  6. Bugzilla 6171: rdmd: 起動時間を改善するために依存ファイルをキャッシュする [patch].
  7. Bugzilla 8105: "in ref"を実装する
  8. Bugzilla 8128: unittestブロックはインターフェイスで許可されるべきである。
  9. Bugzilla 9389: Hf がある場合は -Hd を無視する。
  10. Bugzilla 9463: セーフを "エスケープ不可能"にする。

phobosのリグレッション

  1. Bugzilla 9355: [security] std.net.curlでSSL証明書の署名検証を無効にする
  2. Bugzilla 9444: リグレッション (2.059): シェルがエラー時にスローしない。
  3. Bugzilla 9457: isSorted(string) が機能しない。
  4. Bugzilla 9523: std.conv.to が列挙型をそれ自身に変換しなくなった

phobosのバグ

  1. Bugzilla 5065: タプルのwritefln("%f")が結果を表示する
  2. Bugzilla 5265: std.array.backがwcharベースの配列に対して正しく動作しない。
  3. Bugzilla 5726: boyerMooreFinderが検索時にハングする
  4. Bugzilla 5763: traits.d BaseClassesTuple関数がObjectクラスの引数を正しく処理しない。
  5. Bugzilla 5773: タプルのスライス/サイズ変更された配列で sort() と topN() が失敗する
  6. Bugzilla 6066: std.container.BinaryHeap インターフェースが壊れている:BinaryHeapインターフェースが壊れている。
  7. Bugzilla 6436: Refcounted初期化のバグ
  8. Bugzilla 6635: std.conv.emplace: エンフォースメントが弱すぎる。
  9. Bugzilla 6668: 間違った "to"変換スタックトレース
  10. Bugzilla 7142: boolean 値の書式が正しくない。
  11. Bugzilla 7659: std.stdio.File.close()でfile.nameが消える
  12. Bugzilla 7819: std.file.setTimesがフォルダでエラーをスローする。
  13. Bugzilla 8078: receiveOnlyはミスマッチ時にどの型を期待し、取得したかを伝えるべきである
  14. Bugzilla 8314: randomSample は定数で素数を求める
  15. Bugzilla 8326: std.string.formatの実行時例外が発生する
  16. Bugzilla 8367: std.range.chainのテンプレート制約が不適切である。
  17. Bugzilla 8368: std.algorithm.sortのテンプレート制約に不備がある
  18. Bugzilla 8567: isDynamicArrray!S==配列へのエイリアスを持つSに対してtrueを返す
  19. Bugzilla 8689: バリアント opArithmetic が float 変換を試みない
  20. Bugzilla 8694: std.zlib.(Un)Compressは_onInvalidMemoryOperationErrorを引き起こす可能性がある。
  21. Bugzilla 8837: BigIntはより良い演算子テンプレート制約を必要とする
  22. Bugzilla 8890: std.algorithm.commonPrefixはunicodeを正しく扱わない。
  23. Bugzilla 8920: iotaは全ての積分型で動作すべきである。
  24. Bugzilla 9005: std.concurrency.spawnは新しいTidに対してvoid delegate(Args) shared
  25. Bugzilla 9163: std.parallelismは広範囲な最適化で壊れている。
  26. Bugzilla 9211: regex lookahead, (?=( \dd)+b) failed.
  27. Bugzilla 9288: Parameter(Identifier|DefaultValue)Tupleが無意味なエラーを報告する。
  28. Bugzilla 9299: std.algorithm.minPos of const(int)[].
  29. Bugzilla 9317: ParameterStorageClassTupleはinout関数のエラーを報告する。
  30. Bugzilla 9336: Writelnは共有変数のアドレスを表示できない

phobosの機能強化

  1. Bugzilla 4287: std.array.Appender用のopOpAssign!("~=")
  2. Bugzilla 4813: アクセス修飾子を取得するための"トレイト
  3. Bugzilla 5666: std.array.replaceのコンパイルエラー(文字列と不変文字列)
  4. Bugzilla 6614: std.traitはisFinalテンプレートを持つべきである。
  5. Bugzilla 7896: シーケンススライス
  6. Bugzilla 8143: 安全なstd.conv.から列挙型への変換
  7. Bugzilla 9337: Duration.maxがない
  8. Bugzilla 9339: std.random.uniform!Enumはランダムな列挙型を返すべきである。

Druntimeバグ

  1. Bugzilla 4793: Runtime.loadLibraryがMBSパスを使用してDLLをロードできない。
  2. Bugzilla 5375: 周期的なモジュールのインポートの検出で、例外メッセージの代わりにコンソールにエラー結果を表示するようにした。
  3. Bugzilla 8132: LPTSTRは常にLPSTRにエイリアスされる。
  4. Bugzilla 9373: すべての空の非推奨文に非推奨メッセージを追加する。

ウェブサイトのリグレッション

  1. Bugzilla 9467: 演算子オーバーロードのアンカーが壊れている
  2. Bugzilla 9492: [2.052 beta] オフラインのHTMLドキュメントでスタイルシートが見つからない

ウェブサイトのバグ

  1. Bugzilla 5513: std.algorithmの例: 誤っている。
  2. Bugzilla 7304: オンラインドキュメントに共変数配列に関して誤りがある。
  3. Bugzilla 7345: interfaceToC.htmlの左側が抜けている
  4. Bugzilla 8302: std.fileのdirEntriesのドキュメントが不完全である。
  5. Bugzilla 8574: [std.format]フラグ' ' は整数だけでなく浮動小数点数でも機能する。
  6. Bugzilla 8619: Tuplesの記事ではwritelnの代わりにwriteflnが使われている。
  7. Bugzilla 9321: 言語仕様のHTML5標準へのデッドリンク
  8. Bugzilla 9394: 静的配列のABIが古い
  9. Bugzilla 9446: https://dlang.org/hash-map.html のプロパティ・テーブルに ".keys" がない。
  10. Bugzilla 9503: [文法] テンプレート宣言/インスタンスは1つ以上の引数を取る必要がある?

ウェブサイトの強化

  1. Bugzilla 9302: 適切な外部ドキュメント
前バージョン: - 次のバージョン: