注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #131033 Keep runtimelab IntermediateArtifacts on classic build artifacts
- #131026 [perf][wasm] Stage CoreCLR wasm runtime pack for Mono workload install
- #131025 [wasm] Fix native build failing when temp path contains parentheses
- #131023 [wasm] Bump chrome for testing - linux: 150.0.7871.128, windows: 150.0.7871.129, mac: 150.0.7871.129
- #131022 [mono][wasm] Respect [Un]SupportedOSPlatform in the Mono pinvoke generator
- #131021 [mono][wasm] Fix pinvoke with 64-bit enum argument
- #131020 [mono][wasm] Fix AOT + BlazorWebAssemblyLazyLoad startup crash
- #131017 Link statically to GrowableFunctionTable
- #130966 Fix linux-musl-rsicv64 build
- #130960 [wasm] Html Encode incoming parameters to debug page
- #130957 Speed up Decimal32/64/128 arithmetic, conversions, and equality
- #130928 Clean up redundant defines and warning suppressions in coreclr/vm/common.h
- #130905 Cleanup multicast delegate handling
- #130761 Add openbsd-x64 CI leg
- #130435 Preserve checked overflow for unsigned range additions
- #130339 Add scheduled holistic reviews for all PRs and path-specific review instructions
- #128498 Migrate eng/pipelines from PublishBuildArtifacts to PublishPipelineArtifact
- #128205 ci: declare contents:read on jit-format workflow
- #126187 Reduce unsafe code in System.Decimal
- #125872 Avoid SocketException flood in NamedPipeClientStream on Unix
#131033 Keep runtimelab IntermediateArtifacts on classic build artifacts
- 作成者: @akoeplinger
- 作成日時: 2026年07月19日 11:37:14(UTC)
- マージ日時: 2026年07月19日 17:12:28(UTC)
- ラベル: area-Infrastructure
概要
runtimelab の下流コンシューマーの互換性を保つため、中間成果物のアップロードステップを Pipeline Artifacts から従来の Azure DevOps Build Artifacts に戻します。複数のジョブが同一名の成果物に発行する必要があるため、この変更が必要です。今後すべての runtimelab ブランチが v3/v4 発行に移行すれば、この設定は削除可能です。
変更内容
eng/pipelines/common/upload-intermediate-artifacts-step.yml: Pipeline Artifact 発行テンプレートを1ES.PublishBuildArtifacts@1/PublishBuildArtifacts@1タスクに置き換え- 公式/非公式タスクの分岐を追加
- 従来の Build Artifacts が必要な理由についてのインラインコメントを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
この変更は CI/CD パイプラインの設定に関するもので、ランタイムの機能や公開 API には影響しません。runtimelab の複数のジョブが同じ成果物に発行するワークフローに対応するための暫定的な対応です。
#131026 [perf][wasm] Stage CoreCLR wasm runtime pack for Mono workload install
- 作成者: @lewing
- 作成日時: 2026年07月19日 01:40:00(UTC)
- マージ日時: 2026年07月19日 15:11:05(UTC)
- ラベル: area-Build-mono
概要
WASM パフォーマンスパイプラインの修正。PR #130380 で wasm-tools ワークロードマニフェストに CoreCLR ランタイムパック Microsoft.NETCore.App.Runtime.browser-wasm が追加されたことで、Mono ビルドジョブが必要なパックを見つけられず、ワークロードインストール時に失敗していた問題を解決する。CoreCLR ビルドジョブが生成するランタイムパックを Mono ビルドジョブが再利用するよう、パイプラインテンプレートを修正。
変更内容
perf-wasm-prepare-artifacts-steps.yml
publishCoreClrRuntimePackパラメータ追加:CoreCLR ジョブがMicrosoft.NETCore.App.Runtime.browser-wasmnupkg をアーティファクトとして発行downloadCoreClrRuntimePackパラメータ追加:Mono ジョブがアーティファクトをダウンロードし、ワークロードインストール前にartifacts/packages/Release/Shipping/にステージング
perf-wasm-build-jobs.yml
wasm_coreclrジョブでpublishCoreClrRuntimePack: trueを設定wasm(Mono) ジョブでdownloadCoreClrRuntimePack: trueを設定し、dependsOn: build_browser_wasm_linux_Release_wasm_coreclrで CoreCLR ビルドジョブに依存
パフォーマンスへの影響
Mono ビルドジョブが CoreCLR ビルドジョブに依存するようになったため、これまで並列実行できていたジョブが順序付き実行となり、PR トリガー時のサニティパイプラインの総実行時間が増加する。
関連Issue
その他
- ステージングされた CoreCLR パックは Mono ジョブの既存の
_GetRuntimePackNuGetsToBuildロジック(Microsoft.NETCore.App.Runtime.Mono.*のみマッチ)と干渉しない - 本修正は #130380 で main/extra-platforms CI で採用されたパターンに従い、既存の CoreCLR ビルドを再利用することで、重複したビルドを回避
- このPRはGitHub Copilotのアシスタンスを受けて生成
#131025 [wasm] Fix native build failing when temp path contains parentheses
- 作成者: @lewing
- 作成日時: 2026年07月19日 01:35:22(UTC)
- マージ日時: 2026年07月19日 15:08:53(UTC)
- ラベル: arch-wasm area-Build-mono
概要
WebAssembly のネイティブビルド(Emcc)において、一時ディレクトリパスにかっこが含まれている場合に dotnet publish が失敗する Windows 固有の問題を修正します。例えば C:\Users\John(US)\AppData\Local\Temp\... のようなテンポラリパスで失敗していた問題が対象です。
根本原因は cmd.exe の /c オプションが引用符で囲まれたパス内の特殊文字(かっこ)を検出すると、引用符を削除してしまうため、パスが正しく解析されないことです。
変更内容
- src/tasks/Common/Utils.cs:
Utils.RunShellCommandの Windows パスで、テンポラリスクリプト呼び出しをcmd /S /c ""<script>""に変更。/Sフラグによりcmd.exeは最外層の引用符のみを削除し、内側の引用符は保持されるため、かっこを含むパスでも正確に処理されます。Unix(/bin/sh)パスは変更なし。 - src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs: Windows 限定の回帰テスト
NativeBuildWithParenthesesInTempPathを追加。%TMP%/%TEMP%をかっこ付きディレクトリに指定した状態で、エンドツーエンドのネイティブパブリッシュ/ビルドを実行。
パフォーマンスへの影響
影響なし
関連Issue
その他
- この修正は Windows 固有の問題であり、Unix(Linux/macOS)の
/bin/shコードパスは影響を受けません。 - テストは Windows CI でのみ実行され、
[SkipOnPlatform(TestPlatforms.AnyUnix, …)]で保護されています。 - PR は GitHub Copilot により作成されました。
#131023 [wasm] Bump chrome for testing - linux: 150.0.7871.128, windows: 150.0.7871.129, mac: 150.0.7871.129
- 作成者: @github-actions[bot]
- 作成日時: 2026年07月19日 00:22:43(UTC)
- マージ日時: 2026年07月19日 17:42:44(UTC)
- ラベル: arch-wasm area-Infrastructure-mono
概要
WebAssembly(WASM)テスト環境で使用するChrome for Testingのバージョンを更新するプロパティファイルの更新です。Linux、Windows、macOSの各プラットフォームに対応したChrome for Testingバージョンを最新版に統一しました。
変更内容
eng/testing/BrowserVersions.props: Chrome for Testingのバージョン情報を更新- Linux: 150.0.7871.128に更新
- Windows: 150.0.7871.129に更新
- macOS: 150.0.7871.129に更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このプルリクエストはGitHub Actionsボットによる自動更新です。WASM関連テストの環境構成ファイルの定期メンテナンスの一部と考えられます。
#131022 [mono][wasm] Respect [Un]SupportedOSPlatform in the Mono pinvoke generator
- 作成者: @lewing
- 作成日時: 2026年07月19日 00:15:51(UTC)
- マージ日時: 2026年07月19日 15:07:34(UTC)
- ラベル: arch-wasm area-Build-mono
概要
Mono wasm バックエンドで、[SupportedOSPlatform]/[UnsupportedOSPlatform]属性を尊重していなかったP/Invoke生成器を修正しました。ターゲットOS(browser)で非サポートのP/Invokeメソッドが解析対象となり、不必要な警告(WASM0001/WASM0060/WASM0062)が発生していた問題を解決します。
変更内容
- PInvokeCollector.cs:
TargetOSパラメータを追加し、[UnsupportedOSPlatform]または対象OSをサポートしていない[SupportedOSPlatform(...)]が指定されたメソッド、型、アセンブリをスキップするロジックを実装 - ManagedToNativeGenerator.cs:
TargetOSをPInvokeTableGenerator経由でPInvokeCollectorに渡すように修正 - PInvokeTableGenerator.cs:
TargetOSパラメータを受け取り、PInvokeCollectorに転送 - WasmApp.Common.targets: Mono タスクに
TargetOSプロパティ(デフォルト:browser)を追加 - テスト資産: Windows専用の非blittable P/Invoke(
HandleRef/objectパラメータ)を含むテストアセットとテストケースを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- 本修正はMono wasm ビルドタスクのみに影響し、CoreCLRは変更なし
- CoreCLR側は既に
IsUnsupportedOnPlatform/EvaluatePlatformAttributesでプラットフォーム属性チェックを実装していたため、このロジックをMonoに移植した形 - 新規テスト「PInvokeTableGeneratorTests.UnsupportedOSPlatformPInvokeIsSkipped」で、Windows専用P/Invokeが警告を発生させないことを検証済み(Debug/Release両方で合格)
#131021 [mono][wasm] Fix pinvoke with 64-bit enum argument
- 作成者: @lewing
- 作成日時: 2026年07月18日 23:38:57(UTC)
- マージ日時: 2026年07月19日 15:10:47(UTC)
- ラベル: arch-wasm area-Codegen-Interpreter-mono
概要
WebAssembly上のMono interpreterにおいて、64ビット基礎型を持つenumをP/Invokeの引数として渡す際のクラッシュを修正。interp_type_as_ptr()がenumの基礎型を確認せずにすべてのenumをポインタサイズ互換として扱っていたため、call_indirectのシグネチャ不一致エラーが発生していました。
修正後、以下のようなコード例が正常に動作します:
[Flags] enum Flags : ulong { /* ... */ }
[DllImport("native")]
static extern void ProcessFlags(Flags flags); // 64ビット値を正しく渡すことが可能に
変更内容
- interp/transform.c:
interp_type_as_ptr()関数の修正。64ビット基礎型(I8/U8)を持つenumに対して、基礎型の判定にフォールバックするロジックを追加。他のwidth(enum:int/enum:uintなど)のenumや64ビットホスト上のenumの動作は変更なし。 - AbiRules.cs:
enum:ulongおよびenum:longのP/Invoke呼び出しテストケースを追加。 - wasm-abi.c: 64ビット整数の受け渡しに対応したネイティブ関数を追加。
- PInvokeTableGeneratorTests.cs: 新しいenum型のABI出力に対する検証アサーションを追加。
パフォーマンスへの影響
影響なし。この修正は正確なシグネチャマッチングを確保するもので、パフォーマンスクリティカルなパスには変更がありません。
関連Issue
その他
- 修正の対象は32ビットターゲット(wasm32など)上の64ビット基礎型enumのみで、既存のworkaround(enumを
ulongにキャストする)が不要になります。 - AOT compiler(
type_to_c)とjiterpreterの署名パスは既にenumを基礎型に展開しているため、並行する変更は不要。 - 修正は
interp_type_as_ptr(interpreter-transform限定)のロジック改善であり、公開APIへの影響はありません。
#131020 [mono][wasm] Fix AOT + BlazorWebAssemblyLazyLoad startup crash
- 作成者: @lewing
- 作成日時: 2026年07月18日 22:21:40(UTC)
- マージ日時: 2026年07月19日 00:47:16(UTC)
- ラベル: arch-wasm area-Build-mono
概要
AOT (Ahead-of-Time) コンパイルされた Blazor WebAssembly アプリが BlazorWebAssemblyLazyLoad を使用する場合のランタイム起動時のクラッシュを修正します。根本原因は、AOT イメージが起動時にすべての参照アセンブリをロードしようとするため、遅延ロードされるアセンブリが見つからず、フォールバック処理で interp.c のアサーション失敗が発生していました。修正では、AOT + 遅延ロード条件下で aot-lazy-assembly-load ランタイムオプションを自動的に有効化し、アセンブリのバインディングを実際のロード時点まで遅延させます。
変更内容
- Microsoft.NET.Sdk.WebAssembly.Browser.targets:
RunAOTCompilation=trueかつBlazorWebAssemblyLazyLoadアイテムが存在する場合、--aot-lazy-assembly-loadをランタイムオプションに自動追加(+6 行) - LazyLoadingTests.cs: AOT + リリースビルド + 遅延ロード構成を検証する
LoadLazyAssemblyWithAOTテストを追加(+22 行)
修正は WebAssembly SDK のビルドターゲット内で行われ、runtimeOptions → mono_wasm_parse_runtime_options → mono_options_parse_options を通じてランタイムに流れます。非 AOT・非遅延ロードビルドは影響を受けません。
パフォーマンスへの影響
影響なし。本修正は起動時のクラッシュ回避を目的とした機能有効化であり、パフォーマンスの最適化ではありません。
関連Issue
その他
- 修正前:
module WasmBasicTestApp is unusable because dependency Json is not found→interp.c:4135アサーション失敗 - 修正後:AOT イメージが正常にロードされ、遅延ロードされたアセンブリが実行時に正しく機能することを確認
- 既存の
LazyLoadingTestsはインタプリタ(Debug)構成のみをカバーしていたため、新テストにより AOT + 遅延ロード経路のリグレッション防止が実現されます
#131017 Link statically to GrowableFunctionTable
- 作成者: @huoyaoyuan
- 作成日時: 2026年07月18日 17:56:15(UTC)
- マージ日時: 2026年07月19日 09:20:50(UTC)
- ラベル: area-VM-coreclr community-contribution
概要
Windows x64のアンワインド情報公開処理をリファクタリングし、RtlAddGrowableFunctionTableなどのWindows 8+API を直接呼び出すように変更しました。従来の動的なGetProcAddressベースの関数発見を廃止し、リンク時にntdll.libから直接シンボルを解決するようにしています。
変更内容
- src/coreclr/vm/codeman.cpp: 動的関数ポインタ初期化ロジックを削除(約87行削減)し、
RtlAddGrowableFunctionTable、RtlGrowFunctionTable、RtlDeleteGrowableFunctionTableを直接呼び出すように変更 - src/coreclr/vm/codeman.h:
UnwindInfoTable::Initialize()宣言を削除 - src/coreclr/vm/ceemain.cpp: 起動時の
UnwindInfoTable::Initialize()呼び出しを削除 - src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt: Windows ビルドに
ntdll.libをリンク対象に追加
パフォーマンスへの影響
影響なし(ランタイムコスト削減)。起動時の動的関数発見処理が不要になり、わずかな初期化オーバーヘッド削減が期待されます。
関連Issue
なし
その他
- Windows 8以上が対象環境であり、
RtlAddGrowableFunctionTableAPIはWindows 8で導入されたため、互換性上の問題はありません - この変更は内部実装(CoreCLRランタイムのアンワインド情報管理)の最適化であり、公開APIへの影響はありません
- NativeAOTのWindowsAPI許可リストに含まれているため、適切な対応と判断されています
#130966 Fix linux-musl-rsicv64 build
- 作成者: @am11
- 作成日時: 2026年07月17日 12:22:49(UTC)
- マージ日時: 2026年07月19日 17:54:44(UTC)
- ラベル: area-Infrastructure community-contribution
概要
Alpine Linuxの互換性確保のため、RISCV_HWPROBE_EXT_ZICONDマクロを定義するネイティブコード修正です。linux-musl-riscv64ビルドの問題を解決します。
変更内容
- src/native/minipal/cpufeatures.c:
RISCV_HWPROBE_EXT_ZICONDマクロ定義を追加(5行追加)
パフォーマンスへの影響
影響なし
関連Issue
その他
RISC-V CPU機能検出に関わるネイティブレイヤの変更で、Alpine Linux環境でのビルド互換性向上を目的とした修正です。
#130960 [wasm] Html Encode incoming parameters to debug page
- 作成者: @maraf
- 作成日時: 2026年07月17日 09:48:26(UTC)
- マージ日時: 2026年07月19日 14:30:10(UTC)
- ラベル: arch-wasm area-Build-mono os-browser
概要
WebAssemblyデバッグヘルプページへの受信クエリパラメータをHTML エンコードして、HTML/スクリプトインジェクションのリスクを軽減します。urlクエリパラメータとデバッガタブリスト URLを事前にエンコードし、エラー/ヘルプHTMLで再利用します。
変更内容
- src/mono/wasm/host/DevServer/WebAssemblyNetDebugProxyAppBuilderExtensions.cs
- クエリパラメータ由来の値をHTML生成前にエンコード処理を追加
- エンコード済みの値をエラーメッセージとヘルプページで再利用
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
Copilotレビューで追加の懸念事項が指摘されています:
- 例外メッセージもHTML エンコードなしでHTML内に埋め込まれている(
<pre>{ex}</pre>)点が未対応です。例外メッセージにユーザー制御値(ホスト/URL文字列など)が含まれる場合、XSS脆弱性となる可能性があります - HTMLマークアップの構文エラー(
<strong>タグが</p>で閉じられている)も報告されています
#130957 Speed up Decimal32/64/128 arithmetic, conversions, and equality
- 作成者: @tannergooding
- 作成日時: 2026年07月17日 06:21:10(UTC)
- マージ日時: 2026年07月19日 21:49:56(UTC)
- ラベル: area-System.Numerics
概要
IEEE 754 decimal実装(Decimal32/Decimal64/Decimal128)の算術演算と変換処理を高速化するPRです。長除算の高速化、直接エンコーディング、浮動小数点変換の最適化、専用の等値性チェックルーチンなどを追加し、全体的なパフォーマンスを大幅に改善します。
変更内容
Number.DecimalIeee754.cs: 以下の高速パス機構を追加
Divide: 剰余の先頭ゼロ数に基づいて複数桁を一度に抽出(従来は1桁ずつ)FromInt32: 係数がすでに範囲内の場合は直接エンコードFromDouble: Dragon4で正確にPrecision有効桁数を出力し、単一ラウンドで変換(二重丸めを排除)ToDouble: 浮動小数点パーサから抽出したTryFloatingPointBitsFromMantissa(Clinger + Eisel-Lemire)を再利用Equality: ビット完全一致の短絡評価と除数ベースの同等性チェックで専用最適化
Number.NumberToFloatingPointBits.cs:
TryFloatingPointBitsFromMantissaヘルパーを抽出・共有化Decimal32/64/128.cs: 調整済み指数インターフェースプロパティを実装
パフォーマンスへの影響
大幅な高速化を達成(ローカルマイクロベンチ、ns/op、小さいほど良い):
| Method | D32改善 | D64改善 | D128改善 |
|---|---|---|---|
| Add | 12.4→7.0 (-44%) | 16.4→8.3 (-49%) | 61.5→29.4 (-52%) |
| Subtract | 13.1→7.7 (-41%) | 17.1→8.9 (-48%) | 63.5→31.2 (-51%) |
| Multiply | 15.1→12.8 (-15%) | 40.5→14.6 (-64%) | 58.3→40.0 (-31%) |
| Divide | 30.1→21.4 (-29%) | 74.3→20.5 (-72%) | 417.7→109.0 (-74%) |
| FromInt32 | 74.3→1.8 (-98%) | 74.2→1.9 (-97%) | 78.6→5.8 (-93%) |
| FromDouble | 314→76.8 (-76%) | 314→125.5 (-60%) | 338→291.7 (-14%) |
| ToDouble | 102.6→5.8 (-94%) | 129.2→6.8 (-95%) | 137.0→19.2 (-86%) |
懸念: Decimal128等値性で若干の退行(19→22 ns)が見られますが、原因は周辺コードのコード生成レイアウト変動で、他の大幅改善(例:Divide -309 ns、ToDouble -118 ns)によって補われます。
関連Issue
なし
その他
- 検証済み:
Decimal32/64/128xunitスイート4482テスト(Intel BIDリファレンスベクトル含む)、Double/Single/Halfパーサテスト合格 - FromDouble差分テスト:790万個のランダムダブルと完全一致(値ミスマッチ0件
#130928 Clean up redundant defines and warning suppressions in coreclr/vm/common.h
- 作成者: @AaronRobinsonMSFT
- 作成日時: 2026年07月16日 21:40:59(UTC)
- マージ日時: 2026年07月19日 09:52:56(UTC)
- ラベル: area-VM-coreclr
概要
CoreCLR の vm/common.h から冗長/陳腐なプリプロセッサ定義と MSVC 警告抑制ブロックを削除し、複数の stdafx.h ファイルから未使用の定義を削除するコード整理です。警告抑制に依存していた2つの呼び出し位置(gchelpers.cpp、olevariant.cpp)は、名前付きローカル変数を導入して対応しており、機能的な変更はありません。
変更内容
src/coreclr/vm/common.h: MSVC警告抑制ブロック(#pragma warning(disable:...))を削除。意味のある警告(4201, 4100, 4127, 4245, 4291, 4505)は既にeng/native/configurecompiler.cmakeで全体適用済み。src/coreclr/vm/gchelpers.cpp: C4238警告(rvalueをlvalueとして使用)の抑制に依存していた箇所に名前付きOBJECTREFローカル変数を導入。src/coreclr/vm/olevariant.cpp: 同様にmemcpyNoGCRefs呼び出し前に名前付きDECIMALローカル変数を導入。- 各
stdafx.hファイル:USE_COM_CONTEXT_DEFと_CRT_DEPENDENCY_定義を削除(src/coreclr内に参照なし)。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 内部実装(ランタイム VM レイヤー)の整理であり、公開APIには影響しません。
- 破壊的変更なし。
#130905 Cleanup multicast delegate handling
- 作成者: @MichalPetryka
- 作成日時: 2026年07月16日 18:41:33(UTC)
- マージ日時: 2026年07月19日 02:42:07(UTC)
- ラベル: area-VM-coreclr community-contribution
概要
マルチキャストデリゲートの内部実装をリファクタリングし、呼び出しリストの保存形式を object[] から Delegate.Wrapper[] に変更します。これにより、型安全性を向上させ、combine/remove パスを簡潔にし、VM側の呼び出しスタブ生成を更新します。
変更内容
- Delegate.CoreCLR.cs: マルチキャスト呼び出しリスト保存を
Wrapper[]に変更。TryGetInvocations、GetInvocationList、Target、GetMethodImpl、CombineImpl、RemoveImplなどのメソッドをWrapper[]ベースに更新し、Span を活用した実装に刷新(+135行/-207行) - comdelegate.cpp: VM側マルチキャスト呼び出しILスタブの生成を更新。
Wrapper[]からldelema+ldfld Valueで実際のデリゲートをロードするように変更(+2行/-1行) - corelib.h:
System.Delegate+Wrapper型とWrapper.Valueフィールドの CoreLibBinder エントリを追加(+3行)
パフォーマンスへの影響
影響なし(リファクタリングにより型安全性向上と可読性改善が主目的)
関連Issue
なし
その他
- 前のPRに基づくビルド(継続的なマルチキャストデリゲート最適化の一環)
- 公開API自体には変更なく、内部実装(CoreCLRランタイム)のクリーンアップ
object[]キャストへの依存を削減し、型安全性を強化
#130761 Add openbsd-x64 CI leg
- 作成者: @am11
- 作成日時: 2026年07月15日 09:31:45(UTC)
- マージ日時: 2026年07月19日 17:51:21(UTC)
- ラベル: area-Infrastructure community-contribution os-openbsd
概要
OpenBSD x64プラットフォームのCI環境を追加するための変更です。既存のCI/CDパイプライン構成を拡張して、OpenBSD x64ターゲットのビルドとテストを実行できるようにします。
変更内容
- eng/pipelines/common/platform-matrix.yml: OpenBSD x64プラットフォームの定義を追加(+20行)
- eng/pipelines/common/templates/pipeline-with-resources.yml: パイプラインリソース設定にOpenBSD x64対応を追加(+5行)
- eng/pipelines/common/templates/runtimes/xplat-job.yml: クロスプラットフォームジョブ設定を更新(+2行)
- eng/pipelines/common/xplat-setup.yml: セットアップスクリプトを調整(+2/-2行)
- eng/pipelines/coreclr/templates/sccache-stats.yml: キャッシュ統計設定を更新(+1/-1行)
- eng/pipelines/coreclr/templates/setup-sccache.yml: キャッシュセットアップを更新(+1/-1行)
- eng/pipelines/runtime.yml: ランタイムパイプラインに新しいジョブを追加(+1行)
パフォーマンスへの影響
影響なし(CI インフラストラクチャの追加で、ランタイムパフォーマンスへの直接的な影響なし)
関連Issue
その他
なし
#130435 Preserve checked overflow for unsigned range additions
- 作成者: @Copilot
- 作成日時: 2026年07月09日 21:20:55(UTC)
- マージ日時: 2026年07月19日 14:15:49(UTC)
- ラベル: area-Infrastructure
概要
JIT範囲分析において、符号なし加算のオーバーフロー検査が誤って削除される問題を修正しました。JIT範囲が符号付き区間を使用しているため、Tier 1のアサーション伝播が符号なし加算の検査条件を不正に削除していました。
変更内容
- rangecheck.h: 符号なし範囲が符号付きゼロを跨がるケースを拒否し、合計値が符号付き範囲モデルで表現可能なままであることを保証する条件を追加(+17/-1)
- Runtime_130431.cs: 報告されたチェック済み加算失敗と符号跨ぎ範囲に対する回帰テストを追加(+40/-0)
- Regression_ro_2.csproj: テストプロジェクト設定を更新(+1/-0)
パフォーマンスへの影響
影響なし
関連Issue
その他
このコミットは符号なし整数型におけるcheckedキーワード付き加算でのオーバーフロー例外の正確性を改善するものです。JITの範囲分析アルゴリズムが符号付き・符号なし型の混在を扱う際の境界条件を正しく処理するようになりました。
#130339 Add scheduled holistic reviews for all PRs and path-specific review instructions
- 作成者: @jeffhandley
- 作成日時: 2026年07月08日 08:45:41(UTC)
- マージ日時: 2026年07月19日 02:42:17(UTC)
- ラベル: area-skills
概要
dotnet/runtimeのコードレビュー自動化をスケジュール型オーケストレータ+ワーカー型の設計に再構築し、レビュールールをパス固有の .github/instructions/ ファイルに分離します。これにより、カスタム Holistic Review ワークフローと GitHub 組み込み Copilot コードレビューが同一のルールセットを共有できるようになります。従来の pull_request トリガー型から、10分単位でスケジュール実行される deterministic オーケストレータが必要な PR を選定し、dispatch する per-PR ワーカー(workflow_dispatch ベース)に移行します。
変更内容
holistic-review-orchestrator.yml(新規):スケジュール実行される deterministic オーケストレータ。10分ごとに非Draft PR をポーリングし、新規またはヘッドコミットが変更された PR に対してワーカーを dispatch。フォークではスケジュール実行をスキップ。holistic-review.md(新規):workflow_dispatchベースの agentic ワーカー。初回レビューは完全なmerge_base..head範囲を分析、再レビューはrange-diff/patch-diffを使用した差分スコープで実行。最大10個のインライン comments と1つの COMMENT イベント review のみを submit(APPROVE/REQUEST_CHANGES は非実装)。- path-scoped instruction ファイル群(新規):
review-all-src.instructions.md(src/**):PR 全体評価、コード再利用、規約review-csharp.instructions.md(**/*.cs):C# エラーハンドリング、スレッド安全性、セキュリティ、パフォーマンスreview-native.instructions.md(C/C++/asm):JIT 正確性、VM 規約、P/Invoke marshallingreview-all-tests.instructions.md(test globs):テスト規約review-core-runtime.instructions.md(src/coreclr/**,src/native/corehost/**):CoreCLR 固有の規約
SKILL.md(修正):従来のインライン review ルールを削除し、上記 instruction ファイルへのポインタに置き換え(-262行 → +28行)。.github/aw/actions-lock.json(修正):actions/cache/restore@v4とactions/cache/save@v4をピン留め追加。
パフォーマンスへの影響
影響なし(コードレビュー自動化ツールの設定変更であり、ランタイムやコンパイラのパフォーマンスに直接的な影響なし)
関連Issue
なし
その他
- セキュリティ設計:オーケストレータは
actions: write/pull-requests: writeに制限。ワーカーはcontents: read,issues: read,pull-requests: readのみで、安全な出力層経由で review/comment。PR コンテンツを信頼できない入力として扱い、.github全体や configuration ファイルをmainから復元後に読み込み。 - 状態管理:各 PR の managed issue comment に JSON 状態を保持(version 5)。最後の dispatch/review の commit/base SHA、ワーカー実行 ID、再試行回数を記録。再試行上限は `MAX_REVIEW
#128498 Migrate eng/pipelines from PublishBuildArtifacts to PublishPipelineArtifact
- 作成者: @mmitche
- 作成日時: 2026年05月22日 18:15:42(UTC)
- マージ日時: 2026年07月19日 08:25:27(UTC)
- ラベル: area-Infrastructure
概要
Azure Pipelines のeng/pipelines/配下において、レガシーな Build Artifacts(PublishBuildArtifacts@1 / DownloadBuildArtifacts@0)から Pipeline Artifacts(PublishPipelineArtifact@1 / DownloadPipelineArtifact@2)への移行。Pipeline Artifacts はデデュプベースのアップロードで、レガシー Build Artifacts に比べて10~100倍高速化され、エージェント時間を削減してプール圧力を軽減します。
変更内容
- Publish ラッパー:
publish-build-artifacts.ymlのPublishBuildArtifacts@1→PublishPipelineArtifact@1に置き換え、入力パラメータ名をPathtoPublish→targetPath等に更新 - アーティファクト命名戦略:
- 診断アーティファクト(ログ、binlog等)は
_Attempt$(System.JobAttempt)をサフィックスして再試行時の衝突を回避 - 下流ジョブが消費する中間アーティファクトは安定名(Attempt サフィックスなし)を使用し、
succeeded()時のみ公開
- 診断アーティファクト(ログ、binlog等)は
- パフォーマンステンプレート:
build-perf-*.ymlの binlog パブリッシュステップを Pipeline Artifacts に移行(_Attemptサフィックス付与) - ダウンロード:
download-artifact-step.yml/download-specific-artifact-step.yml/ ブラウザ WASM テストテンプレートをDownloadPipelineArtifact@2に移行 - WASM:
wasm-post-build-steps.ymlの2つの直接呼び出しを移行、下流消費用に安定アーティファクト名を保持
パフォーマンスへの影響
Pipeline Artifacts はデデュプベースのアップロード実装により、レガシー Build Artifacts 比で10~100倍高速。エージェント時間削減によりエージェントプール圧力軽減と全体スループット向上が期待される。
関連Issue
なし
その他
eng/common/ファイルは Arcade により管理されているため変更対象外- SuperPMI/libraries テンプレートの
enablePublishBuildArtifacts: trueパラメータはパラメータ名のみで、既に Arcade ラッパーにより_Attemptサフィックス付きで処理される
#128205 ci: declare contents:read on jit-format workflow
- 作成者: @arpitjain099
- 作成日時: 2026年05月14日 15:53:46(UTC)
- マージ日時: 2026年07月19日 17:36:21(UTC)
- ラベル: area-Infrastructure community-contribution
概要
.github/workflows/jit-format.yml ワークフローにおいて、セキュリティ強化を目的として permissions: contents: read を宣言します。このワークフローは .NET と Python のセットアップ、JIT フォーマットスクリプトの実行、format.patch アーティファクトのアップロードを行いますが、GitHub API への書き込みアクセスを必要としないため、読み取り権限のみに制限することで、万が一 GITHUB_TOKEN が漏洩した場合の被害範囲を最小化します。
変更内容
.github/workflows/jit-format.yml: ワークフローレベルでpermissions: contents: readを追加(+3/-0)
パフォーマンスへの影響
影響なし
関連Issue
CVE-2025-30066 に関連する防御強化(2025年3月の tj-actions/changed-files サプライチェーン攻撃を背景とした対策)
その他
- このワークフローはアーティファクトのアップロード(
actions/upload-artifact)を行いますが、これはワークフロー実行自体のスコープ内の操作であり、GitHub API への書き込みを必要としません - YAML は
yaml.safe_loadで検証済み - 複数の
actions/*およびactions/setup-*の依存関係がある中で、最小権限の原則(Least Privilege)を適用する防御型戦略です - ワークフローレベルでの権限宣言により、リポジトリまたは組織のデフォルト設定の変更による影響から保護され、OpenSSF Scorecard の Token-Permissions チェックの対象要件を満たします
#126187 Reduce unsafe code in System.Decimal
- 作成者: @pentp
- 作成日時: 2026年03月27日 06:16:49(UTC)
- マージ日時: 2026年07月19日 14:44:02(UTC)
- ラベル: area-System.Runtime community-contribution reduce-unsafe
概要
System.Decimalのunsafeコード使用量を削減し、安全な等価物で置き換える。decimal等値比較(Equals、==、!=)を新しいDecCalc.Equals高速パスでルーティングし、IFloatingPoint<decimal>.TryWriteSignificand*Endianのunsafeなアンアライン書き込みをBinaryPrimitives.Write*Endianで置き換える。変更はすべてパフォーマンス中立またはパフォーマンス改善。
変更内容
- System/Decimal.cs: decimal等値比較を
DecCalc.Equalsに統一、significand書き込みをBinaryPrimitivesへ移行、数値ヘルパーのロジック簡略化 - System/Decimal.DecCalc.cs:
DecCalc.Equals導入、ポインタベースの除算ヘルパー削除、指数抽出ヘルパーをBiasedExponentに統一、内部バッファ構造体をunsafeキャスト/ポインタ回避のようにリファクタリング - System/Number.Parsing.cs: 軽微な変更(3行)
- System/UInt128.cs: 軽微な変更(1行)
パフォーマンスへの影響
パフォーマンス中立またはパフォーマンス改善。残りのunsafeコード削減ケースはより複雑であり、詳細なパフォーマンス測定が必要とのこと。
関連Issue
その他
PR作成者によれば、より複雑なunsafeコード削減ケースについては、パフォーマンス低下をオフセットするための工夫が必要。本PRは低リスクで削除可能なunsafeパターンに焦点を当てている。
#125872 Avoid SocketException flood in NamedPipeClientStream on Unix
- 作成者: @haltandcatchwater
- 作成日時: 2026年03月20日 22:09:39(UTC)
- マージ日時: 2026年07月19日 07:43:12(UTC)
- ラベル: area-System.IO community-contribution
概要
Unix上でNamedPipeClientStream.Connect()が存在しないパイプへの接続を試みる際、リトライループ内で大量のSocketExceptionが発生・キャッチされる問題を修正しました。Statシステムコールでパイプファイルの存在確認を事前に行い、ENOENTエラーの場合はSocket割り当て前に即座にfalseを返すことで、例外フローディングとCPU浪費を削減します。
変更内容
- NamedPipeClientStream.Unix.cs:
TryConnectメソッドの先頭にInterop.Sys.Statによる存在確認ガードを追加。ファイルが存在しない場合(ENOENT)はSocket割り当てなしでfalseを返却。権限エラー(EACCES)その他の条件は既存のsocket.Connectパスを使用し、例外動作を保持 - NamedPipeTest.Specific.cs: 新規Unix固有テスト
ClientConnect_PipeNotFound_DoesNotFloodFirstChanceExceptionsを追加。存在しないパイプへの接続時、500ms間でSocketExceptionが5件未満であることを検証
パフォーマンスへの影響
改善あり:
- 非存在パイプへの接続試行時、従来は数百〜数千の
SocketExceptionが発生していたのに対し、新実装では5件未満に削減 Stat呼び出しのオーバーヘッドは軽微(システムコール1回)で、例外割り当てと比較して大幅にコスト削減- CPU浪費(
FirstChanceExceptionハンドラの過度な呼び出し)を防止
関連Issue
その他
TOCTOU(Time of Check, Time of Use)ウィンドウが導入されますが、Statチェック後に次のリトライループ反復までの間にパイプファイルが作成された場合でも、ConnectInternalのポーリングループで次回リトライ時に検出されるため、例外フローディングは再発生しません。既存のClientConnect_Throws_Timeout_When_Pipe_Not_Foundテストにより、タイムアウト時のTimeoutException動作は変更なく維持されることを確認済みです。