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

変更履歴 2.080.0

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

Download D 2.080.0
2018年5月01日リリース


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

コンパイラの変更

  1. クラスのアロケータとデアロケータが非推奨になった。

    クラス・アロケータとデアロケータは何年も前から非推奨になる予定だった。 このリリースから、以下のコードは非推奨メッセージを発するようになる。

    class C
    {
        new(size_t size)         // 非推奨メッセージ
        {
            return malloc(size);
        }
    
        delete(void* obj)        // 非推奨メッセージ
        {
            free(obj);
        }
    }
    

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

    クラス・アロケータ/ディールケータには多くの選択肢がある。その中には、汎用的な std.experimental.allocator.makestd.experimental.allocator.disposeallocatorパッケージのものがある。他の選択肢については、DBlogのメモリ割り当てに関する最近の記事や、D Wikiのメモリ管理の記事を参照のこと。

    以下の例にあるように、ユーザーはGC割り当てを無効にするためにアロケータを活用している:

    class C
    {
        @disable new(size_t size);
    }
    
    void main()
    {
        auto c = new C();  // エラー: アロケータ`new`は`@disable`でアノテーションされているため、呼び出し可能ではない
    }
    

    このイディオムは残るが、今回のリリースでsize_t 引数が不要になった。 つまり、このリリースから以下の構文も許されるようになった:

    class C
    {
        @disable new();
    }
    
    void main()
    {
        auto c = new C();  // エラー: アロケータ`new`は`@disable`でアノテーションされているため、呼び出し可能ではない
    }
    
  2. コンストラクタ内での不変のフィールドの二重初期化を非推奨とする。

    コンストラクタ・スコープの内部では、集約宣言(クラス/構造体)メンバへの代入は、最初の代入を初期化とみなして行われる。 メンバへの代入は、最初の代入を初期化とみなし、それ以降の代入を最初に構築されたオブジェクトの変更とみなすことによって行われる。 それ以降の代入は、最初に構築されたオブジェクトの修正とみなす。 const/immutable フィールドの場合、初期化はコンストラクタ内で受け入れられる、 しかし、それ以降の変更は受け付けられない。例:

    struct A
    {
        int a;
        immutable int b;
        this(int a, int b)
        {
            this.a = a;
            this.b = b;
    
            this.a = 7; // OK、aはミュータブルである
            this.b = 9; // エラー: 不変のフィールドbが複数回初期化された
        }
    }
    

    しかし、Bugzilla 18719、このルールは、コンストラクタ・スコープ内で別のコンストラクタが呼び出されている場合には適用されないことがわかった。 コンストラクタ・スコープの中に別のコンストラクタへの呼び出しがある場合、このルールは適用されない:

    struct A
    {
        immmutable int a;
        this()
        {
            this(42);
            this.a = 5;  // 不変のフィールドの2回目の初期化
        }
    
        this(int a)
        {
            this.a = a;
        }
    }
    

    このパッチを適用する前、上記のコードは間違ってコンパイルされていた。 immutable aの初期化を受け入れる。このパッチを適用すると、this.a = 5 。 は、a が複数回初期化されているという非推奨の警告を出す。

  3. 18736号 - caseラベルの後にコンストラクタ呼び出しが許可される

    委任コンストラクタ呼び出しは、ラベルの後では許可されない、 しかし、ケース・ラベルやデフォルト・ラベルもラベルとしてカウントすべきである。

    class A
    {
        this(char c) { }
    
        this(int i)
        {
            switch (i)
            {
                case 1:  break;
                default: break;
            }
            this('c'); // エラーが発生した
        }
    }
    

    これは、コンパイラが各フィールドが正確に一度だけ初期化されることを保証するために必要である。 フィールドが正確に一度だけ初期化されることをコンパイラが保証できるようにするためである。上記のようなコードを のようなコードをコンパイラーに渡すには、これをif-thenシーケンスに置き換える。

  4. 修正 Issue 5227 - X ^^ コンパイル時のFP

    pow 演算子^^ が CTFE で使用できるようになった。

    CTFE で使用できる関数に、これらの std.math 関数を追加する:

    ラウンド フロア 天井 切り捨て ログ log2 log10 pow expm1 exp2 fmin fmax コピー記号 fma

  5. 追加 __traits(isReturnOnStack, func)

    関数の戻り値がスタックに置かれるかどうかを決定する、 またはレジスタ経由で返されるかを決定する。 詳細はisReturnOnStackを参照のこと。

  6. Objective-Cクラス(静的)メソッドの呼び出しがサポートされた。

    これまでは、Objective-Cクラス・メソッドを呼び出すには、Objective-Cランタイムに明示的に呼び出す必要があった。 を呼び出す必要があった。次のコードは旧来の方法の例である。 の例である:

    extern (C) Class objc_lookUpClass(in char* name);
    
    extern (Objective-C)
    interface Class
    {
        NSObject alloc() @selector("alloc");
    }
    
    extern (Objective-C)
    interface NSObject
    {
        NSObject init() @selector("init");
    }
    
    void main()
    {
        auto cls = objc_lookUpClass("NSObject");
        auto o = cls.alloc().init();
    }
    

    上記のコードは次のように置き換えることができる:

    extern (Objective-C)
    interface NSObject
    {
        static NSObject alloc() @selector("alloc");
        NSObject init() @selector("init");
    }
    
    void main()
    {
        auto o = NSObject.alloc().init();
    }
    

    メソッド宣言のstatic

  7. const/immutable/shared postblitの使用を非推奨とする。

    このパッチが適用される前は、postblitがconst/immutable/ と宣言されていた。shared が宣言されていた場合、コンパイラはその宣言を受け入れたが constを除いて、ポストブリットをうまく呼び出す方法はなかった。 を除いて、postblitを正しく呼び出すことはできなかった。たとえ const posblitを呼び出すことは可能だが、新しくコピーされた構造体のフィールドを変更する方法はない。 のフィールドを変更する方法はない:

    struct S
    {
        int n
        this(this) const
        {
            ++n;   // エラー: constメソッド内でthis.nを変更できない
        }
    }
    
    void main()
    {
        S a;
        auto a2 = a;
    }
    

    このリリースでは、postblitの署名にconst/immutable/shared が含まれている場合、非推奨メッセージが発せられる。 を含む場合、非推奨メッセージが発行される。

  8. shared 変数に対する read-modify-write 操作の非推奨は終了した。

    shared 変数に対する read-modify-write 操作は許されない:

    shared int i;
    i++; // エラー: 共有変数に対して、読み取り-変更-書き込みの操作は許可されていない
    

    使用する core.atomic.atomicOpで代用する:

    import core.atomic : atomicOp;
    shared int i;
    atomicOp!"+="(i, 1);
    
  9. switch 変数の宣言をスキップするケースの非推奨は終了した。

    他のswitch ケースで宣言された変数の使用はエラーとなる。

    int i = 2;
    switch (i)
    {
        case 1:
        {
            int j;
        case 2:
            j++;
            j.writeln; // バグ: jが初期化されず、例えば-321532879と表示される
            break;
        }
        default:
            break;
    }
    

    この動作が必要な場合は、void 初期化を使って明示的に要求することができる:

    int i = 2;
    switch (i)
    {
        case 1:
        {
            int j = void;
        case 2:
            j = 2;
            j.writeln;
            break;
        }
        default:
            break;
    }
    

ライブラリの変更

  1. std.typecons.BitFlags opDispatchベースのプロパティアクセスに対応した。

    std.typecons.BitFlagsで列挙型メンバを直接設定、テストできるように拡張された。 BitFlags & を直接設定しテストできるように拡張された。

    enum Features
    {
        fast = 1 << 0,
        size = 1 << 1,
    }
    
    void run(BitFlags!Features features)
    {
        // 取得
        if (features.fast && !features.size) {} // new new new
        if ((features & Features.fast) && !(features & Features.size)) {} // old old old
        // セット
        features.fast = true; // new new new
        features.fast = false; // new new new
        features.fast |= Features.fast; // old old old
        features.fast &= ~Features.fast; // old old old
    }
    

    これは、安全でないBitFlags 、プロパティのgetアクセスが正確に一致するかどうかをテストする場合にも機能する。 BitFlags をテストする。 同様に、プロパティのセットアクセスは、安全でないBitFlags の組み合わせの全ビットをクリアまたはセットする。

    enum Features
    {
        fast = 1 << 0,
        size = 1 << 1,
        combined = fast | size,
    }
    
    void run(BitFlags!(Features, Yes.unsafe) features)
    {
        // 取得
        if (features.combined) {} // new new new
        if ((features & Features.combined) == BitFlags!(Features, Yes.unsafe)(Features.combined)) {} // old old old
        // セット
        features.combined = true; // new new new
        features.combined = false; // new new new
        features.combined |= Features.combined; // old old old
        features.combined &= ~Features.combined; // old old old
    }
    
  2. std.math.rndtonlは非推奨となった。

    std.math.rndtonlを使用している場合のみ使用可能な丸め関数である。 Digital MarsCランタイムをWindows上で使用する場合にのみ使用できる丸め関数である。この関数はクロスプラットフォームではないため、非推奨となった。 バージョン2.089で削除される予定である。この関数は std.math.roundを使用してほしい。

  3. 通常のBitmappedBlockのスレッドセーフ版としてSharedBitmappedBlockを追加した。

    この新しい std.experimental.allocator.building_blocks.bitmapped_block.SharedBitmappedBlockおよびそのシングルスレッド版は、Yes.multiblock またはNo.multiblock でインスタンス化できるようになった。 Yes.multiblock (デフォルトの動作)でインスタンス化された場合、各アロケーションは任意のブロック数を返すことができる。 しかし、No.multiblock では、どのアロケーションリクエストもブロックサイズを超えることはできない。これにより、シングルスレッド環境でもマルチスレッド環境でも、パフォーマンスが向上する。

    // 'BitmappedBlock'は暗黙的にYes.multiblockでインスタンス化される
    auto a = BitmappedBlock!(blockSize, 8, Mallocator, Yes.multiblock)(numBlocks * blockSize);
    
    // Yes.multiblockでインスタンス化され、一度に複数のブロックを割り当てることができる
    void[] buf = a.allocate(2 * blockSize);
    assert(buf.length == 2 * blockSize);
    assert(a.deallocate(buf));
    
    // No.multiblockで'BitmappedBlock'をインスタンス化する
    auto a = BitmappedBlock!(blockSize, 8, Mallocator, No.multiblock)(1024 * blockSize);
    
    // No.multiblockでインスタンス化されるので、最大でもブロック・サイズしか割り当てられない
    void[] buf = a.allocate(blockSize + 1);
    assert(buf is null);
    

    共有の場合も同じルールが適用され、BitmappedBlockSharedBitmappedBlock に置き換えるだけでよい。

  4. 新しいアロケータ、AlignedBlockList とそのスレッドセーフバージョンを実装した。SharedAlignedBlockList

    std.experimental.allocator.building_blocks.aligned_block_list.AlignedBlockListは アロケータのリストであり、一定の時間で割り当てを解除できる。 アロケーションは理論的には線形探索時間で処理されるが、deallocate の呼び出しにはΟ( )時間がかかる。 Ο(1)時間がかかる。これは、アライメントされたアロケーショ ンを使用するためである。ParentAllocatoralignedAllocate を実装しなければならない。

    std.experimental.allocator.building_blocks.aligned_block_list.SharedAlignedBlockListを実装しなければならない。 シングルスレッド版と同じセマンティクスを持つ。 を付けなければならない。

  5. std.exception.enforceEx は非推奨となりstd.exception.enforce

    2.079で std.exception.enforceの完全なスーパーセットとなった。 std.exception.enforceEx

    是正措置

    交換する:

    import std.exception;
    alias enf = enforceEx!Exception;
    assertNotThrown(enf(true));
    assertThrown(enf(false, "blah"));
    

    とのことだ:

    import std.exception;
    alias enf = enforce!Exception;
    assertNotThrown(enf(true));
    assertThrown(enf(false, "blah"));
    
  6. 小数点以下のない浮動小数点数の桁数を固定する。

    std.format.formatValue出力文字列の桁を正しくグループ化する で指定されたn文字ごとにグループ区切り文字(,)を挿入することで、出力文字列内の桁を正しくグループ化するようになった。 セパレータ 文法規則で指定されたn文字ごとにグループ区切り文字(,)を挿入することで、出力文字列の桁を正しくグループ化するようになった。 で指定された小数点以下の精度がゼロの場合に、浮動小数点数の

    この修正以前のPhobosでは、ゼロ精度(小数点以下の桁がない)でフォーマットされた浮動小数点数に対して、グループセパレータがまったく挿入されなかった。 の場合、浮動小数点数にはグループ区切り記号が挿入されない、 にかかわらず、浮動小数点数にはグループ区切りが挿入されない。

    import std.format;
    
    assert(format("%,3.2f", 1172.009) == "1,172.01");
    assert(format("%,3.0f", 1172.009) == "1,172");
    assert(format("%#,3.4f", 1303.2508) == "1,303.250,8");
    assert(format("%#,3.0f", 1303.2508) == "1,303.");
    
    // この修正前のオリジナルの(バギーな)動作
    //assert(format("%,3.0f", 1303.2508) == "1303");
    //assert(format("%,3.0f", 1303.) == "1303");
    
    // この修正前の(正しい)動作
    //assert(format("%,3.1f", 1303.2508) == "1,303.3");
    //assert(format("%,3.2f", 1303.) == "1,303.00");
    //assert(format("%,3f", 1303.) == "1,303.000,000");
    
  7. std.functional.binaryReverseArgs が推奨されなくなった。std.functional.reverseArgs

    std.functional.reverseArgsの完全なスーパーセットである std.functional.binaryReverseArgs.

    正しい処置:binaryReverseArgsreverseArgs に置き換える。

  8. apply が に追加された。std.typecons

    apply に対する操作である。 std.typecons.Nullable値は、Nullable を "解凍"し、何らかの処理を実行する。 テンプレート・パラメータとして渡される)処理を実行し、必要に応じて結果を別のNullable にパックする。 最初のNullablenull の場合、結果のNullablenull であり、"関数"は呼び出されない。 は呼び出されない。

    Nullable!int n;
    alias square = i => i * i;
    n = n.apply!square; // isNullの場合は何もしない
    assert(n.isNull);
    n = 2;
    assert(n.apply!square.get == 4);
    

ツールの変更

  1. rdmdがmakefileのシェルとして使えるようになった

    gnu make(3.82以降)で、rdmdがmakefileで使えるようになった。 これは、SHELL と .SHELLFLAGS をそれぞれ /usr/bin/rdmd と --eval に設定することで実現できる。

    .ONESHELL:
    SHELL = /usr/bin/rdmd
    .SHELLFLAGS = --eval
    hello.txt:
    	import std.file;
    	write("$@","hello world\n");
    

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

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

  1. Bugzilla 16243: Clangとのインターフェイス" : 空の構造体で間違ったC++の引数を渡す。
  2. Bugzilla 18197: [REG2.073] 内部エラー: backend cgcod.c 1659
  3. Bugzilla 18489: [REG2.073]内部エラー: dmd/backend/cgcod.c 1688

DMDコンパイラのバグ

  1. Bugzilla 5212: 型安全な可変長引数関数のエスケープ解析ができない。
  2. Bugzilla 5227: X ^^ コンパイル時のFP
  3. Bugzilla 9433: 非推奨削除
  4. Bugzilla 12486: 構造体を返す関数はその結果のenum がアクセスされた場合は呼び出されない。
  5. Bugzilla 14997: エラーメッセージに__ctorが含まれる
  6. Bugzilla 15653: IFTIが不変パラメータで失敗する
  7. Bugzilla 15660: 純粋関数と変更可能な参照引数でimmutableを解除する。
  8. Bugzilla 16107: [ICE] - 内部エラー: backend/cgcod.c 2297
  9. Bugzilla 16189: オプティマイザのバグ、簡単なテストケース付き
  10. Bugzilla 16555: ネストされた関数から複数のパラメータを持つ外部関数を呼び出すとスタックが破壊される。
  11. Bugzilla 16578: 偽の非推奨 - switch が変数の宣言をスキップする
  12. Bugzilla 17284: テンプレート化された関数の属性推論が、共用体の重複するポインタフィールドへのアクセスに対して@safeを誤って推論する。
  13. Bugzilla 17423: メンバ関数のthis へのポインタ代入が考慮されていない。
  14. Bugzilla 17874: 浮動小数点数を含む構造体の静的配列で構造体を構築する際にセグメンテーションフォールトが発生する。
  15. Bugzilla 17892: テンプレート化された構造体に対して -dip1000 によるスコープ解析が失敗する。
  16. Bugzilla 17918: [Reg 2.072] 基本クラスに不明なシンボルがあるICE
  17. Bugzilla 17959: [DIP1000] スコープデリゲートを非スコープメンバに格納できる
  18. Bugzilla 17991: モジュールのないインポートの ICE
  19. Bugzilla 18000: [スコープ] 自動生成された opAssign はスコープを意識しない
  20. Bugzilla 18034: SIMD最適化の問題
  21. Bugzilla 18130: ゼロ長のout 配列パラメータでの ICE
  22. Bugzilla 18199: 構造体イニシャライザにおけるラムダのエラー
  23. Bugzilla 18242: DMD Segmentation fault.
  24. Bugzilla 18282: [Scope][DIP1000]ローカル変数からscope 変数への代入がコンパイラによって認識されない。
  25. Bugzilla 18459: 静的配列のABIが構造体のABIと一致しない。
  26. Bugzilla 18461: codegenのバグ - OPbt式とあいまいなシンボルへの代入
  27. Bugzilla 18474: 共有構造体でPostblitが機能しない。
  28. Bugzilla 18484: [dip1000] サブタイプは暗黙のキャストで参照をエスケープできる
  29. Bugzilla 18504: synchronizedのアサートが終了時にSIGILLでクラッシュする
  30. Bugzilla 18505: 削除の非推奨メッセージが誤解を招く
  31. Bugzilla 18534: Oでコンパイルした場合の?
  32. Bugzilla 18553: インラインアセンブラ:CR2、CR3制御レジスタは64ビットコードでは利用できない
  33. Bugzilla 18554: private を無視する は、@safe コードでは受け入れるべきではない。tupleof
  34. Bugzilla 18568: 部分的に重複する代入は未定義の動作をするが、@safeコードでは受け入れられる
  35. Bugzilla 18575: メンバ関数からデリゲートを作成すると安全でないコードになる可能性がある。
  36. Bugzilla 18576: コンパイラは自動リターンでRVOを行わない
  37. Bugzilla 18597: 安全でない非整列ポインタのエラーが増える
  38. Bugzilla 18607: タプルforeachでラベル付きcontinueを使用すると、ピュアと@safeが壊れることがある
  39. Bugzilla 18644: [dip1000] 外部ローカルのエスケープが検出されない
  40. Bugzilla 18661: 自動refとreturn属性の推論
  41. Bugzilla 18708: コンストラクタのフロー解析がif, ||, &&に対して正しく行われない。
  42. Bugzilla 18719: フォワーディングコンストラクタを使用している場合、メンバに対してコンストラクタが二重に呼び出される
  43. Bugzilla 18736: ケース・ラベルの後にコンストラクタ呼び出しを許可する
  44. Bugzilla 18737: assert(0)はコンストラクタのフロー解析のリーフであるべきである。
  45. Bugzilla 18753: チャンクバイのコンパイルエラーはICEが原因である。
  46. Bugzilla 18762: DMDは__stdin.oにユニークなパス/ファイル名を使用すべきである。

DMDコンパイラの機能強化

  1. Bugzilla 15624: safeと@systemのバリアントを持つopApplyはforeach構文では使えない。
  2. Bugzilla 16037: スコープ変数へのデリゲートの代入は、クロージャを確保すべきではない。
  3. Bugzilla 17784: [スコープ][DIP1000] new-expressionでローカルをエスケープする際のエラーメッセージが混乱する
  4. Bugzilla 18417: コンストラクタと不変のポストブリットコンストラクタを非合法にする。
  5. Bugzilla 18460: クラスのインスタンス化で'new'が見つからない場合のエラーメッセージの改善
  6. Bugzilla 18503: 誤ったポストブリットのエラーメッセージを混乱させる
  7. Bugzilla 18551: doesn'tオーバーライド関数 "のヒントを改善した。
  8. Bugzilla 18574: 複数のクラスから継承しようとしたときの不明確なエラーメッセージ
  9. Bugzilla 18578: EnumBaseType.initの代わりに最初の列挙型値に0を代入した。
  10. Bugzilla 18591: DMDは "ミックスイン"テンプレート宣言へのアクセスを許可すべきである。
  11. Bugzilla 18694: フィールドを持たないstatic/global構造体を使用する純粋関数はコンパイルをパスすべきである。
  12. Bugzilla 18767: __xtoHashメンバごとのハッシュはメンバのハッシュを合計するだけであってはならない

phobosのリグレッション

  1. Bugzilla 17961: std.uni が -unittest -dip1000 でコンパイルされない。
  2. Bugzilla 18800: [REG2.080.0-beta.1] インダイレクトを含むペイロードでArray.lengthセッターがセグメンテーションエラーになる。

phobosのバグ

  1. Bugzilla 7879: const toString()でないクラスのフォーマット
  2. Bugzilla 13642: std.container.Array:長さの変更がGCに通知されずに再割り当てされる
  3. Bugzilla 15768: std.stdio.Fileがstdout/err/inの__gsharedセマンティクスをサポートしていない。
  4. Bugzilla 17862: std.random.XorshiftEngine.minがビット==32のときに間違っている
  5. Bugzilla 17982: algorithm.searching.extremum で const(Class) をサポートした。
  6. Bugzilla 18133: BitArrayコンストラクタのドキュメントが不十分である。
  7. Bugzilla 18134: BitArray >>= broken when length % (8 * size_t.sizeof) == 0.
  8. Bugzilla 18452: std.zipには2GBのサイズ制限がある
  9. Bugzilla 18524: std.range.Zip.moveBackはmoveFrontの代わりに実行される
  10. Bugzilla 18579: 小数点以下0桁でフォーマットされた浮動小数点数のグループセパレータがない。
  11. Bugzilla 18615: Rebindable!AはクラスAのopEqualsを使用しない(代わりにa is bを返す)。
  12. Bugzilla 18634: std.container.rbtreeがデリゲートコンパレータで動作しない
  13. Bugzilla 18663: std.random.isSeedableに偽陽性がある
  14. Bugzilla 18669: isNestedFunction はパラメータが関数かどうかをチェックしない。
  15. Bugzilla 18689: std.formatは不正な仕様や引数に対して常にFormatExceptionをスローすべきである。
  16. Bugzilla 18704: std/datetime/stopwatch.d(452) 自動テスターのアサーション失敗
  17. Bugzilla 18714: Phobos は localtime を呼び出すが,これはスレッドセーフではない

Phobos の機能強化

  1. Bugzilla 4591: std.typecons.Tuplesの連結
  2. Bugzilla 8341: topN(zip())も?
  3. Bugzilla 10828: datetime toString関数はシンクを受け付けるべきである。
  4. Bugzilla 13880: nothrow @nogc std.algorithm.reduce on fixed-size arrays.
  5. Bugzilla 14637: 配列操作はタプルで動くべきだ
  6. Bugzilla 18158: std.file.getcwdは"@safe"で使えるようにすべきだ。
  7. Bugzilla 18166: std.array.replaceをdstringに対して@safeで使えるようにする。
  8. Bugzilla 18168: 出力範囲のstd.base64.encodeは@safeで使えるはずだ。
  9. Bugzilla 18174: std.math.equalsDigitは@safeで使えるはずだ。
  10. Bugzilla 18182: std.uriは@safeで使えるはずだ。
  11. Bugzilla 18223: std.experimental.allocatorのuninitializedFillDefaultがmemsetを使えるようになった。
  12. Bugzilla 18438: hasStaticMember は T* で失敗するが、hasMember はパスする。
  13. Bugzilla 18501: randomShuffle と partialShuffle は入力引数を返すべきだ。
  14. Bugzilla 18596: std.random.un unpredictableSeedはMinstdRand0よりも良いものを使うべきだ。
  15. Bugzilla 18600: matchFirstの繰り返し呼び出しに対するRegexのパフォーマンス向上
  16. Bugzilla 18638: std.range.zipのメインオーバーライドは、@nogcとnothrowを推論することができる。

Druntimeのリグレッション

  1. Bugzilla 18652: hashOfの例がコンパイルされない。

Druntimeのバグ

  1. Bugzilla 18482: wincrypt関数は@nogcnothrow
  2. Bugzilla 18536: m32mscoffでビルドするとスタックトレースがおかしくなる
  3. Bugzilla 18537: カバレッジオプションに絶対パスを渡せない
  4. Bugzilla 18547: Win32: ファイバーで例外をスローするとアプリケーションがクラッシュする

dlang.orgのバグ

  1. Bugzilla 18602: [Better C] ドキュメント
  2. Bugzilla 18603: 不正な命令Mac OS 10.7.5 Leopard の 4
  3. Bugzilla 18702: FAQ項目「C++になくてDにあるものは何ですか」比較リンク (https://dlang.org/articles/comparison.html) が404を返す。
  4. Bugzilla 18709: DDOC_AUTO_PSYMBOL とその仲間は間違っている。
  5. Bugzilla 18747: [構造体,共用体" : DDOC_AUTO_PSYMBOL and friends are wrong : DDOC_AUTO_PSYMBOL and friends are wrong.]

インストーラのバグ

  1. Bugzilla 18649: Ubuntu 18.04 の curl は libcurl4 に依存し、.deb インストーラは libcurl3 に依存する。

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

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

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