変更ログ 2.073.0
Download D 2.073.0
2017年1月22日リリース
ライブラリーの変更
- 複数項の算術式におけるスカラー型昇格の結果を得るためにstd.traits.Promoted を追加した。
- 範囲の最大要素のインデックスを取得するためにstd.algorithm.searching.maxIndex を追加した。
- AliasSeq があるテンプレート述語に従ってソートされているかどうかをチェックするためにstd.meta.staticIsSorted を追加。
- std.algorithm.searching.minIndex 、範囲の最小要素のインデックスを取得するようにした。
- std.traits.hasFunctionAttributes が追加された。
- std.experimental.ndslice が非推奨になった。
D 2.073.0におけるすべてのバグ修正と機能強化のリスト。
コンパイラの変更
- Windows MS-COFFオブジェクトファイル用の新しいコマンドラインオプション-mscrtlib=libname 。
MS-COFFオブジェクト・ファイルを-m64または-m32mscoffでビルドする場合、このオプションは以下のようになる。 を含むオブジェクト・ファイルに埋め込まれる C ランタイム・ライブラリlibnameへの参照を指定する。 main を含むオブジェクト・ファイルに埋め込まれるCランタイム・ライブラリlibnameへの参照を指定する、 DllMain またはWinMain を含むオブジェクト・ファイルに組み込まれる C ランタイム・ライブラリ libname への参照を指定する。デフォルトはlibcmt (静的リンクによるリリース・バージョン)である。 libcmtd msvcrt およびmsvcrtd である。 libnameが空の場合、Cランタイム・ライブラリは自動的にリンクされない。
- 組み込みのDdocテーマがオーバーホールされた。
Dmd は生成されるドキュメントによりモダンなテーマを使うようになった、 dmd#6173 も参照のこと。
ライブラリの変更
- 複数項の算術式におけるスカラー型昇格の結果を取得するためのstd.traits.Promoted を追加した。
std.traits.Promoted スカラー型が昇格する型を取得する を取得するようになった。
import std.traits : Promoted; static assert(is(typeof(ubyte(3) * ubyte(5)) == Promoted!ubyte)); static assert(is(Promoted!ubyte == int));
詳しくはスカラー型のプロモーションに関するD仕様を参照のこと。
- 範囲の最大要素のインデックスを取得するstd.algorithm.searching.maxIndex が追加された。
std.algorithm.searching.maxIndex 範囲の最大要素のインデックスを取得する、 指定された述語に従う。デフォルトの述語は "a > b"である。
import std.algorithm.searching : maxIndex; int[] a = [5, 4, 2, 1, 9, 10]; assert(a.maxIndex == 5); int[] a; assert(a.maxIndex == -1);
- AliasSeq があるテンプレート述語に従ってソートされているかどうかをチェックするstd.meta.staticIsSorted が追加された。
std.meta.staticIsSorted は、AliasSeq があるテンプレート述語に従ってソートされているかどうかをチェックする。 であるかどうかをチェックする。
enum Comp(T1, T2) = T1.sizeof < T2.sizeof; import std.meta : staticIsSorted; static assert( staticIsSorted!(Comp, byte, uint, double)); static assert(!staticIsSorted!(Comp, bool, long, dchar));
さらに、std.meta.staticSort のコンパイル時の性能も大幅に改善された。 大幅に改善されている。とはいえ、コンパイラの制限により、長い配列に対して しかし、コンパイラの制限により、長いシーケンスで実行するにはまだ非常に高価な操作である。 そのような使用は最小限にするよう努力すること。
- 範囲の最小要素のインデックスを取得するstd.algorithm.searching.minIndex を追加した。
std.algorithm.searching.minIndex 範囲の最小要素のインデックスを取得する、 指定された述語に従う。デフォルトの述語は "a < b"である。
import std.algorithm.searching : minIndex; int[] a = [5, 4, 2, 1, 9, 10]; assert(a.minIndex == 3); int[] a; assert(a.minIndex == -1);
- std.traits.hasFunctionAttributes が追加された。
これは、関数の属性を問い合わせるためのユーザーフレンドリーな方法を公開するものである:
import std.traits : hasFunctionAttributes; // テンプレート化された関数型に対して real func(real x) pure nothrow @safe { return x; } static assert(hasFunctionAttributes!(func, "@safe", "pure")); static assert(!hasFunctionAttributes!(func, "@trusted")); // 手動で注釈を付けた関数は自動的に推論される bool myFunc(T)(T b) { return !b; } static assert(hasFunctionAttributes!(myFunc!bool, "@safe", "pure", "@nogc", "nothrow")); static assert(!hasFunctionAttributes!(myFunc!bool, "shared"));
- std.experimental.ndslice は非推奨となった。
PhobosとMirの同期化は、多くの労力を必要とすることが判明した。 であることが判明した。std.experimental.ndslice 。 アップストリームのmir パッケージに切り替えることを推奨する。
D 2.073.0におけるすべてのバグ修正と機能強化のリスト:
DMDコンパイラのリグレッション
- Bugzilla 16102: [REG2.070] struct dtorがスタック上の値を置換する。
- Bugzilla 16278: [REG2.067] クラステンプレートが'is'式でのみインスタンス化される場合、未定義の参照が発生する。
- Bugzilla 16574: REG 2.072.0-b1] 何かをオーバーライドする関数に関する原因不明のエラー : [REG 2.072.0-b1] 何かをオーバーライドする関数に関する原因不明のエラー
- Bugzilla 16598: [REG2.069] void三項+ファイナライザーのICE
- Bugzilla 16678: [REG] 問題16193の修正により大きな破損が発生した。
- Bugzilla 16699: [REG 2.070] scope(exit)でのスタック破壊
- Bugzilla 16747: [REG 2.072] "@safe" コードでスタックに割り当てられたクラスを持つことができない。
- Bugzilla 16980: [REG2.072.0] 誤ったインターフェイスが呼び出される
- Bugzilla 17029: [Reg 2.072] スコープ変数が返されないことがある
- Bugzilla 17059: [REG 2.072.2]不正な循環参照を持つis(Klass : Interface)
- Bugzilla 17072: [REG 2.073.0-b1]-inlineでシンボルが見つからない
- Bugzilla 17073: [REG 2.071.0] 構造体フィールドのvoid デフォルト初期化と優先順位が衝突する。
- Bugzilla 17074: extern(C++, keyword)がコンパイラをクラッシュさせる
- Bugzilla 17087: [REG2.072] intからのキャスト時にcfloatとcrealで生成される値が正しくない
DMDコンパイラのバグ
- Bugzilla 922: exportキーワードがlinuxで未定義参照を引き起こす
- Bugzilla 1761: 関数型のTypeInfo.toStringが常にパラメータなし関数を示す
- Bugzilla 5995: 負の整数を文字列で追加するとセグメンテーションエラーが発生する
- Bugzilla 8838: 静的配列のスライスは安全でないと考えるべきである。
- Bugzilla 10447: double2のimmutable(double2)によるインクリメントを拒否した。
- Bugzilla 11118: テンプレート化された構造体" : テンプレート構造体関数における未定義の識別子
- Bugzilla 11961: リンクするCRTを選択できない
- Bugzilla 12430: 非コンパイル時の __simd opcode が ICE を引き起こす
- Bugzilla 13927: オプティマイザがSIMD初期化でハングする
- Bugzilla 14238: DIP25: デリゲートでエスケープチェックを回避できる
- Bugzilla 14613: DMD: 内部エラー: backend/cod1.c 1567 on '-O' switch
- Bugzilla 15544: ヒープデリゲートへのフィールドのエスケープは、"@safe"コードでは禁止しなければならない。
- Bugzilla 15576: extern(C++, namespace) 変数の間違ったマングリング (Windows)
- Bugzilla 15862: 変更可能な間接を持つ型を返す関数は強く純粋ではなく弱く純粋であるべきである。
- Bugzilla 15989: マニフェスト定数をCTFE割り当てデータで初期化する。
- Bugzilla 16116: (やや複雑な)simd mathの無限ループ
- Bugzilla 16146: field:value}」構文の構造体生成時にpostblitが呼び出されない。
- Bugzilla 16381: float4 配列をラップするとセグメンテーションフォールトが発生する。
- Bugzilla 16488: [仕様][最適化]スカラーをsimdベクトルにブロードキャストする
- Bugzilla 16499: 間違った引数を持つ 'in' 演算子に対する誤解を招くエラーメッセージ
- Bugzilla 16523: [ICE] 内部エラー : backend/symbol.c 1031
- Bugzilla 16589: スタック変数のアドレスを @safe コードで取ることは、場合によっては許される。
- Bugzilla 16679: 古い Pentium d でプリフェッチすると不正な命令になる
- Bugzilla 16743: ソフトウェア実装が利用可能な場合、本質的な認識に失敗することがある
- Bugzilla 16854: インラインアセンブラでVMOVLHPSとVMOVHLPSが入れ替わってしまう。
- Bugzilla 16967: in/out契約においてスイッチケースのフォールスルーの警告が出ない。
- Bugzilla 16977: 関数のデフォルト引数のデバッグ情報が間違っている。
- Bugzilla 17034: DMD 32ビットPICのコードが間違っている
DMDコンパイラの機能強化
- Bugzilla 768: 定義済みバージョン識別子を表示するスイッチ
- Bugzilla 13474: floatとdouble (x87)の余分な精度を捨てる。
- Bugzilla 16449: iasmのRDTSCPのサポートを追加した。
- Bugzilla 16558: [Mir] LDCのloadUnalignedとstoreUnalignedのような汎用のアンアラインドロード/ストア。
- Bugzilla 16560: [Mir] LDCのようなプリフェッチ・イントリニックス
- Bugzilla 16703: SIMDベクトル型のインデックスをサポートする。
- Bugzilla 16798: Ipathスイッチを-Imodule=pathに拡張し、パスの階層構造をパッケージの階層構造と一致させないようにした。
- Bugzilla 16958: mavxスイッチを-mcpu=idに置き換える。
phobosのリグレッション
- Bugzilla 16609: std.experimental.ndslice.slice が Phobos のビルド時に警告を出す。
- Bugzilla 16661: [REG2.072] std/format.d(1070):wstringとdstringの書式指定子: .2fが正しくない。
- Bugzilla 16663: [REG 2.072] std.unit.toUpper が文字列へのエイリアスを拒否する。
- Bugzilla 16667: [REG] dmd 2.072.0へのアップグレード後にstd.convでdub testが失敗する
- Bugzilla 16682: [REG 2.072] std.stdioのシンボルの"privatization"がDFMTを壊す
- Bugzilla 17066: [REG2.073a] std.regexのキャプチャがimmutableになった
phobosのバグ
- Bugzilla 6716: CプログラムとDライブラリをリンクするとDEHエラーが発生する
- Bugzilla 8087: std.algorithmのドキュメントをわかりやすくした
- Bugzilla 9378: PICでコンパイルするとstd.internal.digest.sha_SSE3が壊れる
- Bugzilla 9391: 定数std.regex.regexを追加した。
- Bugzilla 13314: BinaryHeapはStoreがdupプロパティを持っていると仮定する
- Bugzilla 16048: std.getopt: オプションの重複が検出されない
- Bugzilla 16135: std.algorithm.comparisonにstd.formatのインポートがない。
- Bugzilla 16255: opApplyのstd.algorithm.iteration.eachがrefをサポートしていない。
- Bugzilla 16352: std.allocator.free_listのunittestでデッドロックが発生する。
- Bugzilla 16419: ndslice.slice toHashの問題
- Bugzilla 16478: 制約でto!T()を許可しない
- Bugzilla 16588: uniqのBidirectionalRangeの動作はInputRangeの動作と矛盾している
- Bugzilla 16611: std.トレイト.fullyQualifiedNameがエラー'Unrecognized type const(void)'で失敗する。
- Bugzilla 16624: std.path.setExtensionのddocコメントの書式がおかしい。
- Bugzilla 16634: std.mathはyl2xとyl2xp1を公開している。
- Bugzilla 16653: ParameterDefaultValueTupleは関数にlazy paramがあるとコンパイルに失敗する。
- Bugzilla 16724: RandomCover.popFrontは最初の呼び出しではno-opである。
- Bugzilla 16758: Variant.opIndexの結果がopAssign後に変更されない
- Bugzilla 16794: Ubuntu 16.10でデフォルトのPIEリンクが原因でdmdが動作しない
- Bugzilla 16955: std.process.spawnProcessImplがアロカでクラッシュすることがある。
- Bugzilla 16959: char配列でbringToFrontが失敗する。
- Bugzilla 16970: Phobos コンパイル時の非推奨と警告を修正した。
- Bugzilla 16996: std.algorithm.removeをSwapStrategy.unstableでより多くのエントリーを削除するようにした。
phobosの機能強化
- Bugzilla 4125: std.numeric.gcdがバイナリGCDを使用できるようになった。
- Bugzilla 16249: std.signals:disconnect()はemit()の間は安全ではない
- Bugzilla 16571: Unittests は /tmp/ を再帰的にリストするべきではない。
- Bugzilla 16628: std.algorithm.equalが既知の空または無限の範囲に対応する特殊な場合
Druntimeのリグレッション
- Bugzilla 16974: [REG2.068] 連想配列のキーを持つ等しい連想配列が不等間隔とみなされる
ドランタイムバグ
- Bugzilla 16651: atomicOp!"-="("ulong, uint") = 誤った結果/codegen".
- Bugzilla 16654: hashOfは同じ文字列値に対して異なるハッシュを返す。
- Bugzilla 16764: hashOf は誤解を招きやすく、エラーを起こしやすく、役に立たない。
Druntimeの機能強化
- Bugzilla 16797: クロック分解能ゼロはゼロ除算につながる
dlang.orgのバグ
- Bugzilla 16592: 既存のdmdがないとdlang.orgのビルドがうまくいかない。
- Bugzilla 16948: std.stdio のリンクがWEBマクロの不正使用により壊れている。
dlang.orgの機能強化
- Bugzilla 8799: 関数にマップされたタプルの例を挙げよ。
- Bugzilla 16147: ピカピカの404エラーページを提供する
ツールのリグレッション
- Bugzilla 14296: ソースがサブディレクトリにある場合、RDMD が lib のビルドに失敗する
- Bugzilla 16962: rdmd --build-only --force -c main.d fails:./main:そのようなファイルまたはディレクトリがない
- Bugzilla 16978: [REG2.072.0] rdmdでpragma(lib)が壊れている
ツールのバグ
- Bugzilla 16966: rdmd:AssertError@rdmd.d(489): compileRootAndGetDeps によって作成されるべきだった。
ツールの拡張
- Bugzilla 16593: tools "をビルドすると非推奨の警告が出る
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku