変更ログ 2.103.0
Download D 2.103.0
リリース 2023年04月01日
コンパイラの変更
ライブラリーの変更
D 2.103.0におけるすべてのバグ修正と機能強化のリスト。
コンパイラの変更
- ImportCに__check(assign-式)を追加した。
Cのコードは通常、アサートのサポートを追加するために#include <assert.h> 。D言語にはアサートが組み込まれている。 プリプロセッサに依存しないので、より便利である。この拡張機能は
__check(assign-expression)
をImportCに対する式として使うことができる。コンパイラ・スイッチ -checkaction=C は、Cのassertマクロと同じ動作をする。 Cのassertマクロと同じ動作をする。コンパイラー・スイッチ -releaseがスローされると、__check'は無視される。 __check 式は、#include に依存しないCプログラムを書くのに便利である。
__assert は、いくつかのC .hファイルとの衝突のため使用されていない。
- クラスに対するこのエイリアスは非推奨である。
クラスに対してalias this を使うことは明確に規定されておらず、そのような状況でのルックアップ・ルールも定義されていない。その結果、alias this をクラスと組み合わせて使用すると、さまざまなエラーやクラッシュが発生する可能性がある。このリリースから、クラスに対するalias this は非推奨となる。その代わりとして、ゲッター/セッター・メソッドをalias this の代わりに使うことができる:
static foreach(member, __traits(allMembers, LeClass)) mixin("ref auto " ~ member() { return $field_name." ~ member ~ "; }");
- -preview=dip25 デフォルトで有効になっている
DIP25違反の非推奨警告は2.092から有効になっている。 このリリースから、-revert=dip25 スイッチを使用しない限り、エラーを報告するようになった。 このスイッチ(またはそのショートバージョン-dip25 )の使用は非推奨となった。
ref int escapeRef(ref int x) {return x;} // 以前は: // 非推奨: returning `x` escapes a reference to parameter `x` // perhaps annotate the parameter with `return` // // `-revert=dip25`を使わない限りエラーになる
- dllimport の代わりに dllexport を生成するようになった。
dllimportにするには、次のようにする:
export extern int a;
- traits(isVirtualFunction) とtraits(getVirtualFunctions)
このリリースまで、Dにはtraits(isVirtualFunction) とtraits(isVirtualMethod) (と、それに対応するtraits(get...) )の両方があった。この2つの違いは isVirtualFunction 、何もオーバーライドしていないfinal メソッドに対してtrueを返すことである。これは 他の関数をオーバーライドしないfinal "関数"は仮想化できない。 この場合、isVirtualMethod は正しくfalse を返す。
このリリースから、traits(isVirtualFunction) とtraits(getVirtualFunctions) の両方が非推奨である。もしtraits(isVirtualFunction) の動作が必要であれば、次のようにして実現できる。 traits(isVirtualMethod, f) || (traits(isFinalFunction, f) && !traits(isOverrideFunction, f)).
ライブラリの変更
- Unicodeの書記素ウォーキングがUnicodeバージョン15に準拠するように更新された。
これまで、graphemeStride 、byGrapheme 、decodeGrapheme 。 std.uni の関数は、以前のUnicode標準から廃止されたルールを使用していた。
このリリースは、Unicodeバージョン15に対応した最新の書記素分解ルールを提供する。 つまり、"phobos"関数は拡張された絵文字シーケンスとプリペンド文字を認識できるようになった。 プリペンド文字を認識するようになった。
- のstatic assertメッセージが改善された。std.algorithm.iteration.joiner
これまでfilter 、渡されたData が使えるかどうかをチェックするためにテンプレート制約を使っていた。もしそうでない場合、その原因を突き止めるのは非常に面倒だった。
テンプレート制約はシンボル・テンプレート関数をオーバーロードするために使用されるものではない。 関数をオーバーロードするために使用されないので、制約は表現力豊かなエラーメッセージを持つstatic assertに移行する。 メッセージに移行する。
- のstatic assertメッセージを改善した。std.algorithm.sorting.sort
これまでsort 、渡されたRange が使えるかどうかをチェックするためにテンプレート制約を使っていた。もしそうでなかった場合、その原因を突き止めるのは非常に面倒だった。
テンプレート制約はシンボル・テンプレート関数をオーバーロードするために使用されるものではない。 関数をオーバーロードするために使用されないので、制約は表現力豊かなエラーメッセージを持つstatic assertに移行する。 メッセージに移行する。
dubの変更
- --color 引数にauto,never を指定できるようになった、always
以前のautomatic,on,off の値はまだサポートされているが、ドキュメント化されていない。 文書化されていない。このようなプログラムではほとんど使われていないからだ。なぜなら、このようなプログラムではほとんど使われていないからだ。 特に他のLinuxツールとの一貫性を保つために、我々は実装し、切り替えた。 デフォルトを広く使われているauto,never,always の値に切り替えた。
D 2.103.0におけるすべてのバグ修正と機能強化のリスト:
DMDコンパイラのリグレッション修正
- Bugzilla 15985: [REG2.068/2.069] -debug付きでコンパイルしないとコードがリンクされない。
- Bugzilla 18472: [Reg 2.078] BetterC: コンパイル時にフォーマットを使用できない。
- Bugzilla 21772: [REG2.069] 配列リテラル内の連続した異なる符号のdouble.nanは前のnanの符号を取る(floatとrealも同じ)
- Bugzilla 22039: デフォルトパラメーターの無限再帰に関するICE
- Bugzilla 23688: FTBFS: error: '式'を'式*'に変換できない。
- Bugzilla 23710: [REGマスター] 'if (false)'ブロック内の到達可能なコードがコード生成されなくなった。
- Bugzilla 23758: [REG 2.103] C++からNewExp::argprefixへのアクセスでセグメンテーションエラーが発生した。
- Bugzilla 23799: BetterCによるリンクエラー
DMDコンパイラのバグ修正
- Bugzilla 10886: property関数のTypeofで "間違ったthis"型エラーが発生する。
- Bugzilla 11051: リリース・モードと非リリース・モードの両方で、最終スイッチの大文字と小文字が一致しない場合、スローが発生する。
- Bugzilla 16098: N > プラットフォームのスタック・アラインメントの場合、align(N) がスタック変数に対して尊重されない。
- Bugzilla 16213: テンプレート引数に静的配列$を指定した場合のCTFE内部エラー
- Bugzilla 20781: dip1021ルールをチェックすることなく@live関数を呼び出すことができる。
- Bugzilla 20908: -preview=nosharedaccessは集合体に対してゼロ初期化を要求する
- Bugzilla 21288: この関数のエイリアスのコンテキストポインタが正しくない。
- Bugzilla 21492: BetterC: if(__ctfe)でガードされたコードに対してTypeInfoが生成される。
- Bugzilla 21821: オプティマイザは不変量が変更されないと仮定しているが、"@system"コードでは変更される可能性がある。
- Bugzilla 22916: [dip1000] ref returnのコピーはスコープ変数として扱われる
- Bugzilla 23145: スコープの新しい変数のスタック確保は "@safe" を破る
- Bugzilla 23195: POD以外の小さな引数に対するWin64関数ABIバグ
- Bugzilla 23261: druntime core.std.attribute.Tagged1_2コンストラクタは安全ではない
- Bugzilla 23387: ImportC:2つのCファイルで定義された同一の構造体により、macOSでは.initシンボルが重複してしまう。
- Bugzilla 23407: ImportC: 変数宣言の一部としての関数ローカル構造体定義がグローバル定義をシャドウしない。
- Bugzilla 23545: export int a; は dllimport ではなく dllexport を生成すべきである。
- Bugzilla 23583: ImportC: 未定義の識別子 __builtin___memmove_chk がある。
- Bugzilla 23584: ImportC: __builtin_bit_cast がサポートされていない。
- Bugzilla 23598: 静的ifと同名テンプレートの循環参照バグ
- Bugzilla 23606: CTFEとgcによるBetterC
- Bugzilla 23616: ImportC: clang __has_feature と __has_extension が認識されない。
- Bugzilla 23617: traits(child)のコンパイルでエラーが出る。
- Bugzilla 23622: ImportC #definesが宣言と衝突する。
- Bugzilla 23635: case はstring または積分定数でなければならない。x" ではない。
- Bugzilla 23639: preview=nosharedaccessでの共有へのキャストは許可されない。
- Bugzilla 23650: typeidを__traits(compiles, ...)で定義された構造体で使用するとリンカーエラーが発生する。
- Bugzilla 23651: テンプレート・メンバーの意味解析における順序依存性
- Bugzilla 23658: 変数の .di 生成は宣言に変えるべきである。
- Bugzilla 23669: [DIP1000] スコープ・メソッドでスライス・メンバ変数の長さへの複合代入に失敗する
- Bugzilla 23676: 静的foreachでコンパイルに時間がかかる
- Bugzilla 23682: refによるreturnのdip1000問題
- Bugzilla 23694: compilable/ctests2.c:51:9: error: イニシャライザ要素が定数ではない
- Bugzilla 23711: compilable/testcstuff1.c:63:1: error: invalid use of restrict
- Bugzilla 23717: runnable/bitfields.c:192:5: error: unknown type name S; struct キーワードを使って型を参照する。
- Bugzilla 23752: ImportC: 参照解除されたvoidポインタのアドレスを取ることができない。
- Bugzilla 23760: エラー: 不明
- Bugzilla 23763: ゼロ初期化構造体を含む操作に関するICE
- Bugzilla 23767: ImportC: NULL定数を持つ3項が間違ったポインタ型を持っている。
- Bugzilla 23778: コードジェネレーターがWindowsで__c_complex_realを正しく扱えない。
- Bugzilla 23781: [ICE] CTFEでrefリターンのアドレスを取得する際のセグメンテーション・フォールト
- Bugzilla 23783: -preview=nosharedaccess が共有データの比較を検出しない
- Bugzilla 23790: preview=nosharedaccessでメンバ変数にcasを使用できない。
- Bugzilla 23792: トークン文字列内のプリプロセッサについてレキサーが警告する
DMDコンパイラの機能強化
- Bugzilla 11316: デリゲートの引数の型推論ができない場合がある
- Bugzilla 13656: ref型の変数を宣言しようとしたときのエラーメッセージを明確にした。
- Bugzilla 16495: std.traits.fullyQualifiedNameの代わりに__traits(fullyQualifedName)を使用する。
- Bugzilla 20101: BetterC: CTFEのみのコンテキストでのテンプレートのインスタンス化は、codegen / nogc / ...をスキップすべきである。フェーズ
- Bugzilla 23558: __traits(getModuleClasses [, モジュール名])を追加した。
- Bugzilla 23597: .di ファイルは -i と互換性がない
phobosリグレッションの修正
- Bugzilla 23776: getSymbolsByUDA がモジュールからのシンボルのフェッチに失敗する
Phobosのバグ修正
- Bugzilla 23474: Graphemeは改行が続かない場合、キャリッジリターンの後に終了すべきである。
- Bugzilla 23600: [std.format.read]formattedReadのstatic assertがタプルとコンパイル時の書式文字列で行えるようになった。
- Bugzilla 23668: 無効化されたデフォルトコンストラクタで構造体を安定にソートできない。
- Bugzilla 23724: HTTP.onReceiveの例がコンパイルされない
phobosの機能強化
- Bugzilla 19567: [std.stdio] 以下のドキュメントがあまり役に立たない。tell
- Bugzilla 20397: [std.algorithm] ドキュメント nthPermutation
- Bugzilla 23683: std.file.setTimesが必要以上のパーミッションを要求する
- Bugzilla 23706: 必要でない限りPOSIXシェルパラメータをエスケープしない
Druntimeのバグ修正
- Bugzilla 19575: core.cpuidはランタイムなしでは使えない
- Bugzilla 23625: WindowsヘッダーにZeroMemory関数がない。
dlang.orgのバグ修正
- Bugzilla 6583: cast() 操作が完全に指定されていない
- Bugzilla 11493: dlang.org/type.htmlで-1から符号なし型へのキャストはできないと間違っている。
- Bugzilla 16707: [例: "可変長テンプレート"の実行に失敗した。
- Bugzilla 21132: 連想配列リテラルの2つのキーが等しい場合。
- Bugzilla 21178: 何が"unknown"なのか説明されていない
- Bugzilla 23716: ImportC: 拡張として受け入れられたasmキーワードに関する文書がない。
dlang.orgの機能強化
- Bugzilla 18765: [Arrays] 要素リテラルを持つ静的配列の初期化に関する情報が必要である。
- Bugzilla 20997: return文の後にスコープガードが実行される例がない。
- Bugzilla 22418: 文字列に関するドキュメントの誤り
- Bugzilla 22594: intptr_tとuintptr_tを含むように "C言語とのインターフェイス"を更新した。
- Bugzilla 23612: テンプレート制約の記事が記事インデックスに掲載されていない
- Bugzilla 23636: 共有修飾子に関する仕様書がない
- Bugzilla 23730: IsExpressionIdentifier : と== TypeCtor の仕様の明確化
ツールのバグ修正
- Bugzilla 23624: DMD のテスト・ランナーにおけるレース状態
- Bugzilla 23634: 実行可能な例テスターとのデータ競合の可能性
このリリースへの貢献者 (43)
このリリースを可能にしてくれたすべての素晴らしい人々に心から感謝する。
- Amaury
- Andra Maslaev
- Andrea Fontana
- Ate Eskola
- Ben Jones
- BVRazvan
- Daniel Zuncke
- DanutAldea
- Dennis
- Dennis Korpel
- Drehuta Andreea
- Dumitrache Adrian-George
- Hiroki Noda
- Iain Buclaw
- Ikey Doherty
- ioanavivi12
- Jan Jurzitza
- Johan Engelen
- João Lourenço
- KytoDragon
- Luís Ferreira
- Mateiuss
- MathewColin
- Mathias Lang
- matthriscu
- Mike Parker
- Nathan Sashihara
- Nick Treleaven
- Paul Backus
- Quirin F. Schroll
- Rareș Constantin
- Razvan Mihai Popa
- Razvan Nitu
- richard (rikki) andrew cattermole
- Robert burner Schadek
- Robert Grancsa
- Robert Stoica
- Rosca Rares
- Steven Schveighoffer
- Teodor Dutu
- Tudor Brindus
- Vladimir Panteleev
- Walter Bright
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku