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

変更ログ 2.093.0

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

Download D 2.093.0
2020年07月07日リリース

2.093.0は11の大きな変更と58のBugzillaの問題の修正を含んでいる。 多大なる感謝を 54人の貢献者 に感謝する。

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

コンパイラの変更

  1. いくつかの型に新しいビルトイン__traits(isCopyable, T) を追加する。T

    Phobosのstd.traits.isCopyable 、この新しいビルトイン特質を使用するように変更する。 を使用するように変更することで、メモリ使用量が削減され、ひいてはコンパイラのパフォーマンスが向上する。 型がコピー可能かどうかをチェックするコンパイラのパフォーマンスが向上する。

  2. インターフェースの実装を適切にチェックする

    以前のリリースでは、クラスがインターフェイスのすべてのメソッドを実装しているかどうかを確認するチェックは、コンパイル段階の後半で行われていた。 を実装しているかどうかのチェックは、コンパイル・フェーズの後半で行われていた。そのため コード生成がスキップされた場合( フラグでコンパイルされた場合)、チェックが実行されなかった。 (-o- )。

    このリリースでは、このチェックはコンパイルの初期段階に移された、 -o- フラグが使用されている場合でもエラーが報告される。これにより これは、-o- フラグでしかコンパイルされていないコードがある場合に、いくつかの破損を引き起こす可能性がある。

    フラグが使用されている場合、コンパイラーは以下のコードに対して適切にエラーを報告するようになった。 -o- フラグが使用されている:

    interface Foo
    {
        void foo();
    }
    
    class Bar : Foo
    {
    
    }
    
  3. 共有変数の初期化を許可する。

    共有変数を初期化できるようになった。-preview=nosharedaccess スイッチが使われたときに初期化できるようになった。

    void test()
    {
        shared int x;
        shared int y = 3;
    }
    
  4. vtemplatesスイッチを追加し、テンプレートの統計情報を収集、一覧表示する。

    テンプレートのインスタンス化は多くの時間とメモリーを消費する。 vtemplatesスイッチをコンパイラーに渡すと、コンパイラーはテンプレートの使用状況に関する統計を収集し、表示する、 を渡すと、コンパイラーはコンパイル中のコードでのテンプレート使用に関する統計を収集し、表示する。 を収集し、表示してくれる。

    インスタンス化された各テンプレートについて、そのテンプレートが何回インスタンス化されたか、そしてそのインスタンス化が何回行われたかのリストが表示される。 インスタンス化された各テンプレートについて、それが何回インスタンス化されたかと、そのインスタンス化のうちいくつが一意であるかのリストが表示される。 一意であるかのリストが出力される。

ランタイムの変更

  1. exit_group を追加した。core.sys.linux.unistd

    exit_groupcore.sys.linux.unistd に追加 , プロセス内のすべてのスレッドを終了する。

  2. モジュールcore.sys.darwin.mach.nlistcore.sys.darwin.mach.stab

    これらのモジュールには、Mac OSXの64ビット版 <mach-o/nlish.h><mach-o/stab.h> の64ビット部分へのバインディングが含まれている、 Mach-Oオブジェクトファイルのバイナリデータを検査したいユーザが使用できる。

  3. 非推奨object.selector

    object モジュールにおけるselector の public import は非推奨となった。 代わりにselector を明示的にインポートしてほしい:import core.attribute : selector;

    以下のコードは非推奨となった:

    extern (Objective-C)
    extern class NSObject
    {
        static NSObject alloc() @selector("alloc");
    }
    

    と置き換える:

    import core.attribute : selector;
    
    extern (Objective-C)
    extern class NSObject
    {
        static NSObject alloc() @selector("alloc");
    }
    
  4. メモリ関連のGCオプションをより高い精度で指定できるようになった。

    メモリ関連のGCオプションは、メガバイト単位ではなくバイト単位で保存される。 低メモリ・デバイスでのGCを微調整できる。

    B、K、M、Gのサフィックスを使用する機能が追加された:

    extern(C) __gshared string[] rt_options =
        [ "gcopt=minPoolSize:4K maxPoolSize:2M incPoolSize:8K" ];
    

    接尾辞のない値はメガバイトとして扱われる。

インストーラーの変更

  1. インストールスクリプトがWindowsコマンドプロンプトでも動作するようになった。

    公式Dバージョンマネージャ(install.shdlang.org/install.htmlにある) はPOSIX環境を要求していた。このリリース以前のWindowsでは、これは スクリプトとそれがインストールするコンパイラをMSが提供するPOSIXターミナル・エミュレータの中で実行することを意味していた。 MSYS2やCygwinが提供するようなPOSIXターミナル・エミュレータの中で、スクリプトとそれがインストールするコンパイラを実行することを意味していた。このリリースでは このリリースでは、Windowsのコマンド・プロンプトから直接コンパイラをインストールし、アクティベートできるようになった から直接実行できるようになった。

    MSYS2のインストールがC:\msys64 にあると仮定すると、必要な解凍ツールはWindowsのコマンドプロンプトからインストールできる。 ツールはWindowsのコマンドプロンプトからインストールできる:

    C:\msys64\usr\bin\pacman.exe --sync unzip p7zip
    

    以下のようにすると、dlang.orgから直接スクリプトが起動され、最新のdmdコンパイラがインストールされる。 %USERPROFILE%\dlang フォルダーに最新のdmdコンパイラーをインストールする:

    C:\msys64\usr\bin\curl.exe https://dlang.org/install.sh | \msys64\usr\bin\bash.exe -s
    

    このプロセスの最後に、activate.bat の場所を示すメッセージが表示される、 の場所を示すメッセージが表示され、それを使ってインストールしたコンパイラーをPATH に追加することができる。

    スクリプト自体もローカルにインストールされる。これは他の を使うことができる:

    C:\msys64\usr\bin\bash.exe %USERPROFILE%\dlang\install.sh --help
    

dubの変更点

  1. Dubのルートパッケージのターゲット環境変数が追加された

    環境変数DUB_ROOT_PACKAGE_TARGET_TYPEDUB_ROOT_PACKAGE_TARGET_PATH およびDUB_ROOT_PACKAGE_TARGET_NAME が追加され、公開された。

  2. CLI拡張性の向上

    runDubCommandLineのコードは他の構造体に移動された。新しい CommandLineHandler構造体はCLIのステートとコマンドを管理する。 これにより、DUBコマンドを他のプロジェクトで拡張できるようになった。

    CommandArgsクラスに新しいhasAppArgsappArgs メソッドが追加された。 メソッドが追加された。さらにextractAllRemainingArgs メソッドはすべての未使用の引数とアプリ引数を返す。


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

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

  1. Bugzilla 19550: [REG 2.078] コンパイラーバックエンドが大幅にスローダウンする。
  2. Bugzilla 20014: [REG 2.084] -transition=all, -preview=all, -revert=allは無効である。
  3. Bugzilla 20833: テンプレート・メンバが__traits(getOverloads)の正常な動作を妨げる

DMDコンパイラのバグ

  1. Bugzilla 11292: postblitでconstフィールドを再初期化できない
  2. Bugzilla 12504: 間違った「インデックス範囲をカバーできない」エラーメッセージ
  3. Bugzilla 15235: inline asm: asm_add_exp()のサイレントICE(segfault)
  4. Bugzilla 16971: エラーメッセージ "break is not inside scope(exit) bodies" "continue is not inside scope(exit) bodies" が誤解を招く。
  5. Bugzilla 20183: 構造体リテラルやテンポラリのステートメントスコープを寿命の長い変数に代入する。
  6. Bugzilla 20410: ReplaceTypeUnless は列挙型をその基本型に置き換える。
  7. Bugzilla 20709: 存在しない "型"をインポートする際のセグメンテーションフォールト
  8. Bugzilla 20719: 自己参照構造体定義がスタックオーバーフローを引き起こす
  9. Bugzilla 20747: 非ポインタ所有者のliveトラッキングが行われない
  10. Bugzilla 20771: va_argがポストブリットを持つ構造体に対して機能しない。
  11. Bugzilla 20772: コピーコンストラクタを持つ構造体ではva_argは機能しない。
  12. Bugzilla 20775: 破壊が必要な型を渡すためのコンパイル失敗テストがない。
  13. Bugzilla 20780: ネストされた関数宣言で関数パラメータUDAが受け付けられない。
  14. Bugzilla 20789: is(T:U)が-deを使った非推奨エイリアス呼び出しを除外しない。
  15. Bugzilla 20800: エラー:不正な診断で式を暗黙的に変換できない。
  16. Bugzilla 20824: dmdビルドスクリプトが生成するエラーメッセージの先頭に、非標準の"ERROR:"を付けることができる。
  17. Bugzilla 20825: dmd build.dスクリプトが生成するエラーメッセージのファイル名には、パスの"src/" 部分が欠落する。
  18. Bugzilla 20840: 非推奨のセレクティブインポートからテンプレートを使用した場合、非推奨にならない。
  19. Bugzilla 20842: default/copy ctors が無効な構造体は初期化できない。
  20. Bugzilla 20861: コード生成をスキップした場合、インターフェースの実装がチェックされない
  21. Bugzilla 20903: 長い符号付き除算のオーバーフローでセグメンテーションフォールトが発生する
  22. Bugzilla 20906: 定数フォールディングが短絡すると不必要なゼロ除算エラーが発生する。
  23. Bugzilla 20909: フィールドの前方参照で.offsetofが失敗する
  24. Bugzilla 20915: __traits(allMembers)の結果にカスタムバージョン識別子が含まれる。
  25. Bugzilla 20923: size_t "の再定義がTypeStruct関数に影響を与えている。
  26. Bugzilla 20989: array.ptrをチェックすると-checkaction=contextで安全性エラーが発生する

DMDコンパイラの機能強化

  1. Bugzilla 20791: extern(C++) は末尾のカンマを許容すべきである。
  2. Bugzilla 20796: 保護属性package(x.y)がx/y/package.dで宣言されたモジュールx.yの祖先パッケージの1つにバインドされない。

phobosのリグレッション

  1. Bugzilla 20943: std.algorithm.setops.cartesianProductがpopFrontを持つ範囲に対して失敗する

phobosのバグ

  1. Bugzilla 9298: Win64用に実装されていないstd.math関数がある。
  2. Bugzilla 20426: void[N]を使ったdoesPointToが失敗する
  3. Bugzilla 20751: ref述語パラメータを持つSortedRangeが失敗する
  4. Bugzilla 20782: std.conv.toで文字列をconst列挙型に変換できない。
  5. Bugzilla 20783: std.string.lastIndexOfがCTFEで正しく動作しない
  6. Bugzilla 20836: std.math:宣言の順序を最も見やすいものから最も見にくいものに変更する
  7. Bugzilla 20850: タプルの列挙型を代入できない。
  8. Bugzilla 20874: std.json.assignに'@safe'と'pure'が必要である。
  9. Bugzilla 20928: オーバーロードされたopIndexがMapResultを混乱させる

phobos が強化された

  1. Bugzilla 19525: Durationはゼロ引数のstd.algorithm.sumでは使えない。
  2. Bugzilla 20496: chunkbyはref述語をサポートすべきである。
  3. Bugzilla 20869: std.algorithm.mutation : move は"@trusted"を信頼しすぎている。opPostMove
  4. Bugzilla 20887: 非配列範囲に対するstd.digest.digest!(Hash, Range)の速度を向上させる

Druntimeのバグ

  1. Bugzilla 18011: core.sys.conditionを共有として使用できない
  2. Bugzilla 20760: checkaction=contextが浮動小数点数を正しく表示しない。
  3. Bugzilla 20763: checkaction=contextがポインタをフォーマットしない。
  4. Bugzilla 20767: [DIP1014] __move_post_blt は構造体のフィールドに対してのみ再帰的に呼び出されなければならない。
  5. Bugzilla 20768: [DIP1014] __move_post_blt は、構造体を要素とする静的配列、または構造体を再帰的に含む静的配列に対して再帰的に呼び出されなければならない。
  6. Bugzilla 20852: FreeBSD で core.sys.posix.sys.wait の定義が見つからない。

Druntime の機能強化

  1. Bugzilla 20746: ガベージコレクタtreapのLCGを48ビットから64ビットに変更した。
  2. Bugzilla 20787: モジュールcore.sys.darwin.sys.attrを追加し、getattrlist、setattrlist、searchfs、および関連する定義を追加した。
  3. Bugzilla 20844: DMDコンパイラは、'cas'コールを見た後、データのアライメントを行うべきである。
  4. Bugzilla 20859: タイムアウト時間を取るcore.sync.rwmutex.ReadWriteMutex.Reader/Writer.tryLockのオーバーロードを追加した。

dlang.orgの機能強化

  1. Bugzilla 20882: ドキュメントの古い例(std.stdio)を修正した。

ツールの強化

  1. Bugzilla 13345: rdmd --evalが引数をサポートしていない。

インストーラーのバグ

  1. Bugzilla 20826: CI の破損: create_dmd_release が完全な dmd repo をコピーしようとする。

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

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

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