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

変更ログ 2.100.0

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

Download D 2.100.0
2022年5月10日リリース

2.100.0には22の大きな変更と179のBugzillaの問題の修正が含まれている。 多大なる感謝を 41名の貢献者 に感謝する。

D 2.100.0におけるすべてのバグ修正と機能強化のリスト。

コンパイラの変更

  1. 部分代入にalias this を使用することの非推奨期間を終了する。

    このリリースから、alias this を左辺オペランドの部分代入に使用してはならない。 左辺オペランドの部分代入に使用してはならない。そのような代入は コンパイラー・エラーとなる。

    構造体に単一のメンバがあり、そのメンバが直接エイリアス this されているか、そのメンバを返すrefゲッター関数にエイリアス this されている場合、エイリアス this することができる。 にエイリアスされている場合は、このエイリアスを使用することができる。 を使うことができる。

    struct Allowed
    {
        int onemember;
        alias onemember this;
    }
    
    struct Rejected
    {
        int aliased;
        long other;
        alias aliased this;
    }
    
    void fun(Allowed a, Rejected r)
    {
        a = 0; // OK、構造体にはメンバーが1つしかない。
        r = 0; // エラー、`Rejected`型の変数`r`部分的に初期化するために`alias this`を使用できない。`r.aliased`を使用すること
    }
    
  2. D1スタイルの演算子の非推奨期間は終了した。

    このリリースから、非推奨のD1オーバーロード演算子を使用すると、コンパイラー・エラーになる。 を使用するとコンパイラー・エラーになる。

    修正方法は、すべての演算子をD2相当の演算子に置き換えることである。

    以下のD1演算子オーバーロードは削除され、opUnary :

    • opNegopUnary(string op)() if (op == "-")
    • opComopUnary(string op)() if (op == "~")
    • opPostIncで置き換えられなければならない。opUnary(string op)() if (op == "++")
    • opPostDecで置き換えられなければならない。opUnary(string op)() if (op == "--")
    • opStarで置き換えられなければならない。opUnary(string op)() if (op == "*")

    以下のD1演算子オーバーロードが削除され、opBinary :

    • opAddopBinary(string op)(...) if (op == "+")
    • opSubopBinary(string op)(...) if (op == "-")
    • opMul で置き換えられなければならない。opBinary(string op)(...) if (op == "*")
    • opDiv で置き換えられなければならない。opBinary(string op)(...) if (op == "/")
    • opMod で置き換えなければならないopBinary(string op)(...) if (op == "%")
    • opAnd で置き換えられなければならないopBinary(string op)(...) if (op == "&")
    • opXor で置き換えられなければならないopBinary(string op)(...) if (op == "^")
    • opOr で置き換えられなければならないopBinary(string op)(...) if (op == "|")
    • opShl で置き換えられなければならないopBinary(string op)(...) if (op == "<<")
    • opShr で置き換えられなければならないopBinary(string op)(...) if (op == ">>")
    • opUShr で置き換えられなければならないopBinary(string op)(...) if (op == ">>>")
    • opCat で置き換えられなければならないopBinary(string op)(...) if (op == "~")
    • opIn で置き換えられなければならない。opBinary(string op)(...) if (op == "in")

    以下のD1演算子オーバーロードが削除され、opBinaryRight :

    • opAdd_ropBinaryRight(string op)(...) if (op == "+")
    • opSub_ropBinaryRight(string op)(...) if (op == "-")
    • opMul_r で置き換えられなければならない。opBinaryRight(string op)(...) if (op == "*")
    • opDiv_r で置き換えられなければならない。opBinaryRight(string op)(...) if (op == "/")
    • opMod_r で置き換えなければならないopBinaryRight(string op)(...) if (op == "%")
    • opAnd_r で置き換えられなければならないopBinaryRight(string op)(...) if (op == "&")
    • opXor_r で置き換えられなければならないopBinaryRight(string op)(...) if (op == "^")
    • opOr_r で置き換えられなければならないopBinaryRight(string op)(...) if (op == "|")
    • opShl_r で置き換えられなければならないopBinaryRight(string op)(...) if (op == "<<")
    • opShr_r で置き換えられなければならないopBinaryRight(string op)(...) if (op == ">>")
    • opUShr_r で置き換えられなければならないopBinaryRight(string op)(...) if (op == ">>>")
    • opCat_r で置き換えられなければならないopBinaryRight(string op)(...) if (op == "~")
    • opIn_r で置き換えられなければならない。opBinaryRight(string op)(...) if (op == "in")

    注釈:opBinaryRight のオーバーロード演算子は、opBinary の演算子よりも優先される。

    以下のD1演算子オーバーロードは、opOpAssign に優先して削除された:

    • opAddAssignopOpAssign(string op)(...) if (op == "+")
    • opSubAssignopOpAssign(string op)(...) if (op == "-")
    • opMulAssign で置き換えられなければならない。opOpAssign(string op)(...) if (op == "*")
    • opDivAssign で置き換えられなければならない。opOpAssign(string op)(...) if (op == "/")
    • opModAssign で置き換えなければならないopOpAssign(string op)(...) if (op == "%")
    • opAndAssign で置き換えられなければならないopOpAssign(string op)(...) if (op == "&")
    • opOrAssign で置き換えられなければならないopOpAssign(string op)(...) if (op == "|")
    • opXorAssign で置き換えられなければならないopOpAssign(string op)(...) if (op == "^")
    • opShlAssign で置き換えられなければならないopOpAssign(string op)(...) if (op == "<<")
    • opShrAssign で置き換えられなければならないopOpAssign(string op)(...) if (op == ">>")
    • opUShrAssign で置き換えられなければならないopOpAssign(string op)(...) if (op == ">>>")
    • opCatAssign で置き換えられなければならない。opOpAssign(string op)(...) if (op == "~")

    以下のD1演算子オーバーロードが削除され、alias this :

    • opDot に置き換えなければならない。alias this

  3. scope に置き換える必要がある。クラス、構造体、列挙型宣言の型制約は非推奨である。

    scope クラス宣言の型制約として、 クラスを割り当てることを強制するものであった。 その結果、クラスはGCで割り当てられるのではなくスタックに置かれることになる。 スタックに置かれることになる。この制約が廃止される予定になってからかなり経つが 今回のリリースから、コンパイラーは使用時に非推奨の警告を出すようになった。 を出すようになった。 scope

    scope を構造体や列挙型宣言の型制約として使用することは、これまで何の効果もなかった。 構造体宣言や列挙型宣言の型制約としての効果はなく、同様に非推奨となっている。

    scope class C { }  // 非推奨: 型制約としての`scope`は非推奨である。使用する場合は`scope`を使用すること。
    scope struct S { } // 同上
    scope enum E { }   // 同上
    

    class をスタック・アロケートするためにscope を使うことは、まだサポートされている、 型制約だけが非推奨である。

    class C { }
    
    void main () @nogc
    {
        scope c = new C;
    }
    
  4. 注釈のないasm ブロックの非推奨期間は終了した。

    詳細は非推奨機能を参照のこと。 を参照のこと。

    このリリースから、asm ブロックを使用すると、@system@nogc明示的な注釈がない限り、不純であるとみなされ、スローされる可能性がある。

  5. delete キーワードの非推奨期間は終了した。

    詳細は非推奨機能を参照のこと。

    このリリースから、delete キーワードを使用するとコンパイラー・エラーになる。

    これに代わるものとして destroy 可能であれば core.memory.__delete最後の手段として

  6. C++ヘッダー生成の改善

    以下の機能/バグ修正/改善が に実装された:

    • ネストされた集合体に対して暗黙的に生成されるコンテキスト・ポインタは、以下のようになった。 ではなくouterthis
    • pragma(mangle, "...") 、明示的なマングリングが部分的にサポートされる。 関数/変数に対して部分的にサポートされている。このマングリングはextern(C) Cは宣言名をマングルしないので、マングリングは宣言の識別子として使われる。extern(C++) C++には移植可能な代替手段がないため、宣言は無視される。
    • C++から簡単にアクセスできないデストラクタ(例:extern(D) )をプライベート・メンバとして発行する。 C++側では破棄されないインスタンスの生成を防ぐ。 インスタンスの生成を防ぐ。
    • Dマングリングで生成される集合体のextern(C) 関数を生成しなくなった。 関数を生成しなくなった。

    注釈: ヘッダー・ジェネレーターはまだ実験的なものである。 バグがあればバグトラッカーに送ってほしい。

  7. インターフェース宣言の型制約としてのscope の非推奨期間が終了した。

    このリリースから、scope を宣言の型制約として使用すると、コンパイラー・エラーになる。interface 宣言に対する型制約として を使用すると、コンパイラー・エラーになる。

    scope interface I { }  // エラー: 型制約としての`scope`は廃止された。代わりに`scope`を使用すること。
    
  8. inout 属性はもはやreturn 属性を意味しない。

    すべてのinout 関数がその引数を返すという前提の下、コンパイラは以前はinout 関数にreturn 属性を追加していた。 inout しかし、constimmutable は推移的であるが、return セマンティクスは推移的でないため、inout 引数のメンバを返すこともできる。

    @safe:
    
    struct Node
    {
        Node* next;
        int x;
    
        // この構造体へのポインタをエスケープする
        // これは`inout`のおかげで許されていた
        @safe inout(int)* getScopePointer() inout
        {
            return &this.x;
        }
    
        // しかし、この構造体へのポインタを返さない場合はどうなるか?
        // `inout`は推移的なので適用されるが、`return ref`は適用されない
        // コンパイラは、返されたポインタをスコープポインタとして不必要に扱う可能性がある
        @safe inout(int)* getNonScopePointer() inout
        {
            return &this.next.x;
        }
    
        // 最初のケースに対する修正方法:
        // もし`inout` + `return ref`が必要なら、両方のアノテーションを付ける
        @safe inout(int)* getScopePointer() inout return
        {
            return &this.x;
        }
    }
    
  9. 契約不変バージョン識別子をサポートする。

    時には、不変量が有効になっているときだけコードをコンパイルすると便利なことがある。この この機能は、予約バージョン識別子D_Invariantsを提供する。 に評価される。

    bool hit;
    
    class Foo
    {
        this() {}
        invariant { hit = true; }
    }
    
    void main()
    {
        cast(void) new Foo();
    
        version(D_Invariants) assert(hit); // コンパイルされた場合に実行される
    }
    
  10. DIP1038を導入する必ず使う

    @mustuse は、 または 型に適用できる新しい属性である。 に適用できる新しい属性である。これは 例外を使用できないコードに対して、代替のエラー処理メカニズムを実装するために使用できる。 、BetterCコードを含む。 struct union @nogc

    詳細は DIP 1038を参照のこと。

  11. .tupleof 静的配列のための"@property"プロパティが追加された。

    静的配列のインスタンスで.tupleof プロパティを使用することができるようになり、配列の各要素のl 値シーケンスが得られるようになった。

    これは静的配列インスタンスに対してのみであることに注釈:。適切なチェックが欠けている古いコードを壊さないようにするため、型に使用してもエラーとなる。回避策として、typeof((T[N]).init.tupleof).

    void foo(int, int, int) { /* ... */ }
    
    int[3] ia = [1, 2, 3];
    foo(ia.tupleof); // `foo(1, 2, 3);`と同じ
    
    float[3] fa;
    //fa = ia; // エラー
    fa.tupleof = ia.tupleof;
    assert(fa == [1F, 2F, 3F]);
    
  12. 型としてのthissuper の使用が削除された。

    このリリース以前は、this またはsuper を型として使用すると、代わりに または を使用するようコンパイラに指示するエラーが発生した。 typeof(this) typeof(super) エラーが発生した。これは現在 パーサーはこの間違ったコードを認識しなくなった。 パーサーはこの間違ったコードを認識しなくなった。

  13. スイッチ・ケースのフォールスルーを見逃すケースが非推奨になった

    DMD2.099.0では、switch caseのbreak;DMD2.099.0ではエラーになった。 しかし、1つのcase文で複数の値を使用しても、コンパイラーはエラーを出さなかった:

    void main()
    {
        int i = 0;
        switch (10)
        {
            case 10, 11:
                i = 4;
                // 偶発的なフォールスルーが許される
            default:
                i = 8;
        }
        assert(i == 4); // 失敗
    }
    

    このバグは修正されたが、コードの破損を避けるため、この特定のケースは非推奨の警告を出すようになった。 DMD 2.110からは、他のswitch case fallthroughのケースと同様にエラーが発生する。

ライブラリの変更

  1. bind に新しい関数が追加された。std.functional

    これは、構造体のフィールドを関数の引数として渡すために使用される。例えば の要素に名前を付けるために使用できる。 std.typecons.Tuple:

    import std.stdio;
    import std.range;
    import std.algorithm;
    import std.functional;
    
    void printWithLineNumbers(File f)
    {
        f.byLine
            .enumerate
            .each!(bind!((num, line) {
                writefln("%8d %s", num, line);
            }));
    }
    

    詳細は標準ライブラリのドキュメント を参照のこと。

  2. Nullable の 。std.typecons

    Nullable は、0 要素または 1 要素の範囲インターフェイスを提供するようになった。

    import std.stdio;
    import std.algorithm;
    import std.typecons;
    
    void printValues(Nullable!int[] values)
    {
        values.joiner.each!writeln();
    }
    
  3. Zlibが1.2.12にアップデートされた。

    同梱のzlibがバージョン1.2.12に更新された。

ツールの変更

  1. rdmd がRDMD_DMD 環境変数を使って D コンパイラを指定できるようになった。

    rdmdは使用するDコンパイラを選択するために、環境変数RDMD_DMD (環境に存在する場合)を使用するようになった。--compiler オプションと同様に、この変数の値にはgdmdldmd2 のような DMD ライクなコマンドライン構文を持つコンパイラの名前またはパスを指定しなければならない。 この変数はデフォルト(rdmd がビルドされた時点で決定される)をオーバーライドするが、--compiler オプションでオーバーライドすることもできる。

dubの変更

  1. dynamicLibraryターゲットをスタティック・ライブラリーではなくダイナミック・ライブラリーとしてビルドする。

    DubはdynamicLibrary targetTypeをstaticLibraryとしてビルドしなくなった。

    x86_omfを除く。x86_omfは、期待された動作をしないことにつながる多くの問題があるため、無効化されている。

    現時点ではコンパイラやリンカのフラグは追加されていないので、コンパイラが"phobos"に対して動的にリンクするようにするには、関連するフラグを指定する必要がある。

  2. $DUB_BUILD_PATH 変数が追加された。

    $DUB_BUILD_PATH 変数がpostBuildCommands セクションの中で定義されるようになった。この変数には、パッケージがビルドされた絶対パスが格納される。 ビルドプロセスの副産物を目的の場所にコピーするのに使われる。

    例えば、実行ファイルがシンボルをエクスポートする場合、インポートライブラリとシンボルエクスポートファイルをどこかで利用できるようにしたい。 インポートライブラリとシンボルエクスポートファイルをどこかで利用できるようにしたい。それは dub.json :

        "postBuildCommands-windows": [
            "copy /y $DUB_BUILD_PATH\\$DUB_TARGET_NAME.lib $PACKAGE_DIR\\lib"
            "copy /y $DUB_BUILD_PATH\\$DUB_TARGET_NAME.exp $PACKAGE_DIR\\lib"
        ],
    
  3. コマンド環境変数の置換が変更された

    これでユーザーは、ラッパー・シェル・スクリプトを使わなくても、文書化された定義済み変数をカスタム・コマンド ディレクティブの中で使えるようになった。

    以前なら失敗していただろう:

    "preBuildCommands": ["$DC -run foo.d"]
    

    DCがDUBの外部で環境変数として定義されていなければ。

    以前は、$DC環境変数を使用するスクリプトを実行したり、POSIX上で。 $$$DC でエスケープして、シェルに変数を代入させることができた。 これらの回避策は現在では必要ない。

    APIの変更:どのコマンドディレクティブもプロセス環境変数で置き換えられなくなった。 をプロセス環境変数で置き換えることはなくなった。ユーザがレシピで提供した生のコマンドにアクセスできるようになった。 dub describe 。 が調整され、プロセス環境変数だけでなく、定義済みの環境変数も処理するようになった。 環境変数も処理するようになった。

  4. Posix: DUBが/usrにインストールされている場合、/etc/dub/settings.jsonを使用する。

    DUBが/usrにインストールされているLinuxディストリビューションでは、DUBが/etc/dub/settings.json(絶対パス)から読み込むようになった。 にインストールされている場合、DUBは/etc/dub/settings.json(絶対パス)からロードする。 (絶対パス)からロードする。

    以前は、 にインストールされている場合、設定は /usr/etc/dub/settings.json /usr/bin/dub から読み込もうとしていた。これはまだ 存在する場合はロードされるが、存在しない場合は/etc/dub/settings.json がロードされる。

  5. injectSourceFilesコマンドによる依存関係からのソースファイルのインジェクションを追加する。

    各(サブ)パッケージは、そのパッケージに直接または間接的に依存する実行ファイルやダイナミック・ライブラリにインクルードされるソース・ファイルをサポートするようになった。

    これは、依存するパッケージが登録メカニズムが必要であることを認識しなくても、依存するパッケージ内でパッケージの要素を登録したり解除したりするために使用できる。

    これに匹敵する既存の機能として、sourceLibrary targetTypeがある。 sourceLibrary targetType は、スタティック・ライブラリ、ダイナミック・ライブラリ、または実行可能な(サブ)パッケージによって依存されるまで、ソースコードのコンパイルを延期する。 sourceLibraryとは異なり、この機能を使用してソースコードをインジェクションすると、依存関係グラフの深さに関係なく、それに依存するすべてのダイナミック・ライブラリと実行可能ファイルにインジェクションされる。


D 2.100.0におけるすべてのバグ修正と機能強化のリスト:

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

  1. Bugzilla 22788: [REG master] 式ヘッダーが同期しない。
  2. Bugzilla 22797: [REGマスター] 内部コンパイラーエラー:"static assert ''"をミックスインできない。
  3. Bugzilla 22801: [REG 2.099.0-beta.1] コンストラクタのreturn refパラメータのアドレスを返せない。
  4. Bugzilla 22810: REG 2.088] FAIL: Runnable/test15.d on BigEndian ターゲット : [REG 2.088] FAIL: Runnable/test15.d on BigEndian ターゲット
  5. Bugzilla 22833: [REG 2.083] error: 'string' is not a member of 'std'.
  6. Bugzilla 22844: [REG 2.089] SIGBUS、_d_newitemUのバスエラー
  7. Bugzilla 22881: ICE CTFEで配列のインデックスが範囲外である。
  8. Bugzilla 22913: ImportC: 配列のインデックス式がキャストとして解析される
  9. Bugzilla 22961: importC: K&R スタイルのメイン関数が拒否された。
  10. Bugzilla 22997: DMDクラッシュ:コピーCTORが他のCTORを呼び出せない。
  11. Bugzilla 22999: 多値の場合のスイッチのフォールスルーエラーが発生しない。
  12. Bugzilla 23019: ofが既存のディレクトリを指している場合、ファイル名が見つからない。
  13. Bugzilla 23036: デフォルト・パラメーターを持つr値コンストラクターがコピー・コンストラクターの存在下でコンパイラーをクラッシュさせる
  14. Bugzilla 23046: [REG][CODEGEN] __simd(XMM.LODLPS) bad codegen
  15. Bugzilla 23087: v2.100.0-rc.1でオーバーロードのgetLinkageトレイトがリグレッションする
  16. Bugzilla 23089: v2.100.0-rc.1でのリンケージ関連ICEのリグレッション
  17. Bugzilla 23097: [REG 2.100] ArrayIndexError@src/dmd/mtype.d(4767): インデックス [18446744073709551615] が長さ 0 の配列の範囲外である。
  18. Bugzilla 23098: 安全なコードでは、配列リテラルから inout パラメータをスコープすることは許可されていない

DMDコンパイラのバグ修正

  1. Bugzilla 7625: インライン化は明示的なelse分岐でのみ機能する
  2. Bugzilla 12344: .diの生成にインターフェースの"契約"が含まれない。
  3. Bugzilla 19948: 暗黙のconst変換が含まれる場合、完全修飾名がエラーで使用されない
  4. Bugzilla 20149: [DIP1000] returnで装飾されていない場合、ローカルデータがinoutメソッドをエスケープする
  5. Bugzilla 20603: オーバーラップのある再帰構造で「イニシャライザで定数でないCTFEポインタを使用できない
  6. Bugzilla 20881: [DIP1000] スコープ推論でreturn-refがreturn-scopeに変わる
  7. Bugzilla 21008: __traits(getMember,...)と仮想関数のオーバーライドが原因でdmdのsegfaultsが発生する。
  8. Bugzilla 21324: liveは以前の所有値を破棄せずにOwnerの上書きを検出しない。
  9. Bugzilla 21546: refによって返される場合、関数の共変数リターン・チェックは間違っている。
  10. Bugzilla 21676: [ICE][SIMD] SIMD + 最適化 + インライン化でDMDがクラッシュする
  11. Bugzilla 21975: パターンマッチングの際、is式がalias thisを介した構造体の暗黙の変換を無視する
  12. Bugzilla 22023: 可変長のエスケープされた引数にreturn を追加すると "@safe" が無効になる
  13. Bugzilla 22145: foreachパラメータのスコープが無視される
  14. Bugzilla 22202: safeコードで@systemコピーコンストラクタを暗黙的に呼び出した場合のエラーメッセージが正しくない。
  15. Bugzilla 22221: [dip1000]純粋関数はExceptionを通してパラメータをエスケープすることができる。
  16. Bugzilla 22234: extern(System)関数の__traits(getLinkage)が間違った値を返す。
  17. Bugzilla 22489: Cヘッダ生成はカスタムマングリングを無視する
  18. Bugzilla 22539: [dip1000] 返される参照スコープの静的配列のスライスは許されるべきではない
  19. Bugzilla 22635: opCast は const this のデストラクタを呼び出さないようにする。
  20. Bugzilla 22751: ライブラリとしてのDMDがparseModuleのfatal()でクラッシュする。
  21. Bugzilla 22755: ImportC: 宣言されたシンボルはイニシャライザで利用可能でなければならない。
  22. Bugzilla 22756: ImportC: __builtin_offsetofがない。
  23. Bugzilla 22776: 文字列リテラルの表示がASCII/非表示文字で失敗する
  24. Bugzilla 22782: [dip1000]refのアドレスを非スコープパラメータに割り当てることができる
  25. Bugzilla 22793: importC: 同じパッケージで複数のモジュールをインポートすると__importが衝突する
  26. Bugzilla 22802: [dip1000] 最初の ref パラメータがreturn の宛先として見える。this
  27. Bugzilla 22806: cppmangle:複雑な実数が正しく処理されない
  28. Bugzilla 22807: ImportC":配列のインデックスが古い形式のフレキシブル配列の範囲外である。
  29. Bugzilla 22808: ImportC: 関数がreturn文で関数へのポインタに減衰しない。
  30. Bugzilla 22809: ImportC:druntimeの__builtin_offsetofの定義が無効なポインタの参照解除につながる。
  31. Bugzilla 22812: ImportC:C11がディレクティブの開始と終了の間に改行を許可していない。
  32. Bugzilla 22818: ImportC: C11ではディレクティブの開始と終了の間に改行を入れることができない。
  33. Bugzilla 22823: dmd.root.file:PPCでFile.readが読み込みに失敗する。
  34. Bugzilla 22830: Solaris: error: module 'core.stdc.math' import 'signbit' not found : モジュール 'core.stdc.math' インポート 'signbit' が見つからない。
  35. Bugzilla 22831: 不正な extern(C) main 関数に対するエラーはない。
  36. Bugzilla 22837: [dip1000] checkConstructorEscapeは最初の非ポインタの後に終了する
  37. Bugzilla 22840: [dip1000] 推測された@safeを持つinoutメソッドがローカルデータをエスケープする
  38. Bugzilla 22841: importC: Error: 変数'var'が変数'var'をシャドウイングしている。
  39. Bugzilla 22842: importC: typeedefで関数を宣言できない。
  40. Bugzilla 22845: DWARF .debug_line セクションが標準に準拠していない。
  41. Bugzilla 22846: [REG 2.066] SIGBUS、_d_newarrayiTのバスエラー
  42. Bugzilla 22848: DWARF .debug_lineセクションはDW_AT_stmt_listバウンズに適合するように生成されるべきである。
  43. Bugzilla 22874: ICE:mips64el-linux上でdruntimeをビルドする際のセグメンテーションフォールト
  44. Bugzilla 22876: importC: 式解析が何もしないはずの括弧によって影響を受ける
  45. Bugzilla 22878: ImportC: HUGE_VALのglibcフォールバックが「not representable」となる。
  46. Bugzilla 22884: ImportC: 関数がキャストされた時にポインタに減衰しない。
  47. Bugzilla 22885: ImportC: それ自身と一緒に宣言されたtypedefは機能するはずである。
  48. Bugzilla 22886: ImportC: 関数のプロトタイプで構造体を前方に宣言すると、異なる型での再宣言になる。
  49. Bugzilla 22887: ImportC: typedef列挙型は失敗する。
  50. Bugzilla 22892: ImportC:配列をポインタとして参照することはサポートされていない。
  51. Bugzilla 22894: ImportC:静的構造体のイニシャライザーが自身のフィールドのアドレスを取ることができない。
  52. Bugzilla 22895: importC: 指数がメンバアクセスとして解析される
  53. Bugzilla 22896: importC: "異なる型での関数の再宣言"はconstを無視すべきである。
  54. Bugzilla 22897: importC: 前方宣言された静的関数をポインタを通して呼び出す際のセグメンテーションフォールト。
  55. Bugzilla 22899: importC: sizeofの余分な括弧はtypedef型ではエラーになる。
  56. Bugzilla 22904: importC: 結果がキャストされ、名前を括弧で囲んだ関数呼び出しの構文エラー : importC: 結果がキャストされ、名前を括弧で囲んだ関数呼び出しの構文エラー
  57. Bugzilla 22906: 非正規Dファイルの意味解析でライブラリとしてのDMDがハングアップする
  58. Bugzilla 22909: importC: u8文字列がパーサーによって拒否される。
  59. Bugzilla 22910: [dip1000] リターンスコープ構造体メンバ関数がrefでthis
  60. Bugzilla 22912: importC: castとtypedefと括弧で囲まれた関数呼び出しの構文エラー : [dip1000]構造体メンバ関数はrefで。
  61. Bugzilla 22914: "おそらくスコープを削除する"という補足的なエラーが発生した。
  62. Bugzilla 22915: 無効なforeach集約のエラーは "型"を表示すべきである。
  63. Bugzilla 22918: importC: スタティック変数でゼロ初期化されない型がある。
  64. Bugzilla 22919: [dip1000] -checkaction=context は "assigned to__assertOp2 with longer lifetime" を返す。
  65. Bugzilla 22923: importC: 前方宣言された静的変数のアドレスが無効である。
  66. Bugzilla 22924: importC: boolean式の結果はintであるべきである。
  67. Bugzilla 22927: importC: 前方参照と同名の関数を持つ構造体が既に存在する。
  68. Bugzilla 22928: importC: 配列が真偽値を持たない。
  69. Bugzilla 22929: importC: 長さが不明な外部配列は境界エラーとなる。
  70. Bugzilla 22930: importC: switch文でdefaultが指定されていない場合、default:break;を使用すべきである。
  71. Bugzilla 22931: importC: エラー:0 は効果がない。
  72. Bugzilla 22933: importC: gotoが変数の宣言をスキップする。
  73. Bugzilla 22934: ヘッダー・ジェネレーターがコンテキスト・ポインターをthis
  74. Bugzilla 22935: importC: offsetof with array element gives 'dereference of invalid pointer' (配列要素によるoffsetofは「無効なポインタの参照解除」を与える)
  75. Bugzilla 22951: 生成されたC++ヘッダーからDtorが欠落している
  76. Bugzilla 22954: ヘッダージェネレーターがextern(C)メンバー関数を生成する。
  77. Bugzilla 22955: importC: 指定されたアラインメントを持つD構造体のalignofが正しくない。
  78. Bugzilla 22970: importC: 配列の末尾を1つ過ぎたアドレスを取ると境界エラーが発生する
  79. Bugzilla 22971: importC: unsigned char配列を文字列リテラルで初期化できない。
  80. Bugzilla 22972: importC: コンパイル時に静的変数を読み込むことができない。
  81. Bugzilla 22974: importC: 関数内の外部変数に D 名のマングリングが適用された。
  82. Bugzilla 22976: importC: address-ofの際に要素サイズによる乗算に失敗する。
  83. Bugzilla 22988: importC: 三項演算子を定数フォールディングする際に短絡が発生しない
  84. Bugzilla 22994: importC: 静的配列でゼロ初期化されない型がある。
  85. Bugzilla 23000: -checkaction=C の場合、final switch のエラーに行番号がない。
  86. Bugzilla 23002: importC: 型と同じ名前の構造体または共用体フィールドで循環参照エラーが発生する。
  87. Bugzilla 23003: ImportCはobject.dをインポートすべきではない。
  88. Bugzilla 23004: importC: 構造体または共用体ポインタから "init"または "stringof"という名前の関数ポインタを呼び出すとエラーが発生する。
  89. Bugzilla 23008: importC: dmd は空の構造体または共用体をグローバルとしてアサートする。
  90. Bugzilla 23009: [CODEGEN][SIMD] SIMD + 最適化 + インライン化 + double
  91. Bugzilla 23011: importC: シンボル名を設定するasmラベルがエクスターンで機能しない
  92. Bugzilla 23017: C++クラスはDクラスから派生できない
  93. Bugzilla 23025: ImportC: 仮の定義と変数の定義でシンボルが重複する。
  94. Bugzilla 23028: ImportC: ステートメントの代わりに_Genericが見つかった。
  95. Bugzilla 23029: ImportC: _Genericはconstへのポインタと通常のポインタを同じ型として扱う。
  96. Bugzilla 23031: ImportC: 16進文字エスケープは可変長であるべきである。
  97. Bugzilla 23034: importC: head-const構造体はコマンドライン上の複数のファイルと混同される。
  98. Bugzilla 23037: importC: 型修飾子だけの型は機能しない。
  99. Bugzilla 23038: importC: 構造体内部のsizeofが構造体メンバをスコープに持つ。
  100. Bugzilla 23039: importC: 配列の長さを指定した宣言が、それ自身をスコープに含む。
  101. Bugzilla 23044: importC: 関数呼び出しのカンマ式が宣言として解析される。
  102. Bugzilla 23045: importC:キャストされた関数型にextern(C)がない。
  103. Bugzilla 23047: [ICE][SIMD] ベクトル型をSROAしない
  104. Bugzilla 23056: importC: dmd が CTFE 関数の return 文の欠落をアサートした。
  105. Bugzilla 23057: importC: 無効な構文でdmdがセグメンテーションフォールトを起こす
  106. Bugzilla 23066: importC: 異なる長さの文字列リテラルで char 配列を初期化できない。
  107. Bugzilla 23075: グローバル const 文字列定義は readonly セグメントに置くべきである。
  108. Bugzilla 23077: codegen は、byte/short/... を使用する最適化された操作のための XMM ロード/ストアを生成できない。
  109. Bugzilla 23083: 静的配列r値に対する.tupleofが式を複数回評価する。

DMDコンパイラの機能強化

  1. Bugzilla 3632: floatをfloatに変更してビットごとの比較を行う
  2. Bugzilla 11463: DDocのhtmlに通常のエスケープされたASCII文字を表示するようにした。
  3. Bugzilla 14277: コンパイル時の配列キャストエラー - 醜いエラーレポート
  4. Bugzilla 20853: 静的配列ptrは安全なコードでは使用できないが、許可されるべきである。
  5. Bugzilla 21673: [SIMD][Win64]_mm_move_ssのコードジェネが正しくない。
  6. Bugzilla 22027: inoutはreturnを意味すべきではない
  7. Bugzilla 22541: DIP1000: ref-return-scopeパラメータの曖昧さを解決する。
  8. Bugzilla 22770: C++ヘッダジェネレータが末尾の改行を生成する
  9. Bugzilla 22790: ref-return-scopeは、return-scopeがこの順序で現れない限り、常にref-return, scopeである。
  10. Bugzilla 22820: opIndexを持つ構造体のスライスポインタのエラーメッセージが改善された。
  11. Bugzilla 22821: Dubパッケージはインクリメンタルコンパイルを使用しない
  12. Bugzilla 22861: PGOでコンパイラーをビルドする
  13. Bugzilla 22880: ImportC: __restrict__ __signed__ __asm__ をサポートする。
  14. Bugzilla 22922: BetterC "で空の配列リテラルをサポートする。
  15. Bugzilla 22945: [条件付きコンパイル] 不変バージョンフラグをサポートする。
  16. Bugzilla 22967: [dip1000] 拡張returnセマンティクスのreturn ref推論を行わない
  17. Bugzilla 23021: [dip1000] 純粋なnothrowからreturnスコープを推論する

phobosリグレッションの修正

  1. Bugzilla 20182: [REG 2.086.0] std.trait.ParameterDefaultsがネストした構造体のコピーコンストラクタで失敗する。

Phobosのバグ修正

  1. Bugzilla 13541: std.windows.syserror.sysErrorString() を "nothrow" にすべきである。
  2. Bugzilla 18036: moveFront()のドキュメントで、hasElaborateCopyConstructorによって動作が異なることに触れていなかった。
  3. Bugzilla 22213: Base64:encodeLengthに@nogc 属性がない。
  4. Bugzilla 22503: isValidCodePoint の変更履歴が無効である。
  5. Bugzilla 22771: BigInt divMod が"-0" (負のゼロ) を返すことがある。
  6. Bugzilla 22791: stdsocket.d(790) ハイゼンバグのランダム失敗
  7. Bugzilla 22851: std.sumtype のソースへの参照が後者のドキュメントにない。
  8. Bugzilla 22867: std.utf.decode はエラーにもかかわらずオフセットを変更する。
  9. Bugzilla 22873: の std.format 出力がおかしい。inout
  10. Bugzilla 22901: inout SumTypeを構築できない
  11. Bugzilla 22946: WindowsException ctorが"nothrow"ではない
  12. Bugzilla 22947: sysErrorString は WindowsException ではなく Exception をスローする。
  13. Bugzilla 22998: zlib 1.2.12にアップデートする。

phobosの機能強化

  1. Bugzilla 22736: std.typecons.Tupleタプルのデストラクチャバインドを追加した。
  2. Bugzilla 22798: defaultGetoptPrinterは@safeであるべきだ。

Druntimeリグレッションの修正

  1. Bugzilla 22829: [REG master] 未定義のシンボル stderr が test19933.o ファイルで最初に参照される。
  2. Bugzilla 22834: runnable_cxx/stdint.d:Z15testCppI8Mangleahahahへの未定義の参照

Druntimeのバグ修正

  1. Bugzilla 18117: core.stdc.stdlibのldiv_t構造体 -- intとc_longの期待値比較
  2. Bugzilla 21631: core.atomic.casがconst ifThisでコンパイルに失敗する(ターゲットがポインタの場合)
  3. Bugzilla 22763: BetterCでstd.utfのインポートに失敗する。
  4. Bugzilla 22822: コア.sys.posix.sys.stat:PPCのstat_tバインディングが壊れている。
  5. Bugzilla 22832: オーバーロードされた opCast を持つクラスを破棄できない
  6. Bugzilla 22843: valgrind/callgrindで実行した場合、--DRT-gcopt=fork:1でのフルgc収集でプログラムがハングする。
  7. Bugzilla 23051: OpenBSD:2.100.0-beta.1では、inout属性がreturn属性を意味しなくなったため、ビルドが壊れてしまった。

Druntime の機能強化

  1. Bugzilla 18816: [BetterC] 標準ストリームがリンク不能になった。
  2. Bugzilla 19933: MSVC: -betterCで未定義のstd{in,out,err}がある。
  3. Bugzilla 22766: copyEmplace はコピーコンストラクタと "@disable this()" では動作しない。
  4. Bugzilla 22964: 配列のキャスト・メッセージがぎこちない

dlang.orgのバグ修正

  1. Bugzilla 15437: typeof(someTemplate) == void のドキュメントを修正した。
  2. Bugzilla 22215: @systemコードで期限切れのスタックポインタを返すことは実装ではなく仕様で許可されている
  3. Bugzilla 22795: DMD 2.099.0-beta.1をダウンロードしようとするとアクセスが拒否される。
  4. Bugzilla 22850: [Oh No! Page Not Found] 契約プログラミング" : DMD 2.099.0-beta.1をダウンロードしようとするとアクセスが拒否された。
  5. Bugzilla 22959: C/Dメインのドキュメントが不完全である

インストーラのバグ修正

  1. Bugzilla 22958: [内部] インストーラーがAzure上で古いイメージを使用する

このリリースへの貢献者 (41)

このリリースを可能にしてくれたすべての素晴らしい人々に感謝する。

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