Repository navigation
Sync msft_12_10_2026 - #1340
Merged
Merged
Sync msft_12_10_2026#1340
Conversation
) ## Summary `TryGetProviderInfo_OpenVINO()` is an optional probe that should log and return `nullptr` when its provider library is unavailable. It currently calls `ProviderLibrary::Get()`, which uses `ORT_THROW_IF_ERROR(Load())`. With `ORT_NO_EXCEPTIONS`, that macro aborts instead of reaching the catch-and-return path. Check the library's load status before calling the reference getter. Preserve runtime-error telemetry and the detailed error log, and return `nullptr` on a failed status. Required getters and provider initialization semantics remain unchanged. Add isolated native tests for repeated missing shared/provider libraries, missing `GetProvider` export cleanup and replacement, and successful initialization/reload. The fixtures use the real `Provider` interface and require no OpenVINO installation. The no-exceptions target recompiles the actual bridge and error-message helper with compiler exceptions disabled, including ONNX's no-exceptions definition. A compile-time check rejects accidentally enabled exception unwinding. ## Validation - Windows Release MSVC build and all eight regression cases passed across normal and compiler-no-exceptions targets. - Edge clang-cl C++20 syntax check of the actual bridge passed with `-fno-exceptions`, `ORT_NO_EXCEPTIONS`, and `ONNX_NO_EXCEPTIONS`. - Scoped lint, formatting, and whitespace checks passed. The isolated no-exceptions target links the normal ORT test libraries; this is not a globally no-exceptions build of every dependency. Linux, macOS, and AIX runtime tests have not been run locally.
## Summary Fix materialized ONNX node-test failures for `INT2`, `UINT2`, and `FLOAT8E8M0` by preserving the correct element type when converting ONNX `TensorProto` values into ORT tensors. ## Problem The ONNX wire-format `TensorProto_DataType` values do not numerically match the public `ONNXTensorElementDataType` values for recently added element types such as: - `INT2` - `UINT2` - `FLOAT8E8M0` The ONNX node-test loader converted the type correctly into `ele_type`, but then ignored that value and created the tensor using a numeric cast: ```cpp static_cast<ONNXTensorElementDataType>(tensor_proto.data_type())
…t#33143) # 🚀 WebGPU Chunked Gated Delta Net Prefill Optimization ## ⚡ Motivation Prefill in WebGPU `GatedDeltaNet` previously relied on purely sequential token-by-token recurrence. While well-suited for single-token decode, this serial dependency chain underutilized GPU compute during prompt processing, creating a noticeable Time-To-First-Token (TTFT) bottleneck on models like Qwen 3.8-27B. ## 🔧 Optimization We overhauled prefill by breaking the sequential token chain into parallel blocks and maximizing GPU on-chip memory reuse: - **Chunk Factorization (Parallel Recurrence)**: Grouped tokens into chunks of 16. Within each chunk, intra-token interactions form a lower-triangular system $(I + M)$ that we solve in parallel via forward substitution. This turns token-by-token recurrence into parallel matrix ops, leaving only a fast state carry between chunks. - **Collaborative Shared Memory Tiling**: Cooperatively cached $Q, K, W,$ and $Q_g$ tiles into fast on-chip workgroup shared memory (acting like an L1 cache) instead of letting 128 threads redundantly fetch from slow VRAM. This cut inner-loop global DRAM reads by **128x**. - **4-Wide Vectorization**: Unrolled inner dot products and accumulator loops 4 elements at a time, allowing the GPU compiler to issue 4-wide fused multiply-accumulate (FMA) instructions to saturate Apple Silicon SIMD execution units. - **Bounded Workspace Allocation**: Fixed sequence budgeting so scratch memory scales linearly with sequence length (`O(seq_len)`) per sequence rather than quadratically (`O(batch^2)`), staying safely under the 64 MiB hardware buffer cap. ## 🎯 Scope This PR adds an experimental chunkwise prefill route to contrib `GatedDeltaNet` on WebGPU: - Activates on Apple adapters with Qwen gating, sigmoid beta, L2-normalized Q/K, and gated-delta updates when `chunk_size=16` is explicitly configured. - Decode steps, unnormalized inputs, unsupported head dims, state-capture modes, and the default `chunk_size=64` remain on the existing recurrent path. ## ✅ Validation 1. **🧪 ONNX Runtime Unit Tests** - Added unit test cases in `GatedDeltaNetWebGpuTest` covering partial chunks, ragged/empty sequences, packed QKV, and optional final state retention. - All 20 WebGPU Gated Delta Net operator and planning tests pass (`20/20 passed`). - C++ formatting verified clean via `lintrunner --take CLANGFORMAT`. 2. **📊 GenAI Model Benchmark (Qwen 3.8-27B)** - Measured on Apple M4 Pro (16-core GPU, 64 GB unified memory) with 1077 prompt tokens, batch size 1, greedy decoding across 2 warmups and 5 fresh-process measured runs. - **TTFT reduced by 14.05%** (from `14.920 s` down to `12.823 s`, saving `2.10 s` per request). - Decode throughput (`8.48 tok/s`) and peak memory (`16.30 GiB`) remained steady, with 100% token output match across benchmark runs. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Prathik Rao <prathikrao@microsoft.com>
### Description - Gate CUDA MoE/QMoE expert-counting tests on compute capability 8.0+. - Apply the guard centrally to standard, tiled, and single-token cases. ### Motivation and Context The Python CUDA Package Test Pipeline ran `CudaQMoESingleToken` on an older GPU and failed with `Arch unsupported for MoE GEMM`. These tests use grouped GEMM kernels that require SM80+. Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tianleiwu <30328909+tianleiwu@users.noreply.github.com>
…esting package. (microsoft#33131) This pull request updates the CUDA 13 packaging CI pipelines to simplify CUDA version handling and add Java CUDA packaging support. The main changes involve moving the CUDA version from a parameter to a variable, updating pipeline references for Java package testing, and including a new Java CUDA packaging stage. Pipeline configuration improvements: * Changed `CudaVersion` from a parameter to a variable in `c-api-noopenmp-packaging-pipelines-cuda13.yml` to simplify how the CUDA version is managed and referenced throughout the pipeline. [[1]](diffhunk://#diff-1ea2287c32c5f81e475fa3c5caf4968fd3f9b494495f933031e3a210fc17b55dL51-L56) [[2]](diffhunk://#diff-1ea2287c32c5f81e475fa3c5caf4968fd3f9b494495f933031e3a210fc17b55dR93-R94) * Updated the `Nuget - Packaging - CUDA13` pipeline reference in `jar_package_testing.yml` to ensure Java package tests use the correct pipeline artifact. Java packaging integration: * Added a new Java CUDA packaging stage by including the `java-cuda-packaging-stage.yml` template in the main packaging pipeline. Other improvements: * Updated the reference to `CudaVersion` in the NuGet combine CUDA stage to use the new variable instead of the removed parameter. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: eserscor <247253654+eserscor@users.noreply.github.com> Co-authored-by: Tianlei Wu <tlwu@microsoft.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
### Description <!-- Describe your changes. --> Promote the model package surface from the experimental name-based lookup to the stable `OrtModelPackageApi` table. - Add `OrtApi::GetModelPackageApi` with stable C and C++ APIs. - Remove model package entries and opaque types from the experimental API headers. - Update the existing model package tests and integration documentation to use the stable API. - Enforce stable C API output contracts for required pointers and failed calls. - Raise the Android minimal binary-size baseline to the next 2 KiB boundary for the expected 46-byte API growth. `lintrunner` passed. Build and test execution were not run locally at the author's request. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> The model package API has completed its experimental phase and is ready to become a stable, versioned ONNX Runtime API surface.
## Summary Adds direct WebGPU W8A16 support for QMoE expert weights stored as FP8 E4M3 with 128x128 FP32 block scales, matching the Qwen 3.8 Flash Next MTP expert checkpoint format without requantization or dense weight materialization. ## Changes - Extends the existing `quant_type="fp8"` QMoE mode: `block_size=128` consumes `fc*_scales` shaped `[E, ceil(N/128), ceil(K/128)]`; omitted block size retains the existing CUDA global-scale FP8 contract. - Adds a selected-expert WebGPU shader that decodes raw E4M3 bytes and applies block scales during FP16/FP32 accumulation. - Supports direct expert dispatch for prefill and indirect top-k expert dispatch for single-token decode. - Keeps integer, FP4, NVFP4, and WFP4AFP8 behavior unchanged. - Adds exact two-expert WebGPU coverage with distinct per-expert scale products. ## Historical validation (initial Windows run) - Windows Release `onnxruntime_providers_webgpu` builds successfully. - Windows Release `onnxruntime_provider_test` builds successfully. - `MoETest.QMoETest_WebGPU_BlockFp8_128x128` passes locally on D3D12. - `clang-format --dry-run --Werror` and `git diff --check` pass. - Editor diagnostics report no errors in changed files. ## Target / follow-up - Targets `main` directly; the WebGPU MoE/QMoE prerequisite from microsoft#32447 is merged. This PR's review diff is limited to six FP8-related files, independent of the Qwen integration branch. - GenAI export wiring for MTP block-FP8 QMoE and full-model chat/performance measurements remain follow-up work. The INT4 RTN model measurements are not validation of the block-FP8 checkpoint. ## Historical validation (earlier main restack) - Linux Release static WebGPU provider and provider-test builds passed on current `main`. - All 14 `MoETest.QMoETest_WebGPU_*` tests passed on NVIDIA H200/Vulkan, including single-token decode, a 3x3 non-word-aligned expert-boundary case, a 129x129 four-scale-tile case, and negative integer-weight validation. - Focused `clang-format --dry-run --Werror` and `git diff --check` passed. ## Historical review follow-up (October 5) Added a separate-FC3 block-FP8 single-token test covering k=2 indirect expert routing, broadcast input, SwiGLU, and distinct per-expert FC1/FC2/FC3 scales. All 17 focused QMoE WebGPU tests passed on H200/Vulkan. All review threads have replies and are resolved; CI is rerunning for the new commit. ## Historical main update (October 5) Merged current `main` after microsoft#32878 landed and reconciled block-FP8 routing with its INT2/mixed-width QMoE logic. The review diff remains limited to the FP8 QMoE files. An isolated Linux static WebGPU provider/test build and all 14 focused block-FP8 plus INT2 compatibility tests passed on H200; the stacked tiled follow-up also passed 15 focused H200 tests. New-head CI is running. ## Latest validation (October 6, `40cebdeeef`) - Merged upstream `main` at `aac791ef2408`, resolved the QMoE schema/documentation conflicts, and confirmed GitHub reports this head as mergeable. - The Linux static WebGPU `onnxruntime_provider_test` build passed; all 26 focused `MoETest.QMoETest_WebGPU_*` tests passed on NVIDIA H200/Vulkan. The numerical block-FP8 reference now covers both FP16 and FP32 inputs/outputs, including FP8 decoding, accumulation, and biases. - Before FC1, FC2, or optional FC3 dispatch, the WebGPU path rejects workgroup dimensions that would be normalized and projections exceeding 32-bit shader addressing. Direct expert byte offsets and view sizes use 64-bit arithmetic; the shared limit also covers indirect expert indexing. The oversized-dispatch rejection has an H200 regression test. - The six review threads concerning FP32 coverage, dispatch normalization, and expert-offset overflow have replies and are resolved. New-head CI is still pending; earlier test counts and CI statements above describe their respective historical heads, not the current result. ## October 6 follow-up Reject orphan block-FP8 FC3 scales instead of silently ignoring them (09737a3); 27 focused H200 WebGPU QMoE tests pass. Refreshed generated ContribOperators.md to match the schema and address Windows GPU documentation CI. Fresh CI is pending. ## October 7 review follow-up Reject all four optional activation-scale inputs (17–20) in WebGPU block-FP8 mode instead of silently ignoring them. The GPU-only negative regression supplies each input separately. Updated the schema and generated operator docs to state that activation scales are not accepted. All 28 focused H200 WebGPU QMoE tests pass on eb51a28; new-head CI is pending. ## October 7 CI follow-up Merged current main (6030cc6), including upstream CUDA GQA fix microsoft#33179: the previous Linux/Windows CUDA and TensorRT builds failed because `is_int8` was used before its declaration in upstream CUDA code, not in this PR's WebGPU changes. The updated Linux static WebGPU provider test builds and all 28 focused H200 QMoE tests pass. Previous-head Python 3.14 and Windows QNN jobs failed ONNX materialized-node tests; Android minimal binary size exceeded its threshold by 1,494 bytes. New-head CI is running; these failures are not yet claimed fixed until the fresh checks report. ## October 7 upstream CI fix merged microsoft#33168 merged to main and corrects the ONNX wire-type to C-API-type conversion behind the old-head Windows QNN/Python 3.14 materialized-node failures. Merged main at fdf7f9d; static WebGPU tests build and all 28 focused H200 QMoE cases pass. The old-head Android binary-size check passed. New-head CI is running; no claim of CI green until the fresh checks finish. --------- Co-authored-by: Sayan Shaw <sayanshaw@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Description
Add an opt-in wave-aware column-tile heuristic for the CUDA MatMulNBits
fpA_intB GEMV. Decode projections can leave the final block wave
underfilled; selecting among the existing CtaN=2/4/8 kernels improves
wave utilization on the measured sm_120 configuration.
## Summary of Changes
- Enable with
`SessionOptions.add_session_config_entry("ep.cuda.fpa_intb_gemv_wave_aware",
"1")`. Unset or `"0"` retains the existing dispatch; other explicit
values are rejected.
- Keep the existing sm_12x, fp16/int4 SM80-interleaved, no-zero-point,
M=8 guards. Other devices, types, layouts, and M values retain their
existing dispatch even with the option enabled.
- Carry the per-session flag into both tactic profiling and inference.
Include dispatch mode in the shared tactic-cache key so opt-in and
opt-out sessions cannot reuse one another's profiling results.
- Add off/on/off session-option parity tests for M=7/8/9 and
N=512/10240, plus invalid-value coverage.
- Squash the original implementation and its follow-up dispatch fix into
a single commit, rebased onto current `main`.
## Testing
- Repository lintrunner: RUFF, RUFF-FORMAT, and CLANGFORMAT passed.
- Compile-only checks of the current MatMulNBits and fpA_intB profiler
translation units passed with the compact CUDA plugin defines.
- Standalone CUDA graph probe against this branch on RTX 5090: 18
launch/output checks passed. Default/off uses CtaN=4; opt-in M=8 uses
CtaN=2 for N=512/10240; M=7/9 remain unchanged. Exact controlled-data
outputs and distinct cache entries passed.
- Added Python session tests have not run against a rebuilt full plugin
yet. Run `python -m pytest
onnxruntime/test/python/quantization/test_op_matmulnbits_prepacked_cuda.py
-k wave_aware` with a build containing this change.
- Earlier controlled model A/B for the wave-aware heuristic measured
approximately 2.3% decode improvement on RTX 5090. That measurement
predates this default-off session-option wrapper; no performance claim
is made for other GPUs.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
### Description This PR merges the current `main` telemetry-volume behavior and adds the Windows 1DS port: - applies deterministic 1% client-side sampling to session and high-volume events while keeping the once-per-process `ProcessInfo` event unsampled - makes 1DS the default telemetry backend for supported native builds, including Windows - preserves Windows TraceLogging behind `--use_windows_telemetry` / `onnxruntime_USE_WINDOWS_TELEMETRY=ON` - repairs malformed and oversized registry DeviceId values under a per-user mutex - falls back from `LOCALAPPDATA` to `APPDATA`, `HOME`, `USERPROFILE`, then `HOMEDRIVE` + `HOMEPATH` for Windows cache storage - preserves telemetry completion events for malformed model loads and early initialization failures ### Backend selection | Build option | Backend | |---|---| | Default supported native build | 1DS | | `--use_windows_telemetry` | Windows TraceLogging | | `--no_telemetry` | None | | `-Donnxruntime_USE_TELEMETRY=ON` | 1DS | | `-Donnxruntime_USE_WINDOWS_TELEMETRY=ON` | Windows TraceLogging; telemetry is enabled automatically | ### Validation - repository lint on all changed C++/Python/CMake files - Visual Studio 2026 RelWithDebInfo build of `onnxruntime_test_all` with default Windows 1DS telemetry - Visual Studio 2026 RelWithDebInfo build of `onnxruntime_test_all` with explicit Windows TraceLogging - 42 focused Windows DeviceId, telemetry context, environment, no-throw, redaction, sampling, adapter, and driver payload tests - Linux/WSL RelWithDebInfo build of the `onnxruntime_common` production target - `python -m unittest tools.ci_build.test_build_args` (10 tests) --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: bmehta001 <13375251+bmehta001@users.noreply.github.com> Copilot-Session: 9e493808-b0e7-4c22-baa6-696ce165f920 Copilot-Session: 39dd1605-0e50-4029-9ed7-44fdb27545d8 Copilot-Session: 2f0ab518-b6d4-47f8-928f-dc214284a697 Copilot-Session: 49b5981f-971c-4991-9060-da1c74378cd8 Copilot-Session: c1532bdc-a17f-4d16-8468-4b3aa947ce4b Copilot-Session: 18d20bc2-fee6-431a-b940-b1184677fa48 Copilot-Session: a9e28009-b56c-4d6b-b8ae-de5603e7ddfb Copilot-Session: 90d1ead3-317b-47ff-bae3-e516f413e980 Copilot-Session: b7025dd7-76ed-481f-a1cd-8c9b3842c33b Copilot-Session: a2014890-6169-48f8-8a75-10437dbcfadc Copilot-Session: 75156a29-cc45-4997-ae41-d2e70aac19b0 Copilot-Session: 79d59ee4-9497-48b3-8902-a57991139d80 Copilot-Session: 2644aedb-8a2f-4d76-85ba-1f43630118b2 Copilot-Session: ae067cf5-9a04-4c2b-8d00-cb911050ba34 Copilot-Session: 165d0e21-9ccd-41b5-9416-48b46c7f0f05 Copilot-Session: 2156f079-833f-4281-bdc8-868c8cf4fb7d Copilot-Session: ea73d264-2931-408a-9d30-651055ca2c3a Copilot-Session: 53955692-574a-47b4-9739-e06587c19e03 Copilot-Session: f5d17bfb-f95b-4f96-b336-b9d005c2688d Copilot-Session: 046d3fd1-09ed-4080-80b2-b6fee862804c
### Description <!-- Describe your changes. --> Bump ONNX Runtime from 1.31.0 to 1.32.0 and keep native, Python, and JavaScript release metadata synchronized. - Set `ORT_API_VERSION` to 32 and update the release-version assertions for `OrtApi`, `OrtCompileApi`, and `OrtEpApi`. - Update all four JavaScript package manifests, lockfiles, generated version modules, and Node.js installation metadata. - Add the 1.32.0 Python release-history entry. - Preserve existing API layouts and dependency versions. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Prepare main for the 1.32 development cycle, following the previous version bump in microsoft#32523. Use the existing Python version-update helpers and JavaScript metadata generator. ### Validation - Release consistency checks across all 20 changed files: passed. - `c++ -std=c++17 -fsyntax-only -x c++ -Iinclude/onnxruntime -Ionnxruntime -`: passed with 40 existing version-validation assertions and 47 API release/ABI assertions supplied on stdin. - `source .venv/bin/activate && lintrunner onnxruntime/__init__.py include/onnxruntime/core/session/onnxruntime_c_api.h onnxruntime/core/session/onnxruntime_c_api.cc onnxruntime/core/session/compile_api.cc onnxruntime/core/session/plugin_ep/ep_api.cc`: passed. - From `js/`, `./node_modules/.bin/prettier --check common/package.json common/package-lock.json common/lib/version.ts node/package.json node/package-lock.json node/lib/version.ts node/script/install-metadata-versions.js web/package.json web/package-lock.json web/lib/version.ts react_native/package.json react_native/package-lock.json react_native/lib/version.ts`: passed. - From `js/`, `./node_modules/.bin/eslint common/lib/version.ts node/lib/version.ts web/lib/version.ts react_native/lib/version.ts`: passed. - From `js/`, `npm run prepare`: passed. - `git diff --cached --check`: passed. - Full runtime build and runtime test suites: not run. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…es/nextjs-default (microsoft#33194) Bumps [next](https://github.com/vercel/next.js) from 15.5.24 to 15.5.27. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vercel/next.js/releases">next's releases</a>.</em></p> <blockquote> <h2>v15.5.27</h2> <p>This release contains security fixes for the following advisories:</p> <p>Medium:</p> <ul> <li><a href="https://github.com/vercel/next.js/security/advisories/GHSA-f87g-xv8r-7p7x">Information disclosure in Next.js App Router metadata image routes via dynamicParams bypass</a></li> <li><a href="https://github.com/vercel/next.js/security/advisories/GHSA-4jqv-mc3x-m676">Cache poisoning of SSG and ISR pages in self-hosted Next.js applications</a></li> <li><a href="https://github.com/vercel/next.js/security/advisories/GHSA-mcj8-r9mp-w47p">Cache poisoning in Next.js SSG/ISR rendering leads to cross-user content substitution and persistent denial of service</a></li> </ul> <h2>v15.5.26</h2> <p>This release contains additional security hardening for <code>next/og</code>. For more information, check out <a href="https://nextjs.org/blog/nextjs-security-update-september-22-2026">https://nextjs.org/blog/nextjs-security-update-september-22-2026</a></p> <h2>v15.5.25</h2> <p>Follow-up release to <a href="https://github.com/vercel/next.js/releases/tag/v15.5.24">v15.5.24</a> re-enabling AVIF Image Optimization when newer versions of <code>sharp</code> are installed (<a href="https://redirect.github.com/vercel/next.js/pull/97954">#97954</a>).</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vercel/next.js/commit/def7eff9063f79cf58610c15fe58dd78b967c885"><code>def7eff</code></a> v15.5.27</li> <li><a href="https://github.com/vercel/next.js/commit/52c94abdd2ea5f416f5e8353ea8a2edd3fe311b8"><code>52c94ab</code></a> [lts-maintenance] Scope response cache keys to their source route (<a href="https://redirect.github.com/vercel/next.js/issues/219">#219</a>)</li> <li><a href="https://github.com/vercel/next.js/commit/785f4c2397f25690edf02b5a9f1cd7deaa1abb6d"><code>785f4c2</code></a> [lts-maintenance] Match Next data paths case-sensitively (<a href="https://redirect.github.com/vercel/next.js/issues/197">#197</a>)</li> <li><a href="https://github.com/vercel/next.js/commit/7217d63db316f1650cab9c2a15833155b540766c"><code>7217d63</code></a> [lts-maintenance][webpack] Ensure <code>dynamicParams</code> is respected in `opengraph-...</li> <li><a href="https://github.com/vercel/next.js/commit/d5979baa545099473b9fde8b6e03f06b3167242f"><code>d5979ba</code></a> [lts-maintenance][ci] Remove PR creation from deploy test workflow (<a href="https://redirect.github.com/vercel/next.js/issues/99093">#99093</a>)</li> <li><a href="https://github.com/vercel/next.js/commit/812ae7db8453c0aa65859ea7b2810007e033487c"><code>812ae7d</code></a> [lts-maintenance][test] Adjust deploy assertions for platform drift and the e...</li> <li><a href="https://github.com/vercel/next.js/commit/6936da55033075528f0dfad8f2ec29550b8c9053"><code>6936da5</code></a> v15.5.26</li> <li><a href="https://github.com/vercel/next.js/commit/b49b6ca47ed80a1a3601d63f7ed6c00355ca4bc1"><code>b49b6ca</code></a> [maintenance-lts] Harden next/og SVG serialization</li> <li><a href="https://github.com/vercel/next.js/commit/f391939d5ec8f1c32b339e902100987be0b6f959"><code>f391939</code></a> [15.5.x][test] Disable deploy tests triggering bot challenge (<a href="https://redirect.github.com/vercel/next.js/issues/98132">#98132</a>)</li> <li><a href="https://github.com/vercel/next.js/commit/013ee1d2f25326197453d129430a6da83b86426d"><code>013ee1d</code></a> v15.5.25</li> <li>Additional commits viewable in <a href="https://github.com/vercel/next.js/compare/v15.5.24...v15.5.27">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/onnxruntime/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#33191) Bumps [gradle/actions/wrapper-validation](https://github.com/gradle/actions) from 5.0.2 to 6.4.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/gradle/actions/releases">gradle/actions/wrapper-validation's releases</a>.</em></p> <blockquote> <h2>v6.4.0</h2> <h2>Highlights</h2> <h3>Gradle version support status in the Job Summary</h3> <p>The actions now report the support status of every Gradle version used in a workflow, as job annotations and in the Job Summary (<a href="https://redirect.github.com/gradle/actions/issues/1057">#1057</a>). Thanks to <a href="https://github.com/ov7a"><code>@ov7a</code></a> for the contribution.</p> <table> <thead> <tr> <th>version kind</th> <th>job annotation</th> <th>version table</th> <th>below the table</th> </tr> </thead> <tbody> <tr> <td><strong>End-of-life</strong> — two or more major versions behind the latest release</td> <td>warning</td> <td>:warning:</td> <td>expandable section naming the affected release lines, pointing at the <a href="https://gradle.org/security-subscription/">Gradle Security Subscription</a></td> </tr> <tr> <td><strong>Out of date</strong> — one major behind, or more than two minors behind on the current major</td> <td>notice</td> <td>:information_source:</td> <td>one-line legend pointing at the <a href="https://docs.gradle.org/current/userguide/feature_lifecycle.html#eol_support">Gradle release lifecycle</a> docs</td> </tr> <tr> <td><strong>Current</strong></td> <td>none</td> <td>—</td> <td>—</td> </tr> </tbody> </table> <p>Deliberately <em>not</em> reported: patch releases (being on <code>9.7.0</code> when <code>9.7.1</code> exists is not flagged) and pre-releases (release candidates, milestones and snapshots never produce annotations). The latest Gradle release is determined from the wrapper checksum data already bundled with the action, so no network access is required.</p> <p>Note that these annotations are emitted independently of the <code>add-job-summary</code> setting: setting <code>add-job-summary: 'never'</code> suppresses the Job Summary itself, but the warning and notice annotations remain.</p> <h3>Gradle itself is now reported in the dependency graph</h3> <p>The <code>dependency-submission</code> action now applies <strong>v1.5.0</strong> of the <a href="https://github.com/gradle/github-dependency-graph-gradle-plugin">GitHub Dependency Graph Gradle Plugin</a> (up from v1.4.2) (<a href="https://redirect.github.com/gradle/actions/issues/1069">#1069</a>).</p> <p>The headline change is that the Gradle Build Tool running the build is now reported as an <code>org.gradle:gradle-core</code> dependency, so that <strong>GitHub can surface known vulnerabilities in the version of Gradle used to run your build</strong>. These are the coordinates that GitHub advisories for the Gradle Build Tool are published against.</p> <p>Details worth knowing:</p> <ul> <li>The entry is always reported as a <strong>direct</strong> dependency with <strong>development</strong> scope.</li> <li>It is <strong>not</strong> affected by the project, configuration or scope filters, so it appears even in graphs that filter aggressively.</li> <li>Expect dependency graphs to gain this one new entry the first time a build runs after upgrading.</li> </ul> <h3>A new Gradle signing key, if you use dependency verification</h3> <blockquote> <p>[!IMPORTANT] If your build has <a href="https://docs.gradle.org/current/userguide/dependency_verification.html#sec:signature-verification">dependency verification</a> enabled, you must add a <strong>second</strong> trusted key before upgrading, or Dependency Graph generation will fail signature verification.</p> </blockquote> <p><code>github-dependency-graph-gradle-plugin</code> <code>1.5.0</code> is signed with a new Gradle signing subkey, and the key previously documented in our setup guide has been revoked upstream:</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/gradle/actions/commit/3f5f9adaf7d9fecd50b5935e54106014257a94e6"><code>3f5f9ad</code></a> Document the new Gradle signing key for dependency verification (<a href="https://redirect.github.com/gradle/actions/issues/1071">#1071</a>)</li> <li><a href="https://github.com/gradle/actions/commit/b031f6d1a92a4611986643414591f8f649182940"><code>b031f6d</code></a> [bot] Update dist directory</li> <li><a href="https://github.com/gradle/actions/commit/5bc4175609b5adc59007637c78e2eb52125bea3d"><code>5bc4175</code></a> Bump dependency-graph-gradle-plugin to 1.5.0 (<a href="https://redirect.github.com/gradle/actions/issues/1069">#1069</a>)</li> <li><a href="https://github.com/gradle/actions/commit/f3ff59b4e4151fd189d67647ccb7b78ddde26db9"><code>f3ff59b</code></a> Combined automated updates: wrapper checksums, npm dependencies, setup-java (...</li> <li><a href="https://github.com/gradle/actions/commit/7927085475f60c9d4b43880590e265597c31d8b4"><code>7927085</code></a> Update .tool-versions: node 24.18.0, gradle 9.7.1, java 17 (<a href="https://redirect.github.com/gradle/actions/issues/1068">#1068</a>)</li> <li><a href="https://github.com/gradle/actions/commit/c3897a4e73a8f23b849f1980944785e7ae34c471"><code>c3897a4</code></a> [bot] Update dist directory</li> <li><a href="https://github.com/gradle/actions/commit/6b92be19055d28f8f52e00bd24bb215841656af4"><code>6b92be1</code></a> Update dependencies (<a href="https://redirect.github.com/gradle/actions/issues/1065">#1065</a>)</li> <li><a href="https://github.com/gradle/actions/commit/0d208da0581aab8a4c6c02b69957a02c7806bca8"><code>0d208da</code></a> [bot] Update dist directory</li> <li><a href="https://github.com/gradle/actions/commit/e49d0a36a8651e7efb23918f4532fe1d4f46de77"><code>e49d0a3</code></a> Report EOL and maintenance status for Gradle versions (<a href="https://redirect.github.com/gradle/actions/issues/1057">#1057</a>)</li> <li><a href="https://github.com/gradle/actions/commit/575435b1ea5344b0885c3387acd4752bca7a57b7"><code>575435b</code></a> Use the root-qualified <code>:wrapper</code> task (<a href="https://redirect.github.com/gradle/actions/issues/1064">#1064</a>)</li> <li>Additional commits viewable in <a href="https://github.com/gradle/actions/compare/0723195856401067f7a2779048b490ace7a47d7c...3f5f9adaf7d9fecd50b5935e54106014257a94e6">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [reviewdog/action-cpplint](https://github.com/reviewdog/action-cpplint) from 1.11.0 to 1.12.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/reviewdog/action-cpplint/releases">reviewdog/action-cpplint's releases</a>.</em></p> <blockquote> <h2>Release v1.12.0</h2> <h2>What's Changed</h2> <ul> <li>chore(deps): update actions/checkout action to v6 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/62">reviewdog/action-cpplint#62</a></li> <li>chore(deps): update actions/checkout action to v6.0.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/64">reviewdog/action-cpplint#64</a></li> <li>chore(deps): update peter-evans/create-pull-request action to v7.0.9 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/63">reviewdog/action-cpplint#63</a></li> <li>chore(deps): update peter-evans/create-pull-request action to v8 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/66">reviewdog/action-cpplint#66</a></li> <li>chore(deps): update peter-evans/create-pull-request action to v8.1.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/67">reviewdog/action-cpplint#67</a></li> <li>chore(deps): update actions/checkout action to v6.0.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/68">reviewdog/action-cpplint#68</a></li> <li>chore(deps): update peter-evans/create-pull-request action to v8.1.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/69">reviewdog/action-cpplint#69</a></li> <li>chore(deps): update actions/checkout action to v6.0.3 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/70">reviewdog/action-cpplint#70</a></li> <li>chore(deps): update actions/checkout action to v7 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/71">reviewdog/action-cpplint#71</a></li> <li>chore(deps): update reviewdog/action-depup action to v1.6.5 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/72">reviewdog/action-cpplint#72</a></li> <li>chore(deps): update actions/checkout action to v7.0.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/73">reviewdog/action-cpplint#73</a></li> <li>chore(deps): update reviewdog/action-shellcheck action to v1.32.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/74">reviewdog/action-cpplint#74</a></li> <li>chore(deps): update reviewdog to 0.21.1 by <a href="https://github.com/github-actions"><code>@github-actions</code></a>[bot] in <a href="https://redirect.github.com/reviewdog/action-cpplint/pull/75">reviewdog/action-cpplint#75</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/reviewdog/action-cpplint/compare/v1.11.0...v1.12.0">https://github.com/reviewdog/action-cpplint/compare/v1.11.0...v1.12.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/reviewdog/action-cpplint/commit/5f1bbc6ecc3dc6d9b2cb8ddae490464240ae415d"><code>5f1bbc6</code></a> Merge pull request <a href="https://redirect.github.com/reviewdog/action-cpplint/issues/75">#75</a> from reviewdog/depup/reviewdog</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/6609a49c2571f131492eba70c31c7d16725624a7"><code>6609a49</code></a> chore(deps): update reviewdog to 0.21.1</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/9cbd010dad857f3c40d9f00c304a87cda8bb024c"><code>9cbd010</code></a> Merge pull request <a href="https://redirect.github.com/reviewdog/action-cpplint/issues/74">#74</a> from reviewdog/renovate/reviewdog-action-shellcheck-1.x</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/23012098b3c320453417de51c860c49cfe470a38"><code>2301209</code></a> chore(deps): update reviewdog/action-shellcheck action to v1.32.1</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/8d74e96ce85957959865cd9d7e5d63bdbf2d37f4"><code>8d74e96</code></a> Merge pull request <a href="https://redirect.github.com/reviewdog/action-cpplint/issues/73">#73</a> from reviewdog/renovate/actions-checkout-7.x</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/56d0f4d09e747923e43381faffb2e766bef4d997"><code>56d0f4d</code></a> chore(deps): update actions/checkout action to v7.0.1</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/e6b7ff83701666725925695a056a88f7f86f83e4"><code>e6b7ff8</code></a> Merge pull request <a href="https://redirect.github.com/reviewdog/action-cpplint/issues/72">#72</a> from reviewdog/renovate/reviewdog-action-depup-1.x</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/6fd3ff241534d29d7d7de9c684d4203cb09ae727"><code>6fd3ff2</code></a> chore(deps): update reviewdog/action-depup action to v1.6.5</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/bbafc256f49d7f20b75e1c4034e34346e1ba515f"><code>bbafc25</code></a> Merge pull request <a href="https://redirect.github.com/reviewdog/action-cpplint/issues/71">#71</a> from reviewdog/renovate/actions-checkout-7.x</li> <li><a href="https://github.com/reviewdog/action-cpplint/commit/39e165fce891f05a3b2005973b337ac4906c2c6d"><code>39e165f</code></a> chore(deps): update actions/checkout action to v7</li> <li>Additional commits viewable in <a href="https://github.com/reviewdog/action-cpplint/compare/9552c62f4bd516c1e3a6f84eae56bd864cc304c6...5f1bbc6ecc3dc6d9b2cb8ddae490464240ae415d">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
**Summary** Add an opt-in internal WebGpuContext::FlushAndWaitChecked() helper for callers that need a checked host-completion boundary rather than submission-only synchronization. The helper reuses the owning context’s command recording, queue, and Dawn Instance / WaitAny machinery. Ordinary Flush , Session Run, and stream synchronization retain their existing behavior. No public API or ABI is added. **Behavior** - Flushes pending recorded work and waits for queue completion using OnSubmittedWorkDone , including when the recording is empty but work was previously submitted. - Returns failure Status for flush failures, failed waits or completion callbacks, and validation, out-of-memory, or internal WebGPU errors. - Explicitly checks Device::GetLostFuture() because queue completion can report success on an already-lost device. External device callbacks are preserved. - Retains the first uncaptured error on ORT-created devices while preserving existing logging. - Resolves all helper-owned error scopes on success and failure without consuming caller-owned outer scopes. Callback results remain valid if a wait fails. The completion boundary covers queue work submitted before the completion future is registered. It does not submit pending work from other recordings or cover later submissions. Error scopes cover flushing/submission, not earlier resource creation or encoding, and do not enable validation on devices created with skip_validation . **Validation** Built the native WebGPU provider and test binary with warnings treated as errors. All 10 focused tests passed on Dawn/Vulkan lavapipe, covering empty, pending, and submitted work; deferred dispatch; failure cleanup; validation/OOM propagation; outer-scope preservation; and device loss despite successful queue completion. Existing WebGPU context tests also passed, with one expected platform-condition skip. Deterministic internal-error and non-success work-done callback injection are unavailable in the existing test infrastructure; those coverage gaps are documented without introducing test hooks. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Updated [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp) from 2.1.9 to 4.1.2. <details> <summary>Release notes</summary> _Sourced from [SixLabors.ImageSharp's releases](https://github.com/SixLabors/ImageSharp/releases)._ ## 4.1.2 ## What's Changed * Harden codec and metadata input validation by @JimBobSquarePants in SixLabors/ImageSharp#3187 * Fix TIFF decoding of legacy 8-bit color maps by @JimBobSquarePants in SixLabors/ImageSharp#3189 **Full Changelog**: SixLabors/ImageSharp@v4.1.1...v4.1.2 ## 4.1.1 ## What's Changed * Fix CCITT decompressor bounds checks and error handling by @JimBobSquarePants in SixLabors/ImageSharp#3176 **Full Changelog**: SixLabors/ImageSharp@v4.1.0...v4.1.1 ## 4.1.0 ## What's Changed * GIF: background handling & quantizer overflow fix by @JimBobSquarePants in SixLabors/ImageSharp#3133 * Validate PBM max pixel value by @JimBobSquarePants in SixLabors/ImageSharp#3134 * Add support for Apple CgBI PNG images by @Erik-White in SixLabors/ImageSharp#3136 * Fix GIF transparency handling and dither by @JimBobSquarePants in SixLabors/ImageSharp#3143 * Bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in SixLabors/ImageSharp#3141 * Add BlendWithCoverage overloads. Optimize Rgba32 compatible shuffling. by @JimBobSquarePants in SixLabors/ImageSharp#3150 * Bump actions/checkout from 6 to 7 by @dependabot[bot] in SixLabors/ImageSharp#3146 * Bump actions/cache from 5 to 6 by @dependabot[bot] in SixLabors/ImageSharp#3149 * Fix convolution sampling for bounds smaller than the kernel radius by @JimBobSquarePants in SixLabors/ImageSharp#3152 * Enhance pixel formats and associated-alpha operations with optimizations by @JimBobSquarePants in SixLabors/ImageSharp#3154 * Bump actions/setup-dotnet from 5 to 6 by @dependabot[bot] in SixLabors/ImageSharp#3155 * Fix degeneracy check for resize transforms by @JimBobSquarePants in SixLabors/ImageSharp#3157 * Improvements to Apple CgBI PNG handling by @Erik-White in SixLabors/ImageSharp#3137 * Clone TIFF profiles into image metadata by @JimBobSquarePants in SixLabors/ImageSharp#3159 * Add AOT compiler seeds for pixel formats and ICO, CUR, QOI codecs by @JimBobSquarePants in SixLabors/ImageSharp#3160 * Normalize SIMD pipelines using TensorPrimitives_ by @JimBobSquarePants in SixLabors/ImageSharp#3161 * Add ANI decoder support by @Poker-sang in SixLabors/ImageSharp#2899 * Remove AntialiasThreshold from GraphicsOptions by @JimBobSquarePants in SixLabors/ImageSharp#3162 * Add plus and extended pixel blend modes by @JimBobSquarePants in SixLabors/ImageSharp#3163 * Fix 16-bit binary PBM sample byte order by @JimBobSquarePants in SixLabors/ImageSharp#3164 * Make MemoryAllocator limits configurable and extensible by @JimBobSquarePants in SixLabors/ImageSharp#3165 ## New Contributors * @Erik-White made their first contribution in SixLabors/ImageSharp#3136 **Full Changelog**: SixLabors/ImageSharp@v4.0.0...v4.1.0 ## 4.0.0 ## What's Changed * Update to net8 by @stefannikolei in SixLabors/ImageSharp#2583 * Handle dedup of local palette of 256 length - Main by @JimBobSquarePants in SixLabors/ImageSharp#2607 * Replace custom Crc32 by @JimBobSquarePants in SixLabors/ImageSharp#2611 * Sync 3.1 DrawImage fixes by @tocsoft in SixLabors/ImageSharp#2612 * Fix handling gif encoding for global palettes - Main by @JimBobSquarePants in SixLabors/ImageSharp#2615 * Bump actions/setup-dotnet from 3 to 4 by @dependabot[bot] in SixLabors/ImageSharp#2613 * Adjusted the casing of the Webp format name by @jscarle in SixLabors/ImageSharp#2623 * Fix Paeth Filter decode on platforms that do not support Ssse3 - Main by @JimBobSquarePants in SixLabors/ImageSharp#2620 * Fix WebP animation speed bug by @marklagendijk in SixLabors/ImageSharp#2624 * Promote PixelTypeInfo to Pixel by @stefannikolei in SixLabors/ImageSharp#2601 * TGA: Treat 32 bit True Color images always as transparent by @brianpopow in SixLabors/ImageSharp#2643 * Modernize and optimize pixel format operations across platforms. by @JimBobSquarePants in SixLabors/ImageSharp#2645 * Cleanup SimdUtils by @JimBobSquarePants in SixLabors/ImageSharp#2654 * Bump actions/cache from 3 to 4 by @dependabot[bot] in SixLabors/ImageSharp#2648 * Bump codecov/codecov-action from 3 to 4 by @dependabot[bot] in SixLabors/ImageSharp#2657 * Bump NuGet/setup-nuget from 1 to 2 by @dependabot[bot] in SixLabors/ImageSharp#2658 * Add v3.1.x fixes #2673 and #2674 into main. by @JimBobSquarePants in SixLabors/ImageSharp#2675 * Add fixes 2668, 2676, and 2677 to main by @JimBobSquarePants in SixLabors/ImageSharp#2678 * Merge 2681 to v4 Main by @JimBobSquarePants in SixLabors/ImageSharp#2690 * Add JPEG COM marker support by @RobertMut in SixLabors/ImageSharp#2641 * Bump actions/upload-artifact from 3 to 4 by @dependabot[bot] in SixLabors/ImageSharp#2625 * Only exit JPEG scan decoding after multiple EOF hits by @JimBobSquarePants in SixLabors/ImageSharp#2701 * V4 Ensure VP8X alpha flag is updated correctly. by @JimBobSquarePants in SixLabors/ImageSharp#2703 * Fix animated png handling (issue #2708) by @SpaceCheetah in SixLabors/ImageSharp#2710 * Merge latest release from v3 by @JimBobSquarePants in SixLabors/ImageSharp#2720 * Fix MacOS jobs by @antonfirsov in SixLabors/ImageSharp#2728 * Fix async-over-sync issue in Image.DecodeAsync() by @kroymann in SixLabors/ImageSharp#2725 * Fix overflow in MemoryAllocator.Create(options) by @antonfirsov in SixLabors/ImageSharp#2730 * GifDecoder: Limit lzw bits to a maximum of 12 bits by @brianpopow in SixLabors/ImageSharp#2744 * GifDecoder : Allow skipping bad metadata using identify by @JimBobSquarePants in SixLabors/ImageSharp#2749 * Add ICO and CUR file decoder. by @frg2089 in SixLabors/ImageSharp#2579 * v4 - Fix off-by-one error when centering a transform. by @JimBobSquarePants in SixLabors/ImageSharp#2761 * v4 Fix 2758 by @JimBobSquarePants in SixLabors/ImageSharp#2764 * Simplify Color Space Conversion APIs by @JimBobSquarePants in SixLabors/ImageSharp#2739 * Webp: Fix Issue 2763 by @brianpopow in SixLabors/ImageSharp#2767 * V4 Correctly break during Png decoding by @JimBobSquarePants in SixLabors/ImageSharp#2773 * V4 : Fix filtering on PNG encode. by @JimBobSquarePants in SixLabors/ImageSharp#2778 * Fix #2779 buffer overrun by @KirillAldashkin in SixLabors/ImageSharp#2780 * Fix ImageMetadata docs typo by @lofcz in SixLabors/ImageSharp#2781 * Add API for metadata conversion between formats. by @JimBobSquarePants in SixLabors/ImageSharp#2751 * Tiff decoder: Fix issue 2679 by @brianpopow in SixLabors/ImageSharp#2789 * Replace PngCrcChunkHandling by @JimBobSquarePants in SixLabors/ImageSharp#2786 * Add tagname to debugger visualization for Exif- and Iptc-values, to facilitate easier debugging and discovery by @lassevk in SixLabors/ImageSharp#2787 * V4 - Correctly handle transform spaces when building transform matrices. by @JimBobSquarePants in SixLabors/ImageSharp#2795 * Allow decoding Tiff of different frame size. by @JimBobSquarePants in SixLabors/ImageSharp#2788 * Add progressive JPEG encoder by @ardabada in SixLabors/ImageSharp#2740 * Fix using dither in BmpEncoder when bit per pixel is <= 4 by @mistoll in SixLabors/ImageSharp#2819 * Add QuadDistortion to ProjectiveTransformBuilder by @Socolin in SixLabors/ImageSharp#2748 * WEBP : Use Correct Width With AlphaDecoder by @JimBobSquarePants in SixLabors/ImageSharp#2823 ... (truncated) ## 3.1.12 ## What's Changed * v3 : Add Full Metadata Parsing for WEBP Animations by @JimBobSquarePants in SixLabors/ImageSharp#3002 * V3: Prevent negative allocation attempt for huge TIFF files by @JimBobSquarePants in SixLabors/ImageSharp#3004 * Backport v3 : Tiff decoder: Fix issue 2679 by @JimBobSquarePants in SixLabors/ImageSharp#3007 **Full Changelog**: SixLabors/ImageSharp@v3.1.11...v3.1.12 ## 3.1.11 ## What's Changed * Backport V3 - GIF: Check for end of stream when reading comments. by @JimBobSquarePants in SixLabors/ImageSharp#2955 **Full Changelog**: SixLabors/ImageSharp@v3.1.10...v3.1.11 ## 3.1.10 ## What's Changed * V3: Remove ExifTagValue.InteroperabilityIndex by @JimBobSquarePants in SixLabors/ImageSharp#2939 * V3 TIFF : Allow additional and undefined extra samples by @JimBobSquarePants in SixLabors/ImageSharp#2942 * V3 Use EXIF byte order for EXIF encoded strings. by @JimBobSquarePants in SixLabors/ImageSharp#2944 * V3 Backport : Reduce the number of memory allocations in lossless WebP encoder by @JimBobSquarePants in SixLabors/ImageSharp#2947 **Full Changelog**: SixLabors/ImageSharp@v3.1.9...v3.1.10 ## 3.1.9 ## What's Changed * V3: Do not attempt to decode iDAT chunks when image is fully decoded. by @JimBobSquarePants in SixLabors/ImageSharp#2927 * V3 - Do not throw exception for non-required chunks. by @JimBobSquarePants in SixLabors/ImageSharp#2929 * V3: Do not encode WEBP images exceeding max dimensions by @JimBobSquarePants in SixLabors/ImageSharp#2931 **Full Changelog**: SixLabors/ImageSharp@v3.1.8...v3.1.9 ## 3.1.8 ## What's Changed * V3 : Fix GIF, PNG, and WEBP Edge Case Handling by @JimBobSquarePants in SixLabors/ImageSharp#2882 * V3 Nested sub ifds parsing fix by @JimBobSquarePants in SixLabors/ImageSharp#2913 * V3: Undo horizontal prediction for each tile row in case of tiled tiff's by @JimBobSquarePants in SixLabors/ImageSharp#2914 * V3 - Use BPP from Color Writer for Compressor by @JimBobSquarePants in SixLabors/ImageSharp#2915 **Full Changelog**: SixLabors/ImageSharp@v3.1.7...v3.1.8 ## 3.1.7 ## What's Changed * V3 : Decode Chunky Tile Rows Directly. by @JimBobSquarePants in SixLabors/ImageSharp#2874 * V3: Gracefully handle LZW overflows by @JimBobSquarePants in SixLabors/ImageSharp#2880 * [3.1] Set LangVersion=12 unconditionally by @antonfirsov in SixLabors/ImageSharp#2896 **Full Changelog**: SixLabors/ImageSharp@v3.1.6...v3.1.7 ## 3.1.6 ## What's Changed * Mono AOT decoder workaround for slow jpeg decoding. by @JimBobSquarePants in SixLabors/ImageSharp#2762 * V3 - Correctly handle transform spaces when building transform matrices. by @JimBobSquarePants in SixLabors/ImageSharp#2791 * Backport : V3 Fix #2779 buffer overrun by @JimBobSquarePants in SixLabors/ImageSharp#2824 * Backport - v3 WEBP : Use Correct Width With AlphaDecoder by @JimBobSquarePants in SixLabors/ImageSharp#2827 * Rewrite ChunkedMemoryStream by @JimBobSquarePants in SixLabors/ImageSharp#2828 **Full Changelog**: SixLabors/ImageSharp@v3.1.5...v3.1.6 ## 3.1.5 ## What's Changed * [3.1] Fix overflow in MemoryAllocator.Create(options) by @antonfirsov in SixLabors/ImageSharp#2731 * v3 - Backport. Handle out of bounds Gif LZW max code by @JimBobSquarePants in SixLabors/ImageSharp#2754 * Fix off-by-one error when centering a transform. by @JimBobSquarePants in SixLabors/ImageSharp#2760 * v3.1.x Fix 2758 by @JimBobSquarePants in SixLabors/ImageSharp#2759 * v3.1.x - Backport Webp: Fix Issue 2763/2692 by @JimBobSquarePants in SixLabors/ImageSharp#2768 * Correctly break during Png decoding by @JimBobSquarePants in SixLabors/ImageSharp#2769 * Fix filtering on PNG encode. by @JimBobSquarePants in SixLabors/ImageSharp#2775 **Full Changelog**: SixLabors/ImageSharp@v3.1.4...v3.1.5 ## 3.1.4 ## What's Changed * Backport - Only exit JPEG scan decoding after multiple EOF hits by @JimBobSquarePants in SixLabors/ImageSharp#2702 * Ensure VP8X alpha flag is updated correctly. by @JimBobSquarePants in SixLabors/ImageSharp#2699 * Backport APNG fix to release/3.1.x by @SpaceCheetah in SixLabors/ImageSharp#2713 * Limit Read Palette Indices by @JimBobSquarePants in SixLabors/ImageSharp#2718 * Limit all memory allocations in the MemoryAllocator layer by @antonfirsov in SixLabors/ImageSharp#2706 * Clear Pixel Buffers on Decode. by @JimBobSquarePants in SixLabors/ImageSharp#2716 **Full Changelog**: SixLabors/ImageSharp@v3.1.3...v3.1.4 ## 3.1.3 ## What's Changed * Make DrawImage processor more robust to bad input. by @JimBobSquarePants in SixLabors/ImageSharp#2673 * Don't skip reading data for animation chunks on identify. by @JimBobSquarePants in SixLabors/ImageSharp#2674 * Fix AccessViolationException and hard crash with animated webp by @JimBobSquarePants in SixLabors/ImageSharp#2676 * Use a smarter approach to determine the transparent index when encoding palette Pngs. by @JimBobSquarePants in SixLabors/ImageSharp#2677 * Limit ancillary PNG chunk size. by @JimBobSquarePants in SixLabors/ImageSharp#2681 **Full Changelog**: SixLabors/ImageSharp@v3.1.2...v3.1.3 ## 3.1.2 ## What's Changed * Fix Paeth Filter decode on platforms that do not support Ssse3 by @JimBobSquarePants in SixLabors/ImageSharp#2618 * Backport: Fix WebP animation speed bug by @JimBobSquarePants in SixLabors/ImageSharp#2637 **Full Changelog**: SixLabors/ImageSharp@v3.1.1...v3.1.2 ## 3.1.1 ## What's Changed * Handle dedup of local palette of 256 length by @JimBobSquarePants in SixLabors/ImageSharp#2605 * Correctly calculate foreground Rectangle when negative background location is set (3.1 fix) by @tocsoft in SixLabors/ImageSharp#2609 * Handle case when Foreground image overhangs bottom of background image during DrawImage Call (3.1 target) by @tocsoft in SixLabors/ImageSharp#2610 * Fix handling gif encoding for global palettes. by @JimBobSquarePants in SixLabors/ImageSharp#2614 **Full Changelog**: SixLabors/ImageSharp@v3.1.0...v3.1.1 ## 3.1.0 ## What's Changed * Reduced intermediate allocations by @gfoidl in SixLabors/ImageSharp#2415 * Port colorconverter YCbCr and YCCk to arm by @stefannikolei in SixLabors/ImageSharp#2417 * Added and used Numerics.Vector{128|256}Count extension by @gfoidl in SixLabors/ImageSharp#2422 * Improvements around `fixed` by @gfoidl in SixLabors/ImageSharp#2418 * Create vector constants inline and not via ROS<byte> by @gfoidl in SixLabors/ImageSharp#2419 * More tests for Webp lossless utils by @brianpopow in SixLabors/ImageSharp#2424 * Fix incorrect comments by @hey-red in SixLabors/ImageSharp#2426 * Fixed invalid jpeg buffer width compliment for scalar color converters by @br3aker in SixLabors/ImageSharp#2427 * Update Readme by @brianpopow in SixLabors/ImageSharp#2433 * Add AdvSimd in ComponentProcessor by @stefannikolei in SixLabors/ImageSharp#2429 * Fix decoding tiled tiff with unequal tile width and height by @brianpopow in SixLabors/ImageSharp#2436 * Fix Vp8Residual costs calculation by @brianpopow in SixLabors/ImageSharp#2432 * Fix thresholds for Resize kernel tests by @brianpopow in SixLabors/ImageSharp#2440 * Tiff: Undo horizontal predictor for cmyk images by @brianpopow in SixLabors/ImageSharp#2459 * fix a typo in XML comment for struct `Rgb48` by @n0099 in SixLabors/ImageSharp#2463 * Fix #2467 bmp encoding issue for BMP with 1 bit per pixel and more pixels per row than divisible by 8. by @synercoder in SixLabors/ImageSharp#2471 * Update Directory.Build.targets by @Pashkinz92 in SixLabors/ImageSharp#2468 * bugfix in Rational.cs, when both Nominator and Denominator equals to 0 by @tsardaryanCamenAI in SixLabors/ImageSharp#2453 * Fix DrawImage offsetting issues and improve API parameter names. by @JimBobSquarePants in SixLabors/ImageSharp#2474 * Use more accurate bit for alpha lookup. by @JimBobSquarePants in SixLabors/ImageSharp#2473 * Fix for B&W pbm images with width not dividable by 8 by @ynse01 in SixLabors/ImageSharp#2481 * Tiff: ccitt compression, fix for issue #2451 by @brianpopow in SixLabors/ImageSharp#2483 * Use `FileOptions.Asynchronous` when doing async IO by @Neme12 in SixLabors/ImageSharp#2488 * Allow JFXX as an App0 marker header by @JimBobSquarePants in SixLabors/ImageSharp#2482 * Adding QOI support by @LuisAlfredo92 in SixLabors/ImageSharp#2446 * Vectorize TrimTransparentPixels in GifEncoderCore by @gfoidl in SixLabors/ImageSharp#2500 * Prevent crafted DOS attack. by @JimBobSquarePants in SixLabors/ImageSharp#2501 * Reverse automatic include behavior. by @JimBobSquarePants in SixLabors/ImageSharp#2515 * Handle EOF in Jpeg bit reader when data is bad to prevent DOS attack.… by @JimBobSquarePants in SixLabors/ImageSharp#2523 * Fix #2518 by @antonfirsov in SixLabors/ImageSharp#2519 * Fix for issue 2504 - IPTC and ICC profile information being lost during TIFF file save by @JeffP134 in SixLabors/ImageSharp#2535 * Preserve Gif color palettes and deduplicate frame pixels. by @JimBobSquarePants in SixLabors/ImageSharp#2455 * Bump actions/checkout from 3 to 4 by @dependabot in SixLabors/ImageSharp#2530 * Expose and conserve the color palette for indexed png images. by @JimBobSquarePants in SixLabors/ImageSharp#2485 * Change ExifTag TimeZoneOffset to Signed Short by @Cheesebaron in SixLabors/ImageSharp#2541 * Expose non-nullable configuration to remove AOT limiting null check by @JimBobSquarePants in SixLabors/ImageSharp#2514 * Add GPSHPositioningError exif tag by @Cheesebaron in SixLabors/ImageSharp#2543 * Disallow allocation attempts of unrepresentable sizes by @antonfirsov in SixLabors/ImageSharp#2545 * Add webp decoder option to handle the background color in ANIM chunk by @brianpopow in SixLabors/ImageSharp#2547 * Tiff decoding robustness improvements by @JimBobSquarePants in SixLabors/ImageSharp#2550 * PBM decoder robustness improvements and BufferedReadStream observability by @antonfirsov in SixLabors/ImageSharp#2551 * Follow up on post-merge discussions in #2551 by @antonfirsov in SixLabors/ImageSharp#2552 * APNG support by @Poker-sang in SixLabors/ImageSharp#2511 * WebP - Reduce the allocations in lossless encoding by @JimBobSquarePants in SixLabors/ImageSharp#2546 * Animated webp encoder by @Poker-sang in SixLabors/ImageSharp#2569 * Fix boxed quantization and update refs by @JimBobSquarePants in SixLabors/ImageSharp#2582 * Explicitly set BitsPerPixel and BitsPerSample to 1 for bicolor compressed images by @brianpopow in SixLabors/ImageSharp#2590 * [fix]: Fixed Unknown App0 Marker add profileResolver missing by @JoseEliasSantos in SixLabors/ImageSharp#2566 * Png- Do not attempt to read data for chunks of length 0. by @JimBobSquarePants in SixLabors/ImageSharp#2561 ... (truncated) ## 3.0.2 ## What's Changed * Handle EOF in Jpeg bit reader when data is bad to prevent DOS attack. by @JimBobSquarePants in SixLabors/ImageSharp#2516 **Full Changelog**: SixLabors/ImageSharp@v3.0.1...v3.0.2 ## 3.0.1 ## What's Changed * ISSUE #2385 - Implementing try get pattern to TryFindFormatByFileExtension(string extension, [NotNullWhen(true)] out IImageFormat? format) by @Ollie-Ave in SixLabors/ImageSharp#2386 * Remove mac specific skips by @stefannikolei in SixLabors/ImageSharp#2384 * Add Arm intrinsics to JpegColorConverter RGB by @stefannikolei in SixLabors/ImageSharp#2397 * Add arm64 intrinsics for cmyk converter by @stefannikolei in SixLabors/ImageSharp#2400 * Low-hanging fruit codegen optimizations by @gfoidl in SixLabors/ImageSharp#2401 * Webp: Dont use using statement for encodedAlphaData by @brianpopow in SixLabors/ImageSharp#2412 * Fixed wrong division hack by @gfoidl in SixLabors/ImageSharp#2413 * Port GrayscalConverter to Arm by @stefannikolei in SixLabors/ImageSharp#2409 * Fix RgbScalar by @stefannikolei in SixLabors/ImageSharp#2416 ## New Contributors * @Ollie-Ave made their first contribution in SixLabors/ImageSharp#2386 **Full Changelog**: SixLabors/ImageSharp@v3.0.0...v3.0.1 ## 3.0.0 ## What's Changed * Use .NET 6 only by @JimBobSquarePants in SixLabors/ImageSharp#2098 * Convolution: Border wrapping modes by @ynse01 in SixLabors/ImageSharp#2060 * Use ReadOnlySpan<byte> static data compiler optimization in more places by @turbedi in SixLabors/ImageSharp#2101 * Add support for decoding jpeg's with arithmetic coding by @brianpopow in SixLabors/ImageSharp#2073 * Replace Array.Clear(array, 0, array.Length) calls with Array.Clear(array) by @turbedi in SixLabors/ImageSharp#2103 * Preserve color profile when encoding bitmaps by @brianpopow in SixLabors/ImageSharp#2108 * Preserve color profile when encoding webp images by @brianpopow in SixLabors/ImageSharp#2109 * Preserve color profile when encoding PNG images by @brianpopow in SixLabors/ImageSharp#2110 * Add support for decoding webp images with animations by @brianpopow in SixLabors/ImageSharp#1985 * Jpeg compressed tiff: jpeg decoder should handle the conversion from YCbCr to RGB by @brianpopow in SixLabors/ImageSharp#2124 * Deduce color space as YCbCr if component id's are 1, 2, 3 by @brianpopow in SixLabors/ImageSharp#2135 * Bump actions/checkout from 2 to 3 by @dependabot in SixLabors/ImageSharp#2145 * Bump actions/setup-dotnet from 1 to 2 by @dependabot in SixLabors/ImageSharp#2143 * Bump actions/cache from 2 to 3 by @dependabot in SixLabors/ImageSharp#2142 * Bump actions/upload-artifact from 2 to 3 by @dependabot in SixLabors/ImageSharp#2146 * Bump codecov/codecov-action from 1 to 3 by @dependabot in SixLabors/ImageSharp#2144 * Skip invalid markers during jpeg decoding by @br3aker in SixLabors/ImageSharp#2147 * Tiff: Performance improvements for Fax4 decompression by @brianpopow in SixLabors/ImageSharp#2134 * Fix regression in TIF image loading by @brianpopow in SixLabors/ImageSharp#2150 * Used inline SIMD vectors if they are constants by @gfoidl in SixLabors/ImageSharp#2122 * Print environment info on tests start by @JimBobSquarePants in SixLabors/ImageSharp#2175 * Update License by @JimBobSquarePants in SixLabors/ImageSharp#2176 * Jpeg downscaling decoding by @br3aker in SixLabors/ImageSharp#2076 * Add support for decoding tiff images with CieLab color space by @brianpopow in SixLabors/ImageSharp#2127 * Assembly Trimming Support by @ds5678 in SixLabors/ImageSharp#2160 * Jpeg color space deduction fix by @br3aker in SixLabors/ImageSharp#2177 * Add support for decoding tiff with webp compressed data by @brianpopow in SixLabors/ImageSharp#2128 * Fix issue when writing lossy webp with alpha data by @brianpopow in SixLabors/ImageSharp#2173 * Fix run-length encode compression implementation mistake in tga encoder by @l1nxy in SixLabors/ImageSharp#2172 * TGA Encoder/Decoder Improvements by @brianpopow in SixLabors/ImageSharp#2197 * Tiff: Make sure 1 Bit compression is only used with 1 bit pixel type by @brianpopow in SixLabors/ImageSharp#2201 * Refactor `EnumUtils` and make it AOT-friendly. by @teo-tsirpanis in SixLabors/ImageSharp#2200 * Jpeg encoder complete rewrite by @br3aker in SixLabors/ImageSharp#2120 * Fix IPTC tags written on jpg files that contains non-English characters can't be correctly displayed on external apps #2212 by @lmerino-ep in SixLabors/ImageSharp#2213 * Identify transparency for indexed PNG correctly by @brianpopow in SixLabors/ImageSharp#2215 * Introduce Shared General Decoder Options plus Specialization by @JimBobSquarePants in SixLabors/ImageSharp#2180 * Add option to encode 2-bit Bitmap's by @brianpopow in SixLabors/ImageSharp#2220 * Fix AdaptiveThresholdProcessor throws IndexOutOfRangeException by @brianpopow in SixLabors/ImageSharp#2221 * Relaxed bmp dimensions validation by @smorokin in SixLabors/ImageSharp#2192 * Remove obsolete code by @JimBobSquarePants in SixLabors/ImageSharp#2189 * Implement Median Blur processor by @ynse01 in SixLabors/ImageSharp#2219 * Make TestFile Image threadsafe. by @JimBobSquarePants in SixLabors/ImageSharp#2225 * PNG filter improvements by @saucecontrol in SixLabors/ImageSharp#2226 * Use File-Scoped Namespaces and Global Implicit Usings by @JimBobSquarePants in SixLabors/ImageSharp#2229 * Fix for issue #2117 by @brianpopow in SixLabors/ImageSharp#2230 * Use System.Half for HalfTypeHelper by @JimBobSquarePants in SixLabors/ImageSharp#2233 * [Chore] Remove InlineningOption from ThrowHelpers by @blouflashdb in SixLabors/ImageSharp#2234 * Implement AutoLevel processor - Attempt 2 by @ynse01 in SixLabors/ImageSharp#2235 * Add TryGetLinearlySeparableComponents and tests by @JimBobSquarePants in SixLabors/ImageSharp#2224 ... (truncated) ## 2.1.13 ## What's Changed * V2 backport: 2243 - Ignore unknown chunks for WEBP by @sonbua in SixLabors/ImageSharp#2505 ## New Contributors * @sonbua made their first contribution in SixLabors/ImageSharp#2505 **Full Changelog**: SixLabors/ImageSharp@v2.1.12...v2.1.13 ## 2.1.12 ## What's Changed * Backport #2926 to release/2.1.x by @mus65 in SixLabors/ImageSharp#2985 ## New Contributors * @mus65 made their first contribution in SixLabors/ImageSharp#2985 **Full Changelog**: SixLabors/ImageSharp@v2.1.11...v2.1.12 ## 2.1.11 ## What's Changed * Backport V2 - GIF: Check for end of stream when reading comments. by @JimBobSquarePants in SixLabors/ImageSharp#2971 **Full Changelog**: SixLabors/ImageSharp@v2.1.10...v2.1.11 ## 2.1.10 ## What's Changed * Backport #2859 to release/2.1.x by @antonfirsov in SixLabors/ImageSharp#2890 * Backport #2701 to 2.1.x [copy] by @antonfirsov in SixLabors/ImageSharp#2891 **Full Changelog**: SixLabors/ImageSharp@v2.1.9...v2.1.10 Commits viewable in [compare view](SixLabors/ImageSharp@v2.1.9...v4.1.2). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/onnxruntime/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 5.4.0 to 6.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/setup-dotnet/releases">actions/setup-dotnet's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <h2>What's Changed</h2> <ul> <li>Migrate to ESM and upgrade dependencies by <a href="https://github.com/priyagupta108"><code>@priyagupta108</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/752">actions/setup-dotnet#752</a></li> <li>Bump actions/checkout from 6.0.3 to 7.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-dotnet/pull/751">actions/setup-dotnet#751</a></li> <li>chore(deps): bump <code>@actions/cache</code> to 6.2.0 by <a href="https://github.com/philip-gai"><code>@philip-gai</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/756">actions/setup-dotnet#756</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/philip-gai"><code>@philip-gai</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-dotnet/pull/756">actions/setup-dotnet#756</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-dotnet/compare/v5...v6.0.0">https://github.com/actions/setup-dotnet/compare/v5...v6.0.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/setup-dotnet/commit/a98b56852c35b8e3190ac28c8c2271da59106c68"><code>a98b568</code></a> chore(deps): bump <code>@actions/cache</code> to 6.2.0 (<a href="https://redirect.github.com/actions/setup-dotnet/issues/756">#756</a>)</li> <li><a href="https://github.com/actions/setup-dotnet/commit/afb2931642fd907238eb71bce2da0dcc910b3553"><code>afb2931</code></a> Bump actions/checkout from 6.0.3 to 7.0.0 (<a href="https://redirect.github.com/actions/setup-dotnet/issues/751">#751</a>)</li> <li><a href="https://github.com/actions/setup-dotnet/commit/6df8cefd1440cf9313e76b8fdb8aaf90cfa745a3"><code>6df8cef</code></a> Migrate to ESM and upgrade dependencies (<a href="https://redirect.github.com/actions/setup-dotnet/issues/752">#752</a>)</li> <li>See full diff in <a href="https://github.com/actions/setup-dotnet/compare/26b0ec14cb23fa6904739307f278c14f94c95bf1...a98b56852c35b8e3190ac28c8c2271da59106c68">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Description Add an opt-in paired-K half2 GEMV tactic for CUDA MatMulNBits fpA_intB. The kernel multiplies converter-order weight pairs directly by activation pairs, avoiding scalar weight repacking and activation broadcasts. ## Summary of Changes - Add a paired-K kernel for fp16 activations, int4 block-size-32 weights, no zero points or bias, and the SM80-interleaved weight layout. Half2 K partial sums are added in float at the end. - Expose it as an additional candidate for every supported M=5..8 tactic-profiler bucket, including exact `ep.cuda.fpa_intb_profile_m` overrides. The existing profiler chooses between the default GEMV, paired-K GEMV, and CUTLASS tactics. - Opt in with `ep.cuda.fpa_intb_gemv_paired_k` or the fallback environment variable `ORT_FPA_INTB_GEMV_PAIRED_K`. Unset, `"0"`, or `"off"` disables the feature (default); `"force"` offers only the paired candidate for the eligible bucket for testing; other values offer it as an additional candidate. Session configuration takes precedence over the environment. - Separate shared profile-cache entries by candidate-set mode so disabled, autotuned, and forced sessions cannot share incompatible tactic selections. - Add CUDA-only configuration-key parity coverage for exact profile buckets M=4..9 and values `"0"`, `"off"`, `"1"`, and `"force"`; disable CPU EP fallback in these sessions. - Remove the original paired M=8 path's wave-aware helper call. Use the existing CtaN=4 tile instead, leaving the default GEMV dispatch unchanged and allowing independent review/merge from microsoft#33186. ## Testing - Repository lintrunner: RUFF, RUFF-FORMAT, and CLANGFORMAT passed. - Compile-only checks of this branch's MatMulNBits and fpA_intB profiler translation units passed with compact CUDA plugin defines. - Standalone CUDA graph probe against this branch on RTX 5090: 36 checks passed across M=4..9, N=512/10240, and off/on/off launches. Kernel-function identity confirms paired-K only for enabled M=5..8; disabled launches and adjacent M retain the default kernel; CtaN remains 4. Exact controlled-data outputs and three separate profile-cache modes passed. - The focused full-plugin Python configuration test now disables CPU fallback. It was attempted locally, but the available CUDA 13.4 build could not run because the installed driver rejected its PTX as produced by an unsupported toolchain. - No new end-to-end performance measurement is claimed for this independent fixed-tile version. Earlier measurements of the stacked variant are not used as an independent speedup claim. ## Compatibility Default behavior is unchanged on all GPUs. When enabled, the extra tactic is restricted to its supported dtype, quantization, layout, and M bucket and is selected by measured profiling time. microsoft#33186 is a complementary optional optimization, not a prerequisite; shared configuration/cache files may require reconciliation when both changes land. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…stcases/vite-default (microsoft#33125) Bumps [source-map-js](https://github.com/7rulnik/source-map-js) from 1.2.1 to 1.2.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/7rulnik/source-map-js/releases">source-map-js's releases</a>.</em></p> <blockquote> <h2>v1.2.2</h2> <ul> <li> <p>Fix crash when executing in browser with CSP script-src that don't permit unsafe-eval (<a href="https://redirect.github.com/7rulnik/source-map-js/pull/29">#29</a>) <a href="https://github.com/xfournet"><code>@xfournet</code></a></p> </li> <li> <p>Fix denial of service from malicious indexed source maps (CVE-2026-93749) (<a href="https://redirect.github.com/7rulnik/source-map-js/pull/79">#79</a>)</p> <p>Reported by <a href="https://github.com/waydeshi"><code>@waydeshi</code></a> in <a href="https://redirect.github.com/7rulnik/source-map-js/issues/76">#76</a>. A fix was also proposed by <a href="https://github.com/aniebiet"><code>@aniebiet</code></a> in <a href="https://redirect.github.com/7rulnik/source-map-js/pull/78">#78</a>.</p> </li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md">source-map-js's changelog</a>.</em></p> <blockquote> <h2>1.2.2</h2> <ul> <li> <p>Fix crash when executing in browser with CSP script-src that don't permit unsafe-eval (<a href="https://redirect.github.com/7rulnik/source-map-js/pull/29">#29</a>) <a href="https://github.com/xfournet"><code>@xfournet</code></a></p> </li> <li> <p>Fix denial of service from malicious indexed source maps (CVE-2026-93749) (<a href="https://redirect.github.com/7rulnik/source-map-js/pull/79">#79</a>)</p> <p>Reported by <a href="https://github.com/waydeshi"><code>@waydeshi</code></a> in <a href="https://redirect.github.com/7rulnik/source-map-js/issues/76">#76</a>. A fix was also proposed by <a href="https://github.com/aniebiet"><code>@aniebiet</code></a> in <a href="https://redirect.github.com/7rulnik/source-map-js/pull/78">#78</a>.</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/7rulnik/source-map-js/commit/0a1d334fd1e55a47df97fcd60a7915d46df3b08a"><code>0a1d334</code></a> 1.2.2</li> <li><a href="https://github.com/7rulnik/source-map-js/commit/4c6fa26d77419bd8e48ec92844866cce7d9ae739"><code>4c6fa26</code></a> Update changelog</li> <li><a href="https://github.com/7rulnik/source-map-js/commit/cf7658058ceeaa8619d5ae0ec90be6905209d016"><code>cf76580</code></a> Fix denial of service from malicious indexed source maps (CVE-2026-93749) (<a href="https://redirect.github.com/7rulnik/source-map-js/issues/79">#79</a>)</li> <li><a href="https://github.com/7rulnik/source-map-js/commit/7899a86615c630f4fc220273ff9fe2e8e49a56df"><code>7899a86</code></a> Fix crash when executing browser with CSP script-src that don't permit unsafe...</li> <li>See full diff in <a href="https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/onnxruntime/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…es/vite-default (microsoft#33126) Bumps [@vue/server-renderer](https://github.com/vuejs/core/tree/HEAD/packages/server-renderer) to 3.5.43 and updates ancestor dependency [vue](https://github.com/vuejs/core). These dependencies need to be updated together. Updates `@vue/server-renderer` from 3.5.13 to 3.5.43 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vuejs/core/releases">@vue/server-renderer's releases</a>.</em></p> <blockquote> <h2>v3.5.43</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.42</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.41</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.40</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.39</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.38</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.37</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.35</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.34</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.33</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.32</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.31</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.30</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">@vue/server-renderer's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/vuejs/core/compare/v3.5.42...v3.5.43">3.5.43</a> (2026-09-17)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>compiler-sfc:</strong> ignore comment delimiters inside strings and url() when parsing css vars (<a href="https://redirect.github.com/vuejs/core/issues/15548">#15548</a>) (<a href="https://github.com/vuejs/core/commit/2fde3239ca3cdb9b152870f695cd3401fcaada94">2fde323</a>)</li> <li><strong>compiler-sfc:</strong> prepend semicolon for await in switch case (<a href="https://redirect.github.com/vuejs/core/issues/15498">#15498</a>) (<a href="https://github.com/vuejs/core/commit/9a1df69b63fecd743919af89a419783dd030b9f7">9a1df69</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15495">#15495</a></li> <li><strong>compiler-sfc:</strong> restore await scope when leaving nested blocks (<a href="https://github.com/vuejs/core/commit/54097087a0918b98f16c84599b1a6d654e952ca7">5409708</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15465">#15465</a></li> <li><strong>compiler-sfc:</strong> reuse parsed parent configs across tsconfig walks (fix <a href="https://redirect.github.com/vuejs/core/issues/15478">#15478</a>) (<a href="https://redirect.github.com/vuejs/core/issues/15480">#15480</a>) (<a href="https://github.com/vuejs/core/commit/d6febaab8c0d95a6320e7e37276c00e8159e9cb2">d6febaa</a>)</li> <li><strong>hydration:</strong> run leave hooks for hydration placeholders (<a href="https://redirect.github.com/vuejs/core/issues/15431">#15431</a>) (<a href="https://github.com/vuejs/core/commit/5dda192082afa4985951d90e229324d522e25c22">5dda192</a>)</li> <li><strong>reactivity:</strong> preserve readonly wrappers in array copy methods (<a href="https://redirect.github.com/vuejs/core/issues/15469">#15469</a>) (<a href="https://github.com/vuejs/core/commit/599f35bbb21f3d78b7aa0818342ab4f27442a333">599f35b</a>)</li> <li><strong>runtime-core:</strong> unmount v-once children after parent rerenders (<a href="https://redirect.github.com/vuejs/core/issues/15435">#15435</a>) (<a href="https://github.com/vuejs/core/commit/d720338d5d29c1fac82abbe6f7066fe703ce624d">d720338</a>)</li> <li><strong>shared:</strong> handle circular references in looseEqual (<a href="https://redirect.github.com/vuejs/core/issues/15499">#15499</a>) (<a href="https://github.com/vuejs/core/commit/718f782b14c7e0165d20b6f4dd8664f78054b62c">718f782</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15496">#15496</a></li> <li><strong>shared:</strong> preserve comment-like text in style values (<a href="https://redirect.github.com/vuejs/core/issues/15471">#15471</a>) (<a href="https://github.com/vuejs/core/commit/b9456cb40db714a6f573a1713d92e96d4c9e9533">b9456cb</a>)</li> <li><strong>suspense:</strong> don't drop nested suspense patches during hydration (<a href="https://redirect.github.com/vuejs/core/issues/15429">#15429</a>) (<a href="https://github.com/vuejs/core/commit/76d42dc1874e82e62e9650debd68a53472d810e0">76d42dc</a>)</li> <li><strong>suspense:</strong> keep the boundary pending while its branch is patched (<a href="https://redirect.github.com/vuejs/core/issues/15411">#15411</a>) (<a href="https://github.com/vuejs/core/commit/bfcfe9e4d0254f85af452544a058291ef88dce1a">bfcfe9e</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/7506">#7506</a></li> <li><strong>suspense:</strong> patch a hydrating boundary's pending branch in place (<a href="https://redirect.github.com/vuejs/core/issues/15432">#15432</a>) (<a href="https://github.com/vuejs/core/commit/2cde6f754cb3e4695a21fb5719e0c75ee2fc5c61">2cde6f7</a>)</li> <li><strong>suspense:</strong> unmount the DOM an interrupted async component claimed (<a href="https://redirect.github.com/vuejs/core/issues/15430">#15430</a>) (<a href="https://github.com/vuejs/core/commit/fb9b45ce780f656a23fcb374eb8ea9f7abadc594">fb9b45c</a>)</li> <li><strong>types:</strong> keep optional props when a runtime prop uses a generic PropType (<a href="https://redirect.github.com/vuejs/core/issues/15523">#15523</a>) (<a href="https://github.com/vuejs/core/commit/243aabccf05fefb3760f2dab1c2d75aa424baad7">243aabc</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/9546">#9546</a></li> </ul> <h2><a href="https://github.com/vuejs/core/compare/v3.5.41...v3.5.42">3.5.42</a> (2026-08-27)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>hydration:</strong> handle async component unmount before lazy hydration (<a href="https://redirect.github.com/vuejs/core/issues/15252">#15252</a>) (<a href="https://github.com/vuejs/core/commit/6e1814aa355aad8dd32a89873e95267297ae0609">6e1814a</a>)</li> <li><strong>hydration:</strong> handle moving unresolved async fragment (<a href="https://redirect.github.com/vuejs/core/issues/15263">#15263</a>) (<a href="https://github.com/vuejs/core/commit/a72036f66bcb9a4f3b3737cda19eeba1bc531e15">a72036f</a>)</li> <li><strong>runtime-core:</strong> avoid caching unmounted suspense children (<a href="https://redirect.github.com/vuejs/core/issues/15291">#15291</a>) (<a href="https://github.com/vuejs/core/commit/b535917d46d5c6e28c1d3b9185bfa1665127c73a">b535917</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15288">#15288</a></li> <li><strong>runtime-core:</strong> keep .trim result when combined with .number v-model modifier (<a href="https://redirect.github.com/vuejs/core/issues/15346">#15346</a>) (<a href="https://github.com/vuejs/core/commit/f8d42e1cf2a0ccb43c50fad6e972cb130c53824e">f8d42e1</a>)</li> <li><strong>runtime-core:</strong> resolve $el for dev root comment fragment (<a href="https://redirect.github.com/vuejs/core/issues/15313">#15313</a>) (<a href="https://github.com/vuejs/core/commit/8654f35118a1165ac30fd398ceaff8849c44d9d5">8654f35</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/12680">#12680</a></li> <li><strong>runtime-dom:</strong> support !important on CSS custom properties in style binding (<a href="https://redirect.github.com/vuejs/core/issues/15348">#15348</a>) (<a href="https://github.com/vuejs/core/commit/31da934fcbe73ab8ed187bf820c80b24ced474be">31da934</a>)</li> <li><strong>server-renderer:</strong> reject CR in attribute names (<a href="https://redirect.github.com/vuejs/core/issues/15266">#15266</a>) (<a href="https://github.com/vuejs/core/commit/a2b40db9a83b36ed9da3a16403cf8f040262d73f">a2b40db</a>)</li> <li><strong>shared:</strong> correctly compare Map and Set values (<a href="https://redirect.github.com/vuejs/core/issues/15328">#15328</a>) (<a href="https://github.com/vuejs/core/commit/ef82a26775952a665545d3771788bd23b2efec91">ef82a26</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15320">#15320</a></li> <li><strong>suspense:</strong> don't treat the leaving branch as the fallback while its mount is pending (<a href="https://redirect.github.com/vuejs/core/issues/15333">#15333</a>) (<a href="https://github.com/vuejs/core/commit/cd1974562357dd73101d048f207a694a4e5310ec">cd19745</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15332">#15332</a></li> <li><strong>v-model:</strong> re-sync select when model is overridden in change handler (<a href="https://redirect.github.com/vuejs/core/issues/15298">#15298</a>) (<a href="https://github.com/vuejs/core/commit/6eaecc14d8151a7d258b80ce0519e5ecc17a2bef">6eaecc1</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/10505">#10505</a></li> </ul> <h2><a href="https://github.com/vuejs/core/compare/v3.5.40...v3.5.41">3.5.41</a> (2026-08-05)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>compiler-core:</strong> preserve vnode lifecycle in stable v-for (<a href="https://redirect.github.com/vuejs/core/issues/11682">#11682</a>) (<a href="https://github.com/vuejs/core/commit/02421cdbc4da5dd2eaf39e6c51aa790f9310db62">02421cd</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/9239">#9239</a> <a href="https://redirect.github.com/vuejs/core/issues/12569">#12569</a></li> <li><strong>compiler-sfc:</strong> handle transformed template AST after cache invalidation (<a href="https://redirect.github.com/vuejs/core/issues/15136">#15136</a>) (<a href="https://github.com/vuejs/core/commit/a4440c01b96798a23bef12cb6f9ada5ffaba0d3a">a4440c0</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15126">#15126</a> <a href="https://redirect.github.com/vuejs/core/issues/15128">#15128</a></li> <li><strong>custom-element:</strong> preserve nested async mount order (<a href="https://redirect.github.com/vuejs/core/issues/15154">#15154</a>) (<a href="https://github.com/vuejs/core/commit/71f9ff58a2a8748b2c1ec26c55c89f7343b86110">71f9ff5</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15153">#15153</a></li> <li><strong>custom-element:</strong> warn when props override native properties (<a href="https://redirect.github.com/vuejs/core/issues/12125">#12125</a>) (<a href="https://github.com/vuejs/core/commit/22b53eafecf56a9fb97f00b8e8b69c90a073d2d4">22b53ea</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/12124">#12124</a></li> <li><strong>runtime-core:</strong> avoid re-fetching resource props with unchanged values (<a href="https://redirect.github.com/vuejs/core/issues/15105">#15105</a>) (<a href="https://github.com/vuejs/core/commit/a7513a1a3ed411ccd90bf135c6cba9c9cb2ef10b">a7513a1</a>)</li> <li><strong>runtime-core:</strong> restore SSR setup state when handling async setup result (<a href="https://redirect.github.com/vuejs/core/issues/15114">#15114</a>) (<a href="https://github.com/vuejs/core/commit/b6191cbf95c680e076164a319dd987a14de658c1">b6191cb</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15113">#15113</a></li> <li><strong>scheduler:</strong> avoid stack overflow when flushing very large post cb arrays (<a href="https://redirect.github.com/vuejs/core/issues/15143">#15143</a>) (<a href="https://github.com/vuejs/core/commit/c04a45d15498ebba0de3ceae674b88ac43cb9e76">c04a45d</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15142">#15142</a></li> <li><strong>slots:</strong> handle nullish v-bind slot props (<a href="https://redirect.github.com/vuejs/core/issues/15177">#15177</a>) (<a href="https://github.com/vuejs/core/commit/2506700b289c5277eb465bf959ce0ea23329094d">2506700</a>)</li> <li><strong>ssr:</strong> normalize hidden states during hydration (<a href="https://redirect.github.com/vuejs/core/issues/13125">#13125</a>) (<a href="https://github.com/vuejs/core/commit/4e467d7ae2cd7d0af031fac8865dcff73cb1cf16">4e467d7</a>)</li> <li><strong>transition:</strong> support transition to teleport component child (<a href="https://redirect.github.com/vuejs/core/issues/11959">#11959</a>) (<a href="https://github.com/vuejs/core/commit/77061fe88608a5ab77fec705ff65cb81779eb01c">77061fe</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/11910">#11910</a></li> <li><strong>types:</strong> preserve defineModel inference with factory defaults (<a href="https://redirect.github.com/vuejs/core/issues/15097">#15097</a>) (<a href="https://github.com/vuejs/core/commit/0516c43284084f0526032a1cc312fb6916bf04fe">0516c43</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15096">#15096</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vuejs/core/commit/5be58b4c475c1d14b4abacbfeda610394a0ee4e5"><code>5be58b4</code></a> release: v3.5.43</li> <li><a href="https://github.com/vuejs/core/commit/d63616ca17de965ed32dcb449a4c5cd9982f15d2"><code>d63616c</code></a> release: v3.5.42</li> <li><a href="https://github.com/vuejs/core/commit/a2b40db9a83b36ed9da3a16403cf8f040262d73f"><code>a2b40db</code></a> fix(server-renderer): reject CR in attribute names (<a href="https://github.com/vuejs/core/tree/HEAD/packages/server-renderer/issues/15266">#15266</a>)</li> <li><a href="https://github.com/vuejs/core/commit/d2c458be2542a628878cbfbdfebcb53b65d3e9f3"><code>d2c458b</code></a> release: v3.5.41</li> <li><a href="https://github.com/vuejs/core/commit/4e467d7ae2cd7d0af031fac8865dcff73cb1cf16"><code>4e467d7</code></a> fix(ssr): normalize hidden states during hydration (<a href="https://github.com/vuejs/core/tree/HEAD/packages/server-renderer/issues/13125">#13125</a>)</li> <li><a href="https://github.com/vuejs/core/commit/684a8defd2fdcba7eafa0c817b97ae1fab2c8b75"><code>684a8de</code></a> dx(runtime-core): warn when innerHTML/textContent overrides children (<a href="https://github.com/vuejs/core/tree/HEAD/packages/server-renderer/issues/15194">#15194</a>)</li> <li><a href="https://github.com/vuejs/core/commit/2506700b289c5277eb465bf959ce0ea23329094d"><code>2506700</code></a> fix(slots): handle nullish v-bind slot props (<a href="https://github.com/vuejs/core/tree/HEAD/packages/server-renderer/issues/15177">#15177</a>)</li> <li><a href="https://github.com/vuejs/core/commit/b6191cbf95c680e076164a319dd987a14de658c1"><code>b6191cb</code></a> fix(runtime-core): restore SSR setup state when handling async setup result (...</li> <li><a href="https://github.com/vuejs/core/commit/fa2885d8c48768d26f1666a01bd540ffe3b20f9b"><code>fa2885d</code></a> release: v3.5.40</li> <li><a href="https://github.com/vuejs/core/commit/8801e51ece2bf0c115f3ba31279e0230010d1114"><code>8801e51</code></a> test: add expect warn</li> <li>Additional commits viewable in <a href="https://github.com/vuejs/core/commits/v3.5.43/packages/server-renderer">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for <code>@vue/server-renderer</code> since your current version.</p> </details> <br /> Updates `vue` from 3.5.13 to 3.5.43 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vuejs/core/releases">vue's releases</a>.</em></p> <blockquote> <h2>v3.5.43</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.42</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.41</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.40</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.39</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.38</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.37</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.35</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.34</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.33</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.32</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.31</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details. For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p> <h2>v3.5.30</h2> <p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">vue's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/vuejs/core/compare/v3.5.42...v3.5.43">3.5.43</a> (2026-09-17)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>compiler-sfc:</strong> ignore comment delimiters inside strings and url() when parsing css vars (<a href="https://redirect.github.com/vuejs/core/issues/15548">#15548</a>) (<a href="https://github.com/vuejs/core/commit/2fde3239ca3cdb9b152870f695cd3401fcaada94">2fde323</a>)</li> <li><strong>compiler-sfc:</strong> prepend semicolon for await in switch case (<a href="https://redirect.github.com/vuejs/core/issues/15498">#15498</a>) (<a href="https://github.com/vuejs/core/commit/9a1df69b63fecd743919af89a419783dd030b9f7">9a1df69</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15495">#15495</a></li> <li><strong>compiler-sfc:</strong> restore await scope when leaving nested blocks (<a href="https://github.com/vuejs/core/commit/54097087a0918b98f16c84599b1a6d654e952ca7">5409708</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15465">#15465</a></li> <li><strong>compiler-sfc:</strong> reuse parsed parent configs across tsconfig walks (fix <a href="https://redirect.github.com/vuejs/core/issues/15478">#15478</a>) (<a href="https://redirect.github.com/vuejs/core/issues/15480">#15480</a>) (<a href="https://github.com/vuejs/core/commit/d6febaab8c0d95a6320e7e37276c00e8159e9cb2">d6febaa</a>)</li> <li><strong>hydration:</strong> run leave hooks for hydration placeholders (<a href="https://redirect.github.com/vuejs/core/issues/15431">#15431</a>) (<a href="https://github.com/vuejs/core/commit/5dda192082afa4985951d90e229324d522e25c22">5dda192</a>)</li> <li><strong>reactivity:</strong> preserve readonly wrappers in array copy methods (<a href="https://redirect.github.com/vuejs/core/issues/15469">#15469</a>) (<a href="https://github.com/vuejs/core/commit/599f35bbb21f3d78b7aa0818342ab4f27442a333">599f35b</a>)</li> <li><strong>runtime-core:</strong> unmount v-once children after parent rerenders (<a href="https://redirect.github.com/vuejs/core/issues/15435">#15435</a>) (<a href="https://github.com/vuejs/core/commit/d720338d5d29c1fac82abbe6f7066fe703ce624d">d720338</a>)</li> <li><strong>shared:</strong> handle circular references in looseEqual (<a href="https://redirect.github.com/vuejs/core/issues/15499">#15499</a>) (<a href="https://github.com/vuejs/core/commit/718f782b14c7e0165d20b6f4dd8664f78054b62c">718f782</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15496">#15496</a></li> <li><strong>shared:</strong> preserve comment-like text in style values (<a href="https://redirect.github.com/vuejs/core/issues/15471">#15471</a>) (<a href="https://github.com/vuejs/core/commit/b9456cb40db714a6f573a1713d92e96d4c9e9533">b9456cb</a>)</li> <li><strong>suspense:</strong> don't drop nested suspense patches during hydration (<a href="https://redirect.github.com/vuejs/core/issues/15429">#15429</a>) (<a href="https://github.com/vuejs/core/commit/76d42dc1874e82e62e9650debd68a53472d810e0">76d42dc</a>)</li> <li><strong>suspense:</strong> keep the boundary pending while its branch is patched (<a href="https://redirect.github.com/vuejs/core/issues/15411">#15411</a>) (<a href="https://github.com/vuejs/core/commit/bfcfe9e4d0254f85af452544a058291ef88dce1a">bfcfe9e</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/7506">#7506</a></li> <li><strong>suspense:</strong> patch a hydrating boundary's pending branch in place (<a href="https://redirect.github.com/vuejs/core/issues/15432">#15432</a>) (<a href="https://github.com/vuejs/core/commit/2cde6f754cb3e4695a21fb5719e0c75ee2fc5c61">2cde6f7</a>)</li> <li><strong>suspense:</strong> unmount the DOM an interrupted async component claimed (<a href="https://redirect.github.com/vuejs/core/issues/15430">#15430</a>) (<a href="https://github.com/vuejs/core/commit/fb9b45ce780f656a23fcb374eb8ea9f7abadc594">fb9b45c</a>)</li> <li><strong>types:</strong> keep optional props when a runtime prop uses a generic PropType (<a href="https://redirect.github.com/vuejs/core/issues/15523">#15523</a>) (<a href="https://github.com/vuejs/core/commit/243aabccf05fefb3760f2dab1c2d75aa424baad7">243aabc</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/9546">#9546</a></li> </ul> <h2><a href="https://github.com/vuejs/core/compare/v3.5.41...v3.5.42">3.5.42</a> (2026-08-27)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>hydration:</strong> handle async component unmount before lazy hydration (<a href="https://redirect.github.com/vuejs/core/issues/15252">#15252</a>) (<a href="https://github.com/vuejs/core/commit/6e1814aa355aad8dd32a89873e95267297ae0609">6e1814a</a>)</li> <li><strong>hydration:</strong> handle moving unresolved async fragment (<a href="https://redirect.github.com/vuejs/core/issues/15263">#15263</a>) (<a href="https://github.com/vuejs/core/commit/a72036f66bcb9a4f3b3737cda19eeba1bc531e15">a72036f</a>)</li> <li><strong>runtime-core:</strong> avoid caching unmounted suspense children (<a href="https://redirect.github.com/vuejs/core/issues/15291">#15291</a>) (<a href="https://github.com/vuejs/core/commit/b535917d46d5c6e28c1d3b9185bfa1665127c73a">b535917</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15288">#15288</a></li> <li><strong>runtime-core:</strong> keep .trim result when combined with .number v-model modifier (<a href="https://redirect.github.com/vuejs/core/issues/15346">#15346</a>) (<a href="https://github.com/vuejs/core/commit/f8d42e1cf2a0ccb43c50fad6e972cb130c53824e">f8d42e1</a>)</li> <li><strong>runtime-core:</strong> resolve $el for dev root comment fragment (<a href="https://redirect.github.com/vuejs/core/issues/15313">#15313</a>) (<a href="https://github.com/vuejs/core/commit/8654f35118a1165ac30fd398ceaff8849c44d9d5">8654f35</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/12680">#12680</a></li> <li><strong>runtime-dom:</strong> support !important on CSS custom properties in style binding (<a href="https://redirect.github.com/vuejs/core/issues/15348">#15348</a>) (<a href="https://github.com/vuejs/core/commit/31da934fcbe73ab8ed187bf820c80b24ced474be">31da934</a>)</li> <li><strong>server-renderer:</strong> reject CR in attribute names (<a href="https://redirect.github.com/vuejs/core/issues/15266">#15266</a>) (<a href="https://github.com/vuejs/core/commit/a2b40db9a83b36ed9da3a16403cf8f040262d73f">a2b40db</a>)</li> <li><strong>shared:</strong> correctly compare Map and Set values (<a href="https://redirect.github.com/vuejs/core/issues/15328">#15328</a>) (<a href="https://github.com/vuejs/core/commit/ef82a26775952a665545d3771788bd23b2efec91">ef82a26</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15320">#15320</a></li> <li><strong>suspense:</strong> don't treat the leaving branch as the fallback while its mount is pending (<a href="https://redirect.github.com/vuejs/core/issues/15333">#15333</a>) (<a href="https://github.com/vuejs/core/commit/cd1974562357dd73101d048f207a694a4e5310ec">cd19745</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15332">#15332</a></li> <li><strong>v-model:</strong> re-sync select when model is overridden in change handler (<a href="https://redirect.github.com/vuejs/core/issues/15298">#15298</a>) (<a href="https://github.com/vuejs/core/commit/6eaecc14d8151a7d258b80ce0519e5ecc17a2bef">6eaecc1</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/10505">#10505</a></li> </ul> <h2><a href="https://github.com/vuejs/core/compare/v3.5.40...v3.5.41">3.5.41</a> (2026-08-05)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>compiler-core:</strong> preserve vnode lifecycle in stable v-for (<a href="https://redirect.github.com/vuejs/core/issues/11682">#11682</a>) (<a href="https://github.com/vuejs/core/commit/02421cdbc4da5dd2eaf39e6c51aa790f9310db62">02421cd</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/9239">#9239</a> <a href="https://redirect.github.com/vuejs/core/issues/12569">#12569</a></li> <li><strong>compiler-sfc:</strong> handle transformed template AST after cache invalidation (<a href="https://redirect.github.com/vuejs/core/issues/15136">#15136</a>) (<a href="https://github.com/vuejs/core/commit/a4440c01b96798a23bef12cb6f9ada5ffaba0d3a">a4440c0</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15126">#15126</a> <a href="https://redirect.github.com/vuejs/core/issues/15128">#15128</a></li> <li><strong>custom-element:</strong> preserve nested async mount order (<a href="https://redirect.github.com/vuejs/core/issues/15154">#15154</a>) (<a href="https://github.com/vuejs/core/commit/71f9ff58a2a8748b2c1ec26c55c89f7343b86110">71f9ff5</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15153">#15153</a></li> <li><strong>custom-element:</strong> warn when props override native properties (<a href="https://redirect.github.com/vuejs/core/issues/12125">#12125</a>) (<a href="https://github.com/vuejs/core/commit/22b53eafecf56a9fb97f00b8e8b69c90a073d2d4">22b53ea</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/12124">#12124</a></li> <li><strong>runtime-core:</strong> avoid re-fetching resource props with unchanged values (<a href="https://redirect.github.com/vuejs/core/issues/15105">#15105</a>) (<a href="https://github.com/vuejs/core/commit/a7513a1a3ed411ccd90bf135c6cba9c9cb2ef10b">a7513a1</a>)</li> <li><strong>runtime-core:</strong> restore SSR setup state when handling async setup result (<a href="https://redirect.github.com/vuejs/core/issues/15114">#15114</a>) (<a href="https://github.com/vuejs/core/commit/b6191cbf95c680e076164a319dd987a14de658c1">b6191cb</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15113">#15113</a></li> <li><strong>scheduler:</strong> avoid stack overflow when flushing very large post cb arrays (<a href="https://redirect.github.com/vuejs/core/issues/15143">#15143</a>) (<a href="https://github.com/vuejs/core/commit/c04a45d15498ebba0de3ceae674b88ac43cb9e76">c04a45d</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15142">#15142</a></li> <li><strong>slots:</strong> handle nullish v-bind slot props (<a href="https://redirect.github.com/vuejs/core/issues/15177">#15177</a>) (<a href="https://github.com/vuejs/core/commit/2506700b289c5277eb465bf959ce0ea23329094d">2506700</a>)</li> <li><strong>ssr:</strong> normalize hidden states during hydration (<a href="https://redirect.github.com/vuejs/core/issues/13125">#13125</a>) (<a href="https://github.com/vuejs/core/commit/4e467d7ae2cd7d0af031fac8865dcff73cb1cf16">4e467d7</a>)</li> <li><strong>transition:</strong> support transition to teleport component child (<a href="https://redirect.github.com/vuejs/core/issues/11959">#11959</a>) (<a href="https://github.com/vuejs/core/commit/77061fe88608a5ab77fec705ff65cb81779eb01c">77061fe</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/11910">#11910</a></li> <li><strong>types:</strong> preserve defineModel inference with factory defaults (<a href="https://redirect.github.com/vuejs/core/issues/15097">#15097</a>) (<a href="https://github.com/vuejs/core/commit/0516c43284084f0526032a1cc312fb6916bf04fe">0516c43</a>), closes <a href="https://redirect.github.com/vuejs/core/issues/15096">#15096</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vuejs/core/commit/5be58b4c475c1d14b4abacbfeda610394a0ee4e5"><code>5be58b4</code></a> release: v3.5.43</li> <li><a href="https://github.com/vuejs/core/commit/a0b61aac0e7eb3760f4ad0c4a3ab18498195c259"><code>a0b61aa</code></a> chore: remove and ignore generated git hooks</li> <li><a href="https://github.com/vuejs/core/commit/2fde3239ca3cdb9b152870f695cd3401fcaada94"><code>2fde323</code></a> fix(compiler-sfc): ignore comment delimiters inside strings and url() when pa...</li> <li><a href="https://github.com/vuejs/core/commit/599f35bbb21f3d78b7aa0818342ab4f27442a333"><code>599f35b</code></a> fix(reactivity): preserve readonly wrappers in array copy methods (<a href="https://redirect.github.com/vuejs/core/issues/15469">#15469</a>)</li> <li><a href="https://github.com/vuejs/core/commit/55a2b4517e08e0e334269dbfe6fcd16533d8aa3b"><code>55a2b45</code></a> chore(deps): update pnpm to v12 (<a href="https://redirect.github.com/vuejs/core/issues/15439">#15439</a>)</li> <li><a href="https://github.com/vuejs/core/commit/243aabccf05fefb3760f2dab1c2d75aa424baad7"><code>243aabc</code></a> fix(types): keep optional props when a runtime prop uses a generic PropType (...</li> <li><a href="https://github.com/vuejs/core/commit/718f782b14c7e0165d20b6f4dd8664f78054b62c"><code>718f782</code></a> fix(shared): handle circular references in looseEqual (<a href="https://redirect.github.com/vuejs/core/issues/15499">#15499</a>)</li> <li><a href="https://github.com/vuejs/core/commit/9a1df69b63fecd743919af89a419783dd030b9f7"><code>9a1df69</code></a> fix(compiler-sfc): prepend semicolon for await in switch case (<a href="https://redirect.github.com/vuejs/core/issues/15498">#15498</a>)</li> <li><a href="https://github.com/vuejs/core/commit/d6febaab8c0d95a6320e7e37276c00e8159e9cb2"><code>d6febaa</code></a> fix(compiler-sfc): reuse parsed parent configs across tsconfig walks (fix <a href="https://redirect.github.com/vuejs/core/issues/15">#15</a>...</li> <li><a href="https://github.com/vuejs/core/commit/b9456cb40db714a6f573a1713d92e96d4c9e9533"><code>b9456cb</code></a> fix(shared): preserve comment-like text in style values (<a href="https://redirect.github.com/vuejs/core/issues/15471">#15471</a>)</li> <li>Additional commits viewable in <a href="https://github.com/vuejs/core/compare/v3.5.13...v3.5.43">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for vue since your current version.</p> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/onnxruntime/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6.5.0 to 7.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/setup-go/releases">actions/setup-go's releases</a>.</em></p> <blockquote> <h2>v7.0.0</h2> <h2>What's Changed</h2> <ul> <li>Migrate to ESM and upgrade dependencies by <a href="https://github.com/priyagupta108"><code>@priyagupta108</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/763">actions/setup-go#763</a></li> <li>chore(deps): bump <code>@actions/cache</code> to 6.2.0 by <a href="https://github.com/philip-gai"><code>@philip-gai</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/771">actions/setup-go#771</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/philip-gai"><code>@philip-gai</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-go/pull/771">actions/setup-go#771</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-go/compare/v6...v7.0.0">https://github.com/actions/setup-go/compare/v6...v7.0.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/setup-go/commit/b7ad1dad31e06c5925ef5d2fc7ad053ef454303e"><code>b7ad1da</code></a> chore(deps): bump <code>@actions/cache</code> to 6.2.0 (<a href="https://redirect.github.com/actions/setup-go/issues/771">#771</a>)</li> <li><a href="https://github.com/actions/setup-go/commit/0778a10ce47b5d450cf60fb94fafad4330008a35"><code>0778a10</code></a> Migrate to ESM and upgrade dependencies (<a href="https://redirect.github.com/actions/setup-go/issues/763">#763</a>)</li> <li>See full diff in <a href="https://github.com/actions/setup-go/compare/924ae3a1cded613372ab5595356fb5720e22ba16...b7ad1dad31e06c5925ef5d2fc7ad053ef454303e">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ft#33127) Bumps [compression](https://github.com/expressjs/compression) from 1.8.1 to 1.8.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/expressjs/compression/releases">compression's releases</a>.</em></p> <blockquote> <h2>v1.8.2</h2> <h2>Important</h2> <ul> <li>Fix <a href="https://www.cve.org/CVERecord?id=CVE-2026-87776">CVE-2026-87776</a> (<a href="https://github.com/expressjs/compression/security/advisories/GHSA-vc2v-76pw-4v95">GHSA-vc2v-76pw-4v95</a>)</li> </ul> <h2>What's Changed</h2> <ul> <li>chore: add funding to package.json by <a href="https://github.com/bjohansebas"><code>@bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/248">expressjs/compression#248</a></li> <li>build(deps): bump github/codeql-action from 3.29.2 to 3.29.5 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/249">expressjs/compression#249</a></li> <li>build(deps): bump actions/checkout from 4.2.2 to 5.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/253">expressjs/compression#253</a></li> <li>build(deps): bump github/codeql-action from 3.29.7 to 3.29.11 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/252">expressjs/compression#252</a></li> <li>build(deps): bump actions/download-artifact from 4.3.0 to 5.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/251">expressjs/compression#251</a></li> <li>build(deps): bump actions/setup-node from 4.4.0 to 6.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/261">expressjs/compression#261</a></li> <li>build(deps): bump github/codeql-action from 3.29.11 to 4.31.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/260">expressjs/compression#260</a></li> <li>build(deps): bump actions/upload-artifact from 4.6.2 to 5.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/259">expressjs/compression#259</a></li> <li>build(deps): bump actions/download-artifact from 5.0.0 to 6.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/258">expressjs/compression#258</a></li> <li>build(deps): bump coverallsapp/github-action from 2.3.6 to 2.3.7 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/264">expressjs/compression#264</a></li> <li>build(deps): bump actions/checkout from 5.0.0 to 6.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/263">expressjs/compression#263</a></li> <li>build(deps): bump github/codeql-action from 4.31.2 to 4.31.5 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/262">expressjs/compression#262</a></li> <li>chore: up node version to 25.x in CI by <a href="https://github.com/imangas"><code>@imangas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/272">expressjs/compression#272</a></li> <li>doc(package): remove history.md and add readme.md to published files by <a href="https://github.com/sheplu"><code>@sheplu</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/270">expressjs/compression#270</a></li> <li>Update link to CONTRIBUTING.md by <a href="https://github.com/krzysdz"><code>@krzysdz</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/281">expressjs/compression#281</a></li> <li>test: run CI on Windows and macOS by <a href="https://github.com/kilisamemarisaaa"><code>@kilisamemarisaaa</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/283">expressjs/compression#283</a></li> <li>build(deps): bump ossf/scorecard-action from 2.4.2 to 2.4.3 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/257">expressjs/compression#257</a></li> <li>build(deps): bump actions/download-artifact from 6.0.0 to 7.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/268">expressjs/compression#268</a></li> <li>build(deps): bump github/codeql-action from 4.31.5 to 4.31.9 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/265">expressjs/compression#265</a></li> <li>build(deps): bump actions/setup-node from 6.0.0 to 6.1.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/266">expressjs/compression#266</a></li> <li>build(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/267">expressjs/compression#267</a></li> <li>chore(ci): npm-publish via reusable workflows by <a href="https://github.com/sheplu"><code>@sheplu</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/269">expressjs/compression#269</a></li> <li>docs: update outdated Brotli note and fix npm install docs URL by <a href="https://github.com/Vansh1811"><code>@Vansh1811</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/276">expressjs/compression#276</a></li> <li>fix: match Cache-Control no-transform directive case-insensitively by <a href="https://github.com/vaibhavmashal"><code>@vaibhavmashal</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/286">expressjs/compression#286</a></li> <li>1.8.2 by <a href="https://github.com/UlisesGascon"><code>@UlisesGascon</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/287">expressjs/compression#287</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/imangas"><code>@imangas</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/272">expressjs/compression#272</a></li> <li><a href="https://github.com/sheplu"><code>@sheplu</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/270">expressjs/compression#270</a></li> <li><a href="https://github.com/krzysdz"><code>@krzysdz</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/281">expressjs/compression#281</a></li> <li><a href="https://github.com/kilisamemarisaaa"><code>@kilisamemarisaaa</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/283">expressjs/compression#283</a></li> <li><a href="https://github.com/Vansh1811"><code>@Vansh1811</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/276">expressjs/compression#276</a></li> <li><a href="https://github.com/vaibhavmashal"><code>@vaibhavmashal</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/286">expressjs/compression#286</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/expressjs/compression/compare/v1.8.1...v1.8.2">https://github.com/expressjs/compression/compare/v1.8.1...v1.8.2</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/expressjs/compression/blob/master/HISTORY.md">compression's changelog</a>.</em></p> <blockquote> <h1>1.8.2</h1> <ul> <li>Fix <a href="https://www.cve.org/CVERecord?id=CVE-2026-87776">CVE-2026-87776</a> (<a href="https://github.com/expressjs/compression/security/advisories/GHSA-vc2v-76pw-4v95">GHSA-vc2v-76pw-4v95</a>)</li> <li>deps: add destroy@1.2.0</li> <li>Match <code>Cache-Control: no-transform</code> directive case-insensitively</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/expressjs/compression/commit/0f9707417bd53d41a319fce8bdb80dfa08b435c8"><code>0f97074</code></a> 1.8.2 (<a href="https://redirect.github.com/expressjs/compression/issues/287">#287</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/151f63e91e1b64f8fb0b064e19321a4f28db6bff"><code>151f63e</code></a> fix: destroy compression stream on response close</li> <li><a href="https://github.com/expressjs/compression/commit/0a764956691bede2b62c711598ee65ea643d3b1e"><code>0a76495</code></a> fix: match Cache-Control no-transform directive case-insensitively (<a href="https://redirect.github.com/expressjs/compression/issues/286">#286</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/c17b6e58ac914c84d9e3a64130dcc428e0e26887"><code>c17b6e5</code></a> docs: update outdated Brotli note and fix npm install docs URL (<a href="https://redirect.github.com/expressjs/compression/issues/276">#276</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/112911abc46e0d8fa6c9793ef5005ca1d53ccb7c"><code>112911a</code></a> chore(ci): npm-publish via reusable workflows (<a href="https://redirect.github.com/expressjs/compression/issues/269">#269</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/1bf5eb0b5eaf5001af9782ade18c6cca690ccaad"><code>1bf5eb0</code></a> build(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0 (<a href="https://redirect.github.com/expressjs/compression/issues/267">#267</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/d8fe64d50081d4a13a8ea5c25a852ca27fde0b7b"><code>d8fe64d</code></a> build(deps): bump actions/setup-node from 6.0.0 to 6.1.0 (<a href="https://redirect.github.com/expressjs/compression/issues/266">#266</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/b218ff54eb8e211100d8a6697d13cdc73fdb13b3"><code>b218ff5</code></a> build(deps): bump github/codeql-action from 4.31.5 to 4.31.9 (<a href="https://redirect.github.com/expressjs/compression/issues/265">#265</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/8a1cf8ecf948c28ffd3d29f942c9a310bc36e5c1"><code>8a1cf8e</code></a> build(deps): bump actions/download-artifact from 6.0.0 to 7.0.0 (<a href="https://redirect.github.com/expressjs/compression/issues/268">#268</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/4a19855442b7ebfcea4f95caf491968108dc15b8"><code>4a19855</code></a> build(deps): bump ossf/scorecard-action from 2.4.2 to 2.4.3 (<a href="https://redirect.github.com/expressjs/compression/issues/257">#257</a>)</li> <li>Additional commits viewable in <a href="https://github.com/expressjs/compression/compare/v1.8.1...v1.8.2">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for compression since your current version.</p> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/onnxruntime/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
### Description `SymbolicShapeInference._infer_Shape` stored the full input shape as the node's value and ignored the `start`/`end` attributes added in opset 15. The output type of the Shape node was right (it comes from ONNX shape inference), but every downstream consumer of the value (ConstantOfShape, Reshape, Expand, Concat, ...) got the wrong dims. Example: for an input of shape `[b, s, 8]`, `Shape(start=1)` was propagated as `[b, s, 8]` instead of `[s, 8]`, so a following `ConstantOfShape` was inferred as rank 3 while ORT produces rank 2. The fix slices the symbolic shape with `start`/`end`. Python slicing already clamps negative and out-of-range values the same way the ONNX spec does. Added `test_shape_start_end` to `onnxruntime_test_python_symbolic_shape_infer.py`. I also checked `start`/`end` combinations (`1`, `-2`, `end=-1`, `1..3`, `-10..10`, `3..1`) against the shapes ORT returns at runtime and they all match now. ### Motivation and Context The PyTorch dynamo exporter emits `Shape` with `start`/`end` often, so symbolic shape inference (used by the transformers optimizer and `quant_pre_process`) gives wrong shapes on those models.
### Description <!-- Describe your changes. --> Convert serialized ONNX `TensorProto::DataType` values to ABI-stable `ONNXTensorElementDataType` values before creating tensors in the ONNX node-test loader. Add the missing `FLOAT8E8M0` conversion. This fixes the materialized ONNX node tests for `FLOAT8E8M0`, `UINT2`, and `INT2`, whose serialized values 24-26 differ from the corresponding C API enum values after microsoft#33066. Validation: - `lintrunner -a onnxruntime/test/onnx/tensorprotoutils.cc` — passed. - `cmake --build build/linux_cuda/Release --target onnx_test_runner -j \"$(nproc)\"` — passed. - `./onnx_test_runner -e cpu -n cast_FLOAT_to_UINT2 _deps/onnx-src/onnx/backend/test/data/node` — passed (1 test). - `./onnx_test_runner -e cpu -n cast_FLOAT_to_INT2 _deps/onnx-src/onnx/backend/test/data/node` — passed (1 test). - `./onnx_test_runner -e cpu -n cast_e8m0_FLOAT_to_FLOAT8E8M0 _deps/onnx-src/onnx/backend/test/data/node` — no failure; the local CPU build reports the operator as not implemented. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> The Windows x64 QNN CI on `main` fails both static and shared configurations because the node-test loader casts ONNX wire type numbers directly to the C API enum. That cast permutes `FLOAT8E8M0`, `UINT2`, and `INT2`, producing input/output type mismatches and packed-buffer size errors in 38 materialized node tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
### Description <!-- Describe your changes. --> Replace the five `batch_size * hidden_size_` state extents in the CPU LSTM wrapper with a shared element count computed by the existing checked `size_t` helper. Validate the existing `int` output-stride limit before allocating outputs or scratch buffers, including the doubled stride used by bidirectional execution. Unsupported dimensions now return an explicit `INVALID_ARGUMENT` status. The shared wrapper applies this consistently to LSTM and DynamicQuantizeLSTM. Add arithmetic boundary coverage and CPU-only regression tests for forward, reverse, and bidirectional execution. The rejection tests use empty sequences and small weights to avoid large tensor allocations, and assert the new early-validation diagnostic. **Validation** - `cmake --build build/linux_cpu_loader_lifetime/Release --target onnxruntime_provider_test -j 16` — passed. - `cd build/linux_cpu_loader_lifetime/Release && timeout 180 ./onnxruntime_provider_test --gtest_filter='LSTMTest.*:DynamicQuantLSTMTest.*:GRUTest.CalculateBufferElementCountThrowsOnOverflow'` — passed, 43 tests. - `clang-format --dry-run --Werror onnxruntime/core/providers/cpu/rnn/lstm_base.cc onnxruntime/test/providers/cpu/rnn/deep_cpu_lstm_op_test.cc onnxruntime/test/contrib_ops/quantize_lstm_op_test.cc` — passed. - `git diff --check` — passed. Validation used a Linux CPU Release build. GPU execution, 32-bit builds, and the full test suite were not run. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Assigning an `int` product to `size_t` does not widen the operands before multiplication. Buffer extents should use checked arithmetic from the first operand, and dimensions unsupported by the compute path should be rejected before allocating memory. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…stcases/nextjs-default (microsoft#33151) Bumps [source-map-js](https://github.com/7rulnik/source-map-js) from 1.2.1 to 1.2.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/7rulnik/source-map-js/releases">source-map-js's releases</a>.</em></p> <blockquote> <h2>v1.2.2</h2> <ul> <li> <p>Fix crash when executing in browser with CSP script-src that don't permit unsafe-eval (<a href="https://redirect.github.com/7rulnik/source-map-js/pull/29">#29</a>) <a href="https://github.com/xfournet"><code>@xfournet</code></a></p> </li> <li> <p>Fix denial of service from malicious indexed source maps (CVE-2026-93749) (<a href="https://redirect.github.com/7rulnik/source-map-js/pull/79">#79</a>)</p> <p>Reported by <a href="https://github.com/waydeshi"><code>@waydeshi</code></a> in <a href="https://redirect.github.com/7rulnik/source-map-js/issues/76">#76</a>. A fix was also proposed by <a href="https://github.com/aniebiet"><code>@aniebiet</code></a> in <a href="https://redirect.github.com/7rulnik/source-map-js/pull/78">#78</a>.</p> </li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md">source-map-js's changelog</a>.</em></p> <blockquote> <h2>1.2.2</h2> <ul> <li> <p>Fix crash when executing in browser with CSP script-src that don't permit unsafe-eval (<a href="https://redirect.github.com/7rulnik/source-map-js/pull/29">#29</a>) <a href="https://github.com/xfournet"><code>@xfournet</code></a></p> </li> <li> <p>Fix denial of service from malicious indexed source maps (CVE-2026-93749) (<a href="https://redirect.github.com/7rulnik/source-map-js/pull/79">#79</a>)</p> <p>Reported by <a href="https://github.com/waydeshi"><code>@waydeshi</code></a> in <a href="https://redirect.github.com/7rulnik/source-map-js/issues/76">#76</a>. A fix was also proposed by <a href="https://github.com/aniebiet"><code>@aniebiet</code></a> in <a href="https://redirect.github.com/7rulnik/source-map-js/pull/78">#78</a>.</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/7rulnik/source-map-js/commit/0a1d334fd1e55a47df97fcd60a7915d46df3b08a"><code>0a1d334</code></a> 1.2.2</li> <li><a href="https://github.com/7rulnik/source-map-js/commit/4c6fa26d77419bd8e48ec92844866cce7d9ae739"><code>4c6fa26</code></a> Update changelog</li> <li><a href="https://github.com/7rulnik/source-map-js/commit/cf7658058ceeaa8619d5ae0ec90be6905209d016"><code>cf76580</code></a> Fix denial of service from malicious indexed source maps (CVE-2026-93749) (<a href="https://redirect.github.com/7rulnik/source-map-js/issues/79">#79</a>)</li> <li><a href="https://github.com/7rulnik/source-map-js/commit/7899a86615c630f4fc220273ff9fe2e8e49a56df"><code>7899a86</code></a> Fix crash when executing browser with CSP script-src that don't permit unsafe...</li> <li>See full diff in <a href="https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/onnxruntime/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: xadupre <xadupre@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
### Description Add 3D ConvTranspose support to the WebGPU execution provider. Five-dimensional inputs, including float16 inputs, now execute instead of failing with "Only Conv2d or Conv1d are supported." - Implement the WGSL kernel for NCDHW and NDHWC layouts, grouped and depthwise convolution, bias, strides, dilation, asymmetric and automatic padding, output padding, and explicit output shapes. Use signed integer coordinates and float32 accumulation for float16 inputs. - Prepack rank-5 initializer weights into `[kD, kH, kW, C_out/group, C_in]` and use group-aligned scalar/vec2/vec4 channel loads. Preserve the original layout for dynamic weights and distinguish layouts and vector widths in the shader cache. - Add 176 parameterized cases under `onnxruntime/test/providers/webgpu/nn/conv_transpose_test.cc`, comparing WebGPU with CPU results and disabling CPU fallback. Run each case twice and assert the prepacked-weight count. Enable existing 3D ConvTranspose and four float16 Conv3D tests for WebGPU. - Update operator support documentation and add the required ConvTranspose3D generated snapshots. The independent source-reference whitespace cleanup was merged separately in microsoft#32736; existing generated shader headers match the upstream base. ### Motivation and Context Fixes microsoft#28356. The supplied float16 model requires 3D ConvTranspose, which the WebGPU provider previously rejected. ### Validation - Windows Release/D3D12, rebuilt with 12 parallel workers on 2026-10-08: `onnxruntime_provider_test --gtest_filter="*ConvTranspose*:*Conv3D*:ConvFp16Test.*"` — **308 passed, 9 expected skips**, including all **176 ConvTranspose3D cases** and all four enabled FP16 Conv3D cases. - Skips cover four CUDA/DML-only cases, two tests requesting unreleased opset 27, one Arm64-only CPU FP16 case, and two CPU prepacking cases unsupported by this configuration. - The relocated ConvTranspose test source is registered exactly once. Its test identities, inputs, expected results, and prepack-count assertions are preserved. - C++ lintrunner and `git diff --check` passed. - Earlier validation on the same base: **89 WGSL generator tests passed**, covering both generation modes. The templates and generated shader code are unchanged by this test cleanup; all fourteen pre-existing generated shader headers match the upstream base. - Earlier validation of the initial implementation, before the prepacking follow-up: the supplied model ran with CPU fallback disabled (109 optimized WebGPU nodes, including four ConvTranspose3D dispatches), and all four extracted ConvTranspose layers matched CPU references at `atol=rtol=0.001`. Full-model output did not meet `atol=rtol=0.01` against the supplied PyTorch reference: mean absolute error 0.0267, maximum 0.78125, and channel argmax agreement 99.9863%; differences already appeared before the first ConvTranspose. This full-model comparison has not been rerun after prepacking. - Browser/WASM and plugin builds were not rebuilt locally. No performance speedup has been measured.
…oft#33110) ## Summary Native external-Dawn hosts can supply a Dawn instance and device with a positive ORT context ID. WebGPU allocators previously advertised memory-device ID zero regardless of that context, leaving allocator lookup, streams, and transfer routing unable to distinguish separate Dawn memory domains. Plugin stream validation exposed this mismatch during custom-context session initialization. This PR fixes the identity mismatch rather than weakening the stream check: - Propagate the context ID through WebGPU session allocators and the plugin's default memory device, with range validation before context creation. - Forward the requested memory device to plugin stream creation and retain the owning-context identity check. - Route shared WebGPU transfers using tensor memory-device IDs and reject GPU copies between distinct contexts or foreign GPU vendors. - Extend the native external-host test with host-created devices, synchronized cache callbacks, cache isolation keys, lifetime checks, and failure cases. - Keep default and host-owned sessions alive together; verify distinct allocator and GPU-output IDs, CPU/GPU and same-context GPU/GPU transfers, and rejection of cross-context copies. - Exercise the native host through existing Windows source-based, package-backed built-in, and plugin CI paths, and document device/callback ownership. Our current deployment uses built-in WebGPU with external Dawn and a host-owned device. Plugin and concurrent-context tests are additional regression coverage, not a claim that the deployment has migrated to plugins or requires a default session alongside the host-owned session. Context IDs identify Dawn memory domains, not physical GPU indices. No new public API is introduced. ## Validation Windows x64 Release with native Dawn: - Refreshed source-based built-in, package-backed built-in, and package-backed plugin builds passed all five host modes, with CPU fallback disabled. - All three exercised default/custom context allocation and GPU-bound outputs, same-context transfers, and cross-context rejection. - All three observed three actual warm-cache hits and no additional hits under a different isolation key, and verified host-device use after ORT teardown. - Required-feature rejection, callback failure containment, and missing-proc-table rejection passed with their expected diagnostics. - All 35 plugin framework tests passed, including the requested stream-device forwarding regression. - All four WebGPU transfer tests and the device-ID parser rejection test passed. - All 15 changed C++ files passed scoped ORT lintrunner formatting checks. Other native platforms remain unvalidated locally. Cache reuse is tested across devices within one process; persistence across process restarts is not covered.
) ### Description - Remove unused mean/count reduction work from simplified normalization and use FP32 arithmetic for paired FP16 output. - Require actual input, scale, and output half2 alignment in addition to even dimensions/offsets; retain scalar fallback for offset external buffers. - Remove the unused half helper and correct double rsqrt dispatch. - Add documented dtype/broadcast/range tests and CUDA IO-binding regressions for aligned and independently offset buffers. ### Motivation and Context Even tensor dimensions do not guarantee aligned external buffers. A two-byte-offset FP16 CUDA input previously caused CUDA error 716; the address checks prevent that invalid half2 access without disabling CUDA graphs. ### Validation Standalone Release CPU/CUDA build of this branch on Linux/A100 (SM80): 94 native tests passed; the focused CUDA IO-binding test passed all 10 subcases with CPU fallback disabled. Changed-file lint and whitespace checks passed. No full-suite, Windows, ROCm, or other GPU-architecture validation. The alignment guard was also measured within the combined Gemma 4 runtime: CUDA graphs and INT4 lm_head retained, identical outputs across 21 full-model runs. Fixed-provider decode measured 215.13 +/- 1.21 tokens/s versus 215.75 +/- 0.71 for the pooled before-provider runs (-0.29%). This small observed difference is comparable to run variation, not proof of zero impact on all workloads. The standalone draft was not separately full-model benchmarked. This is one of four independent ORT drafts; no other draft commits were included in its native build.
### Description - Allow CPU/CUDA GQA to borrow unquantized past K/V when new K/V is empty and both unused present-cache outputs are omitted; validate cache capacity and leave borrowed buffers unchanged. - Correct the CUDA unfused sliding-window bound to include the current token. - Improve CPU head-first scheduling and avoid masked-prefix QK/SV work. - Add documented numerical-reference and cache-immutability regressions. ### Motivation and Context Shared-KV Gemma 4 layers should reuse their existing caches without redundant present-cache allocations or copies. Existing output-producing and quantized-cache paths remain unchanged. ### Validation Standalone Release CPU/CUDA build of this branch on Linux, AMD EPYC 7V12 and A100 (SM80): 90 native operator tests passed, 12 WebGPU tests skipped, and 34 focused Python GQA tests passed. Changed-file lint and whitespace checks passed. No full-suite, Windows, ROCm, or other GPU-architecture validation. This is one of four independent ORT drafts; no other draft commits were included in its native build.
…ft#33184) ### Description NHWC layout transformation provisionally assigns nodes before final capability processing. The singleton admission check rejects these already-tagged nodes, omitting assignment records despite successful execution. Track provisional assignments from the current layout pass and admit their singleton capabilities. Continue rejecting assignments finalized in earlier rounds to prevent duplicate records after function inlining. Add regression coverage for unchanged singleton nodes, repeated partitioning in both layouts, and reconstructed NHWC Conv nodes. Fixes microsoft#32998. ### Validation - Windows Release: 100 selected partitioning/plugin tests passed. - Real WebGPU execution: original reproduction, Add chain, mixed CPU/GPU placement, and all four layout/inlining configurations passed. - clang-format and git diff --check passed.
…oft#33118) ## Summary Complete the preparation-sizing half of Stage 1 in the policy-based, route-aware workspace-estimation design (microsoft#32944). This combines the agreed QKV-preprocessing refactor and the remaining cache/sequence preparation sizing into one PR. Builds on microsoft#32945, now merged into `main`, which consolidates MEA, unfused, XQA and Flash backend scratch sizing. - Share checked cache-row, past-preservation, staging, compaction, sequence-vector and QKV-preprocessing calculations between `ComputeInternal` and `GetGQAPreparationRecipe`. - Remove the duplicate `GQABufferRequirements` implementation. - Keep the existing separate allocations, ownership, pointer wiring, dispatch priorities and lifetimes. - Preserve the preparation recipe's aligned layout and full validation; the live kernel calls narrow sizing helpers rather than inheriting unrelated recipe-admission restrictions. This is sizing-code consolidation, not a missing-buffer fix. It does not activate dispatch policies, exclude routes from L1, coalesce allocations, or change static-preallocation strategy. ## Compatibility details - Cache sizing runs before backend selection and retains the original present-cache capacity. Windowed staging still changes the runtime extent from `C` to `C + S`. - Past preservation uses the aliased tensor's physical row width; staging uses the physical output row width; compaction retains its packed-row interpretation. INT4 rows are not packed a second time. - QKV sizing runs after the existing backend selection and receives the effective post-staging capacity. cuDNN retains the existing generic Q-materialization behavior. - Flash fast decode still reuses the device sequence-length input instead of allocating sequence vectors, and still suppresses the QKV-preprocessing buffer. - Existing healthy-input byte counts are retained. Arithmetic overflow and invalid sizing inputs produce explicit sizing statuses at the runtime boundary. ## Coverage and validation - Fresh standalone build of the existing preparation Google Test source: **50 tests passed**, including the legacy QKV feature matrix, dense/byte/INT4 cache geometry, physical packed rows, sequence-vector suppression, invalid dimensions and overflow. - MSVC `/W4 /WX` compilation of the actual CUDA GQA runtime translation unit in both shared-provider and plugin-adapter configurations, with Flash, MEA, FP8 and INT4 enabled. - MSVC `/W4 /WX` compilation of the graph-time estimator and XQA/Flash sizing-test translation units. - MSVC `/W4 /WX` compilation of the CUDA GQA operator-test translation unit. - Four new CUDA regressions compare packed and separate QKV on unfused/Flash paths, including windowed staging. They reuse the aliasing helper, which disables CPU fallback and verifies actual backend dispatch. - `clang-format --dry-run --Werror` and `git diff --check` passed. **Full CUDA inference execution is not validated locally against a freshly linked provider.** The new operator regressions and existing GQA tests need full CUDA build/test CI. ## Stack Base: `main`. The conflict-resolution merge retains the early preparation-sizing initialization, the upstream seq-free eligibility helpers, and the INT8/FP8 storage-width normalization. The envelope and policy-reader PRs (microsoft#33014, microsoft#33016 and microsoft#33042) remain independent of this refactor. Committed-policy resolution, coverage/envelope enforcement, bounded fallback and policy-bound estimates remain follow-up work. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7fa98d07-aec3-41b7-92b8-b0ec317a95bf
…and serialized execution (microsoft#33082) ### Description <!-- Describe your changes. --> Restore WebGPU plugin compatibility starting with **ORT 1.24.4**, while retaining **Session-owned command recording in both execution modes**. The additional real-host matrix below found an unresolved **ORT 1.26.0 host-side rejection**; this is not a claim that every intervening release currently works. - Each Session exclusively owns its recording through `unique_ptr`; there is no context-owned shared legacy recording. - Select the older-host compatibility policy with `UseSerializedExecutionMode()` and `ShouldUseSerializedExecutionMode()`, now isolated in `ep/runtime_compatibility.h/.cc` rather than the stream implementation. - In serialized mode, Session `Alloc` and matching `AllocOnStream` use `!IsRunActive()` to submit cached-buffer clears outside Run and defer them during Run. Kernel scratch uses ordinary Tensor allocation through the same allocator, without an `AllocForKernel` API or the unavailable old-host `KernelContext_GetSyncStream`. - Env allocations and concurrent-mode ordinary Session allocations retain independent, immediately submitted clears. Cached-buffer clearing and kernel dispatch batching remain enabled. - For streamless framework copies, submit pending active-Session work before recording the copy independently. The context borrows a non-owning pointer to that recording; it does not own or share the command state. Session teardown discards only that Session's pending entries. - Remove the context-wide Run gate and rely on the required caller-serialization contract. `SerialRunsAfterRejectedStreamOverride` covers a rejected stream override followed by successful serial Runs on both the affected Session and another Session. | Host ORT version | Default execution mode | | --- | --- | | 1.26.0 | Currently blocked by the host's plugin-version check; see validation below | | 1.28.x starting at 1.28.3 | Concurrent independent Sessions | | 1.30.x starting at 1.30.1 | Concurrent independent Sessions | | 1.31 and later | Concurrent independent Sessions | | Other supported versions, including all 1.29.x | Serialized compatibility | Set `ORT_WEBGPU_EP_FORCE_LEGACY=1` **before plugin registration** to force serialized compatibility. The existing override and `onnxruntime_webgpu_legacy_test` CTest name are retained for compatibility; neither implies shared recording. The override cannot enable concurrency on an unsupported host. **Serialized mode requires callers to serialize all WebGPU operations on the same device**, including Session creation/destruction, Run, allocation, I/O binding, and Env transfers. Use sequential graph execution. This is not a fixed-CPU-thread requirement, and the plugin neither detects nor serializes overlapping operations. Callback reentry remains unsupported. #### Input/output copy ordering ORT 1.24.4 forwards supplied streams through batched `CopyTensors`; its separate single-tensor wrapper drops the stream. `BindInput` uses a single-input copy, and mixed source/destination device pairs can make a batch fall back to individual copies. | Path | Ordering mechanism | | --- | --- | | `BindInput` outside Run, CPU to GPU | Allocation submits any cached-buffer clear before returning, including through `AllocOnStream`. A subsequent streamless upload is ordered after it on the device queue; no active Run pointer is needed. | | Input copy during Run, CPU to GPU | With a stream, the clear and upload use the same Session recording. Without a stream, flush the active Session first, then upload using a local recording. | | Output copy during Run, GPU to CPU | Submit the producer before readback, either through its explicit stream or the active-Session pre-copy flush. This does not depend on `OnRunEnd`, which occurs after output copies. | | Mixed-direction inputs/outputs | Each streamless copy follows the same submission boundary if the old host falls back to individual copies. | | Streamless GPU-to-GPU copy within one context | Submit preceding active Session work, then submit the local copy before returning. Cross-context copies remain unsupported. | These are submission boundaries, not per-kernel CPU waits. Readback retains its existing completion wait. Compared with a shared recording, a streamless copy with pending Session work can require an additional queue submission; performance equivalence has not been established. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Allow independently distributed WebGPU plugins to support older applications without requiring the host-side single-copy stream-forwarding fix in microsoft#32666. Builds on microsoft#32874. Following review, the implementation now keeps Session-owned recording rather than introducing a second ownership model for old hosts. A real ORT 1.24.4 mixed-output repro demonstrated the missing submission boundary: an independent GPU Neg branch fetched to CPU returned 0 instead of -1 when the Session's pending computation was not submitted before a streamless readback. The other independent CPU branch was fetched to GPU, triggering mixed-direction single-copy fallback. Both targets and the GPU input were preallocated. Adding the boundary makes both output orderings pass; this shows the need for ordering coordination, not shared recording ownership. The alternative developed in microsoft#33228 has been incorporated here, and that duplicate PR is closed. This revision includes upstream `main` at `e19a9ae831`. **Scope:** Removing the context-wide gate avoids permanently blocking other Sessions when a host error skips `OnRunEnd`. It does not guarantee recovery of all unfinished Run/capture state. Clarifying the host's `OnRunStart`/`OnRunEnd` error-path contract and complete failed-replay recovery remain separate follow-up work. ### Validation Validated commit **`20ff4e2f63`** on Windows x64 Release with the shared WebGPU plugin and EP API adapters. Current-host tests use ORT **1.32.0**. `W:` was a temporary mapping to this worktree and was removed afterward. **Build: passed.** ```powershell cmake --build W:\build\WebGpuCompat\Release --config Release --target onnxruntime_providers_webgpu onnxruntime_provider_test --parallel 8 -- /nologo /verbosity:minimal ``` **Serialized compatibility: 41 executed tests passed, no failures or skips.** CTest sets `ORT_WEBGPU_EP_FORCE_LEGACY=1` before loading the plugin and selects serial-safe cases. ```powershell Set-Location W:\build\WebGpuCompat\Release ctest -C Release -R '^onnxruntime_webgpu_legacy_test$' --output-on-failure ``` **Concurrent-mode selection: 57 executed tests passed, no failures or skips.** Two pre-existing disabled diagnostic tests were not enabled in either selection. ```powershell Set-Location W:\build\WebGpuCompat\Release\Release $env:ORT_UNIT_TEST_MAIN_DYNAMIC_PLUGIN_EP_CONFIG_JSON='{"ep_library_registration_name":"WebGPU_PluginEP","ep_library_path":"onnxruntime_providers_webgpu.dll","selected_ep_name":"WebGpuExecutionProvider"}' $env:ORT_WEBGPU_EP_FORCE_LEGACY='0' .\onnxruntime_provider_test.exe '--gtest_filter=WebGpuPluginRecordingModeTest.*:WebGpuPluginSharedAllocatorRegistrationTest.*:WebGpuPluginSharedAllocatorTest.*:WebGpuSessionAllocatorDeathTest.*:PluginEpWebGpuConcurrency.*' ``` Coverage includes version boundaries, allocation-clear submission, scratch batching, serial and concurrent capture/replay, mixed feeds/fetches, and serial Runs after a rejected stream override. **Actual ORT 1.24.4: all 9 local-harness scenarios passed, 20 iterations each.** The standalone API-24 C++ probe loaded the official 1.24.4 DLL and the plugin rebuilt from this commit; profiles confirmed CPU/WebGPU node placement. Cases cover CPU I/O, dirty-buffer BindInput, mixed-direction inputs and outputs in both orders, GPU-to-CPU-to-GPU graph execution, scratch reuse, and capture-enabled execution. The following invocation used the existing local `recording-ownership-probe` directory (`$probe`); this harness is not part of the repository or CI: ```powershell $variant='serialized-policy-20ff4e2f63' $dest=Join-Path $probe $variant $env:ORT_WEBGPU_EP_FORCE_LEGACY='1' python "$probe\run_probe.py" $variant "$dest\onnxruntime_providers_webgpu.dll" ``` **Capture limitation:** the actual 1.24.4 run exercised initial capture and its internal replay. Its subsequent Runs did not exercise host-driven replay, because that host lacks the plugin capture/replay callbacks. Repeated host-driven replay was covered by the current-host tests above. Other operating systems and performance benchmarks were not tested in the above `20ff4e2f63` validation. #### Additional local validation at `62e3504c2e` Removed only the redundant pre-capture `OnRunStart` flush. `CaptureBegin` still flushes before entering capture; streamless-copy, Run-end, and standalone replay submission boundaries are unchanged. The plugin rebuilt successfully, and the three focused serialized capture tests passed: ```powershell $env:ORT_UNIT_TEST_MAIN_DYNAMIC_PLUGIN_EP_CONFIG_JSON='{"ep_library_registration_name":"WebGPU_PluginEP","ep_library_path":"onnxruntime_providers_webgpu.dll","selected_ep_name":"WebGpuExecutionProvider"}' $env:ORT_WEBGPU_EP_FORCE_LEGACY='1' .\onnxruntime_provider_test.exe '--gtest_filter=PluginEpWebGpuConcurrency.SerialGraphCaptureWithCpuFeedsAndFetches:PluginEpWebGpuConcurrency.SerialSingleSessionMultipleGraphCaptureIds:PluginEpWebGpuConcurrency.GraphCaptureReplayInterleavedWithIdleSessionCpuBindInput' ``` A separate local matrix used **one unchanged plugin DLL** with official Windows x64 cores 1.24.4, 1.25.1, 1.26.0, 1.27.1, 1.28.3, 1.29.1, and 1.30.0, plus the local 1.32.0 Release core. Loaded module paths, actual core versions, and plugin hashes were checked. - **Native copy/allocation/capture probe: 63 scenarios passed, 9 failed**, with 20 iterations per scenario. All nine scenarios passed on every tested core except 1.26.0. That core rejects `OrtEp::ort_version_supported=32` because its kernel-creation check requires a value no greater than 26. This host restriction remains unresolved; forcing serialized mode does not address it. - **Capture support differs from execution-mode eligibility.** In the simple native capture probe, 1.24.4 and 1.25.1 performed one initial internal replay; the other passing cores performed repeated host-driven replay. - **Local Phi-4 workload, capture OFF:** all seven usable cores passed fresh-generator repeatability, serially interleaved-generator checks, multi-turn checks, and a repeated exact 1024-input/300-output-token workload. An isolated GenAI build compiled against API 24 was held fixed across cores; the normal installed package requires API 29. Performance measurements used two warmups and five measured runs, generator reuse and shared KV buffers, with profiling disabled. - **Capture ON is not valid for this model graph.** It contains an `If` node. Tested cores from 1.26 onward reject capture at Session initialization. On 1.24.4 and 1.25.1, initialization succeeds but generated tokens differ after rewinding and repeating the same prompt. This also reproduces without profiling and with the pre-cleanup `20ff4e2f63` plugin, so it was not introduced by removing the redundant flush. No capture-ON throughput is reported for this model. - **Performance interpretation:** default core graph optimizations were retained; newer cores use additional MLP fusion. Cross-version throughput is therefore not an isolated measurement of serialized-mode overhead. Generated tokens were repeatable within each core but not identical between the older and newer optimizer groups. The matrix scripts and model are session-local, not checked into the repository or run by CI. `$matrix` below refers to the isolated `phi4-core-matrix` artifact directory: ```powershell python "$matrix\run_native.py" # failed overall: 63 passed, 9 failed on 1.26.0 python "$matrix\run_phi4.py" --phase smoke # failed overall: 7 passed, 9 unsupported/failing combinations python "$matrix\run_phi4.py" --phase correctness # passed: 21 checks; failing smoke combinations excluded python "$matrix\run_phi4.py" --phase benchmark # completed: 7 capture-OFF configurations; failing smoke combinations excluded ``` --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b6fbaacb-9846-4330-8fb3-2f0b13737d48 Copilot-Session: 8ca4e5fc-8c08-46bd-82a9-5cff5108efed
Bump plugin ep versions: Cuda 0.4.0 WebGPU 0.6.0 Also mark compile API boundary of version 31.
### Description - Introduce `MatMulAlgorithm` with six explicit implementations: subgroup matrix, GEMV, naive, subgroup, packed, and packed Split-K. - Add `MatMulExecutionPlanner`, which selects an algorithm and typed tuning configuration to produce an immutable `MatMulExecutionPlan` for each invocation. - Allow vendor planners to override performance policy and tuning while retaining common fallback behavior. - Route MatMul, pointwise Conv, and contrib Attention through `MatMulComputeDispatcher`, which validates plan/configuration compatibility and runtime prerequisites before dispatch. - Keep forced-algorithm selection internal to tests through `WebGpuExecutionProviderTestOptions` and the `CreateForTesting` factory path; no public session or provider option is added. - Preserve shared adapter-specific Split-K profiles in `WebGpuContext` so GEMM and MatMul consume the same immutable policy. - Integrate planner-controlled packed tuning with FP32 accumulation, Split-K FP32 reduction/cast-back, and dispatch-normalization safety. - Document the architecture in `docs/design/webgpu_matmul_execution_planner.md`. ### Motivation and Context WebGPU MatMul chooses among several implementations using shape, capability, and vendor-specific conditions. Keeping these choices as distributed conditionals made individual implementations difficult to test and vendor thresholds difficult to evolve. This refactor separates immutable problem facts, pure planning policy, typed execution configuration, runtime validation, and dispatch. A vendor can override performance boundaries or tune execution parameters without changing `MatMulComputeDispatcher`; returning no selection or configuration delegates to common defaults. ### Behavior and Compatibility - The common planner preserves subgroup-matrix precedence, adds the vendor-neutral GEMV specialization, retains the small-matrix Naive rule, uses existing Split-K policy, and otherwise falls back to packed MatMul. - GEMV automatic selection uses its measured N/K tuning window; forced tests may bypass those thresholds while retaining hard shader constraints. - Intel preserves its existing subgroup and Split-K architecture policies and measured boundaries. - Subgroup execution accepts only shader-supported sizes 8, 16, and 32, including vendor-provided configurations. - Automatic selection always uses Naive when K is zero before consulting vendor policy. Forced unsupported algorithms fail explicitly rather than silently falling back. - Packed vendor tuning is checked against scalar/vec4 shader contracts and overflow-safe dispatch arithmetic before device work. - Existing subgroup-matrix tiling remains in its dedicated selector and implementation object. - NVIDIA Split-K policy from microsoft#32333 is not included; this PR provides the extension point it can use. ### Validation - Built static and plugin WebGPU provider targets on Windows. - Ran planner, configuration, prerequisite, forced-algorithm, GEMV, Split-K, dispatch-normalization, recording, Attention, and pointwise Conv tests. - Ran upstream FP32 accumulation regression tests across MatMul, Gemm, Split-K, Intel subgroup, scalar/vec4 packed paths, and Conv. - Added numerical coverage for supported non-default packed tuning, rejection coverage for unsupported tuning/subgroup sizes, dynamic-shape reselection, and batched partial Split-K dispatch. - Hardware-specific tests inspect adapter capabilities and skip unsupported algorithms rather than forcing a backend.
…icrosoft#32605) ### Description [WebGPU] Widen MatMulNBits SubgroupMatrix-8x16x16 tiling to 128x256 - Parameterize kTileM and kTileN in the GPU kernel to support dynamic tiling configurations based on workload size. - Increase the kernel tile size from 64x64 (256 threads), to 128x256 (512 threads) for larg M to improve performance. - Centralize the selected tiling policy into a SubgroupMatrixMatMulNBitsTiling struct. **Test on Phi-4-mini, Intel Panther Lake:** | | Base Prefill TPS | Opt Prefill TPS | Improve | |---|---|---|---| | prompt-128 | 1902.96 | 1838.73 | -3% | | prompt-256 | 2182.59 | 2391.95 | 10% | | prompt-512 | 2133.16 | 2370.76 | 11% | | prompt-1024 | 2111.78 | 2312.07 | 9% | | prompt-2048 | 1864.42 | 2173.03 | 17% | | prompt-4096 | 1447.15 | 1748.95 | 21% | ### Motivation and Context See above.
) ### Description Prepack constant ConvTranspose1D and ConvTranspose2D weights during session initialization so repeated inference reuses the layout expected by the existing 2D shader instead of transposing the same weights on every run. - Save an owned copy of the original ONNX filter shape for validation and output-shape inference, removing inverse-permutation reconstruction for all packed layouts. Both 1D and 2D weights use HWIO; the saved shape preserves their original ranks. The 1D representation retains the synthetic height of one used by the 2D kernel. - Preserve per-run transposition for dynamic weights and when prepacking is explicitly disabled, and preserve the existing 3D prepacking path. - Correct two existing NHWC weight-vector accesses for grouped convolution with one output channel per group: their input-channel offsets must be expressed in vector units. The expanded tests reproduced incorrect results on the unmodified base, including dynamic weights. - Extend the existing WebGPU fixture with 176 parameterized tests covering both spatial ranks, layouts, FP32/FP16, groups/depthwise, scalar/vec2/vec4 and mixed widths, channel remainders, bias, stride/dilation/padding, initializer/dynamic weights, repeated runs, and prepack-count assertions. Retain all 176 existing ConvTranspose3D cases. Additional coverage checks genuine height-one 2D kernels and all 12 initializer/dynamic input-weight rank-mismatch combinations. ### Motivation and Context Follow-up to the non-blocking prepacking comment on microsoft#32688: microsoft#32688 (comment) ### Validation - Fresh Windows Release/D3D12 build of commit `96f564b873` with 12 parallel workers. - Final `onnxruntime_provider_test --gtest_filter="*ConvTranspose*"`: **430 passed, 4 expected CUDA/DML-only skips**, including all 176 new parameterized tests and all 176 existing 3D cases. CPU fallback is disabled for the WebGPU fixture. - All 17 focused shape-regression tests passed; the rank-mismatch test verifies rejection from the running WebGPU kernel and asserts prepack counts. - Before the implementation, 72 parameterized tests failed their missing-prepack-count assertion. The expanded grouped single-output-channel cases also exposed a numerical error in the original shader; the final run passes both initializer and dynamic variants. - C++ lintrunner and `git diff --check` passed. - Synthetic benchmark of the prepacking implementation at `edc3a6a0cc` on an NVIDIA GeForce RTX 5080: median warmed end-to-end Run speedups of **1.00x-1.18x** across 16 1D/2D, layout, dtype, and shape scenarios. One small FP16/NHWC case was effectively unchanged; the other 15 measured 1.06x-1.18x. Warm-context session initialization increased by about **0.06-0.14 ms**. - Benchmark uses the same initializer model with `session.disable_prepacking` toggled, verifies equal outputs and prepack counts, alternates ordering, and aggregates 25 samples per mode/scenario from five processes. Each sample averages 60 timed Run calls after 15 warmups, including host input/output transfers. These are single-operator measurements on one GPU, not a general model-speedup claim. The benchmark harness is a local artifact, not part of the source diff. - Browser/WASM, plugin builds, GPU capture mode, and full-model performance were not validated locally.
…oft#33242) ### Description Fix five native WebGPU shader-cache collisions using the existing metadata and cache hints: - **BiasAdd / BiasSplitGelu:** key one input's program type, which captures both element type and vector width. - **LayerNormalization:** distinguish mean-only from inverse-standard-deviation-only outputs. Output count already distinguishes the other combinations. - **InstanceNormalization:** include the epsilon literal embedded in the shader. - **Boolean And:** distinguish full-vector reads from single-lane broadcasts, which both use Boolx4 storage. Also correct BiasSplitGelu's FP16 division operand type so the correctly selected shader compiles. Add six small GPU regression tests. Each puts conflicting variants in one session, covers both node insertion orders, and repeats inference for warm-cache reuse. CPU fallback is disabled and full WebGPU validation is enabled. ### Motivation and Context This extracts the confirmed correctness fixes from microsoft#33153 so they can land before the proposed cache-framework migration. The DequantizeLinear fix is already merged in microsoft#33122. ### Validation - Fresh Windows Release build with native WebGPU/D3D12, based on `6e0f154e32`. - All six new tests fail on unmodified main and pass with the fixes; about 2.5 seconds locally. - With the FP16 arithmetic correction but without BiasSplitGelu's type key, five tests pass and BiasSplitGelu still fails numerically, independently confirming that collision. - 201 affected tests pass, zero skipped, with two BERT tests rerun after staging their missing model fixtures. Broad counts include CPU execution. - All 14 original numerical reproduction checks pass, including dynamic Boolean shape swaps and cross-session cache reuse, with CPU fallback disabled. - Clang-format, lintrunner, and `git diff --check` pass. Metal, WASM and plugin builds were not run locally.
### Description Remove the Intel Math Kernel Library license section from `ThirdPartyNotices.txt`. Intel MKL is no longer an ONNX Runtime dependency: MKLML support and its build option were removed by microsoft#6212, and the current dependency manifest does not include MKL. Tests were not run because this is a documentation-only change. ### Motivation and Context The stale notice incorrectly suggests that current ONNX Runtime distributions incorporate Intel MKL. Fixes microsoft#33215. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…3241) ### Description Fix Python WebGPU provider creation in plugin hosts. Building with `--use_webgpu shared_lib --build_wheel` previously referenced the unavailable built-in WebGPU factory, causing Windows link errors. Provider-name selection also stopped at the dedicated WebGPU branch before reaching registered plugins. The WebGPU branch now uses the built-in factory only when that implementation is compiled in. Otherwise, non-minimal hosts use the existing registered-device factory helper. The native change is confined to that branch and preserves the existing built-in behavior. ### Test coverage The plugin package smoke test selects devices from the registered library, disables CPU fallback, checks inference results and provider options, and releases sessions before unregistering the library. Minimum-runtime package CI keeps using `SessionOptions.add_provider_for_devices`, with its runtime floor unchanged at 1.30.1. `ORT_WEBGPU_TEST_PROVIDER_NAME=1` additionally tests the updated Python binding. The Windows plugin PR job builds the current plugin host wheel. Its existing `Run tests` step installs the locally built host and plugin wheels, enables provider-name coverage, and requires a WebGPU device. It reuses the job's Python environment and installs dependencies once; the local wheel installation uses `--no-deps`. The plugin GPU job depends only on the plugin compile job. The built-in build and test jobs retain their original configuration. The Windows delay-load test is limited to built-in WebGPU, matching its use of `AppendExecutionProvider("WebGPU", ...)`. Building the plugin host wheel also enables the ORT shared library, which previously caused this built-in-only test to be included in plugin builds. ### Validation - Windows x64 Release/D3D12: rebuilt and reinstalled built-in and plugin host Python wheels using the existing build folders. - Built-in host: inference passed with CPU fallback disabled and no external plugin registered. - Plugin host: registration, explicit device selection, provider-name selection, provider options, and inference passed with CPU fallback disabled. - Released 1.31.0 host: default compatibility smoke passed. An exact 1.30.1 Windows wheel was unavailable from both package feeds, so it is not claimed as a local compatibility pass. - Integrated CI Python commands: executed locally against existing plugin build artifacts after installing the combined job requirements. Wheel packaging, installation with `--no-deps`, inference, and `pip check` passed. The installed Python binding hash matched the build artifact. - Reproduced the plugin delay-load failure locally. Regenerated both existing CMake build folders and verified that only this test was removed from the plugin test list; the built-in list was unchanged. Built and passed the built-in delay-load test, and reran the plugin Python regression successfully. - `lintrunner`, `git diff --check`, `actionlint` with custom runner labels, and PowerShell syntax validation passed. Linux, macOS, static-plugin builds, and the complete remote workflow were not run locally. The full native suite was not rerun for the test-selection fix. CI time savings have not been measured.
### Description <!-- Describe your changes. --> Reintegrate the ONNX 1.23 base plumbing originally introduced by microsoft#32359 and reverted by microsoft#33073, now using ONNX **1.23.2**. - Coordinate source/submodule, FetchContent, vcpkg, and Python dependency pins and raise the relevant opset ceilings to 28. - Restore Float6 public element-type mappings and conversion coverage, preserving subsequent independent type-support changes. - Update existing-type Cast registrations, CPU/CUDA Mod boundaries, signed BitShift support, provider compatibility, backend filters/tolerances, and operator documentation. - Materialize the removed upstream node-test corpus with exact-version and minimum-case guards, and cover backend serialization and released-opset policy. - Keep matching FetchContent/vcpkg compatibility patches; remove the released-opset correction now fixed upstream in 1.23.2. - Address review feedback: OpenVINO rejects BitShift-28; CPU/CUDA legacy SpaceToDepth kernels stop at 27; DirectML accepts only safe DCR; unverified graph providers defer SpaceToDepth-28. Full builds use ONNX function expansion for CRD, with literal-output and routing regressions. Avoid creating unsupported SpaceToDepth-28 nodes in the post-expansion Slice/Concat fusion. - Use shared ABI-safe tensor-element conversion in the native ONNX node runner, fixing INT2/UINT2/FLOAT8E8M0 corpus decoding after the main merge. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> This is a redo of microsoft#32359 after its rollback in microsoft#33073. ONNX 1.23.2 includes the external tensor read/re-save fix from onnx/onnx#8472 for onnx/onnx#8471 and the released-opset metadata fix from onnx/onnx#8544 for onnx/onnx#8529. The redundant local `LastReleaseVersionMap` patch has been removed. Remaining FetchContent/vcpkg patches are byte-identical and apply against the pinned release. **Scope:** This PR establishes dependency/runtime base integration. Full per-operator opset-28 support remains separate follow-up work; see microsoft#32362, microsoft#32369, microsoft#32372, microsoft#32378, microsoft#32381, and microsoft#32393. These references describe staged scope, not a claim that every follow-up has landed or every opset-28 operator is supported. Runtime function expansion is a full-build fallback, not minimal/ORT-format runtime coverage. ### Local validation Completed on Windows with retained CPU-only Ninja/MSVC `RelWithDebInfo` builds and strict released-opset policy: - Built `onnxruntime_provider_test`, `onnxruntime_test_all`, `onnx_test_runner`, and Python bindings against ONNX 1.23.2; retained build remains available for incremental work. - Source-built and installed the exact patched ONNX 1.23.2 Python wheel. - Separate `--minimal_build extended` shared runtime configured, compiled, and linked successfully with ML/contrib ops and unit tests disabled. This exercises `ONNX_MINIMAL_BUILD=ON`; it is not a minimal-runtime function-op execution test. - Mod/BitShift/SpaceToDepth/Cast provider tests: **247 passed**, no skips. SpaceToDepth checks default DCR, explicit DCR, and CRD with distinct literal expected outputs, expansion, and legacy opset boundaries. - Slice/Concat fusion and type-info/tensor-proto framework tests: **27 passed**, no skips. - Python backend tests: **22 passed**, plus **2 subtests passed**. - Full Python backend series: **4,066 tests**, **2,685 skipped**, zero failures. Skipped/unsupported coverage is not a pass. - Materialized **1,884 node cases**. Native CPU runner with `-m 1500` collected **1,760 cases**: **1,590 succeeded**, **170 not implemented**, **zero failed**, exit 0. These results do not establish complete opset-28 support. - Generated CPU operator documentation matches the rebuilt kernel registry; verified archive hashes, patch identity/application, submodule SHA, and changed-file lint. **Remaining validation/infrastructure limits:** GPU and other EP execution relies on CI; optional-provider routing checks are compiled into the relevant builds but were unavailable locally. Full unfiltered C++ suites and the ancillary broad `ALL` target were not rerun. The oracle-dependent corpus equivalence test skips because upstream no longer ships the corpus. The new ONNX 1.23.2 tarball currently returns **404 from the Microsoft vcpkg asset mirror**; it still needs Terrapin/infra seeding before read-only `x-block-origin` vcpkg legs can download it. FetchContent and the successful minimal build are mirror-independent. New-head CI is pending. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gramalingam <10075881+gramalingam@users.noreply.github.com>
…t#33130) ### Description Adds transposed-B support to the KleidiAI FP16 GEMM path on SME/SME2. - Uses the KleidiAI nxk RHS packer for transposed B matrices. - Propagates the B layout through MLAS and validates leading dimensions. - Adds coverage for transposed-B execution and unsupported configurations. ### Motivation and Context Fixes a performance regression where FP16 GEMM workloads with a transposed B matrix fell back to Eigen, even on SME/SME2 systems that support an optimized KleidiAI packing path. This change allows those workloads to use accelerated MLAS Half GEMM. --------- Signed-off-by: Patryk Kaiser <patryk.kaiser@arm.com>
…33210) ### Description <!-- Describe your changes. --> ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: eserscor <247253654+eserscor@users.noreply.github.com>
…ft#33273) ## Summary Fixes microsoft#33272 Corrects the CPU `OneHot` operator's handling of fractional floating-point indices to comply with the ONNX specification. Previously, valid fractional indices could silently produce all-off rows instead of selecting their corresponding class after conversion to `int64`. ## Changes - Convert finite, representable floating-point indices to `int64` before negative-index adjustment and class comparison. - Safely treat nonfinite and unrepresentable floating-point indices as out of range. - Preserve existing integer-index handling. - Add CPU regression tests for positive and negative fractional indices, out-of-range values, nonfinite values, and integer-valued floats. - Cover both opsets 9 and 11 for fractional-index behavior. ## Testing **Verified:** - Independently reproduced the original bug with ONNX Runtime 1.31.0 on Kaggle/Linux using `CPUExecutionProvider`. - Also reproduced the original behavior with ONNX Runtime 1.23.2 locally. - `clang-format` passed. - Full `lintrunner` passed. - `git diff --check` passed. **Not yet verified:** - The patched C++ implementation has not been successfully built or executed. - The new C++ regression tests have not been run. - The Kaggle source build is not yet confirmed successful. Local compilation was blocked by missing build dependencies and toolchain components. CI validation is needed to establish whether the patch compiles and passes provider tests. ## AI assistance OpenAI Codex assisted with investigation, implementation, and regression-test development. I independently reproduced the reported behavior, reviewed the source changes, and verified the available formatting and lint results. ## Related issue Fixes microsoft#33272
…#32335) ### Description Extended ORT pattern matching to replace 6 Slice + 1 Concat with the existing SpaceToDepth operation, reducing operator overhead. Convolution Load Balancing: Improved thread-wise distribution of convolution work to avoid uneven workloads and thread idle time, improving multi-thread performance Observation: YOLOX-Tiny gains ~16.8% at 2T and 15.4% at 4T, YOLOX-Nano gains ~8% at 2T and at 4T, while YOLOX-Small shows no difference <img width="489" height="262" alt="yolox" src="https://github.com/user-attachments/assets/e99f6cfb-74cc-4a75-bc87-d50051c147a9" /> --------- Co-authored-by: Manogna-Sree <elisetti.manognasree@multicorewareinc.com>
### Description <!-- Describe your changes. --> Include the invalid-shader variant in the program cache hint and generate the explicit build key using CalculateProgramCacheKey. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Fix nightly shader key validation check. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…33090) ### Description `convert_float_to_float16` could emit duplicate Cast node and output names when a shared float tensor fed multiple always-float inputs, such as `Resize` scales. The converted model then failed validation or ONNX Runtime loading. - **Cast reuse:** Cache Cast outputs by source tensor and target type so all consumers share one Cast. - **Regression coverage:** Add coverage for a shared `Resize` scales initializer listed in `graph.value_info`. ```python # Both Resize nodes now consume the same output: resize_1.input[2] == resize_2.input[2] == "scales_cast_to_fp32" ``` ### Motivation and Context Dynamo-based PyTorch ONNX export deduplicates identical constants and records them in `value_info`, exposing this failure for models with multiple upsample layers. <!-- START COPILOT CODING AGENT SUFFIX --> - Fixes microsoft#33088 --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tianleiwu <30328909+tianleiwu@users.noreply.github.com> Co-authored-by: xadupre <22452781+xadupre@users.noreply.github.com> Co-authored-by: Tianlei Wu <tlwu@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…rosoft#29588) ### Description Adds an **opt-in, hardware-keyed on-disk tactic cache** for the fpA_intB weight-only `MatMulNBits` path, plus a reduced first-time profiling sweep with lazy fallback. Persistence is off by default: with no cache location configured, behavior is unchanged (in-process only). **Cache subsystem** (`gemm_tactic_cache.{h,cc}`) - `HardwareSignature` (GPU name, SM, CUDA runtime, ORT version; commit/build config/driver/MP count recorded for diagnostics) names and guards cache files, so tactics are never reused across incompatible GPUs/toolkits/ORT versions. A strict `tactic_selection_version` header field rejects caches tuned under an older selection policy, even when the ORT version is unchanged. - TSV format: percent-encoded free-text fields, a column-name header (appended columns are backward/forward compatible), file locking + atomic write through a per-writer temp file and rename (`MoveFileExW` on Windows; paths are UTF-8), in-memory merge on flush so concurrent sessions tuning different shapes don't lose updates, and creation of a missing cache directory on first write. - `MatMulNBitsTacticCache` keyed by `(N16b, K, act dtype, weight type, bits, block_size, zero-points, gemv_enabled, packing_sm)`. `packing_sm` keeps the SM80-compat and native-SM90 tactics for the same shape distinct on one device (e.g. H200). 2-, 4-, and 8-bit weights are keyed separately. **Profiler** (`gemm_profiler.h`, `fpA_intB_gemm_profiler.{h,cc}`) - Reduced initial sweep to a small M bucket set (`{1,2,4,…,2048}` default; override with `ep.cuda.fpa_intb_profile_m` / `ORT_FPA_INTB_PROFILE_M`). `getBestConfigOrProfile` lazily profiles any missing bucket on first use. - Persistent-cache load/store hooks are no-ops unless a cache is attached. - CUTLASS tactics loaded from disk are validated against the runner's current `getConfigs()` and dropped (re-profiled) if incompatible. **Wiring** (`matmul_nbits.{h,cc}`, `cuda_execution_provider.cc`, plugin `cuda_ep.cc`) - Cache location: session config (`ep.cuda.gemm_tactic_cache_prefix` / `_dir`) takes precedence over env (`ORT_CUDA_GEMM_TACTIC_CACHE_PREFIX` / `_DIR`); a prefix wins over a dir. - Process-global caches are keyed by resolved file path; the file is loaded once per location (not once per node), and the signature is built from the kernel's cached device properties. - The process-global in-memory profile map (`GemmIdCore`) is keyed by the same quantization fields as the persistent key (bits, block size, zero points, GEMV support), so kernels with different quantization never share tactics. - Construction-time sweeps and lazily profiled buckets are staged in memory as soon as they are profiled, and all disk writes are batched at CUDA EP teardown (`~CUDAExecutionProvider`, or `~CudaEp` for the plugin EP), so there is no disk I/O on the inference path. - Lazy profiling is skipped while the compute stream is capturing a CUDA graph; run a warmup inference before capture. **Offline tuning tool**: `onnxruntime/python/tools/fpa_intb_tune.py` (uses session config entries; releases the session before summarizing so lazily tuned buckets are flushed). ### Testing - `gemm_tactic_cache_test.cc` (built into `onnxruntime_providers_cuda_ut` with `onnxruntime_ENABLE_CUDA_EP_INTERNAL_TESTS=ON`, run via `--gtest_filter=CUDA_EP_Unittest.All`): TSV round-trip and malformed escapes, SM80/SM90 config serialize/parse, null tactic, store/load, signature-mismatch rejection, non-strict commit/build config, selection-version rejection, appended-column tolerance, concurrent flush-merge, missing-directory creation, file path resolution, and `GemmIdCore` separation of quantization variants. - `*MatMulNBits*` CUDA integration tests. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
### Description Add `100-real` to the Linux aarch64 CUDA 13 architecture lists used by Python wheel packaging, CUDA plugin packaging, and the Linux Python build-script fallback. Existing CMake normalization maps this to `100a-real`; existing targets and other platform lists remain unchanged. Add a standalone generated-model regression test to the CUDA Python test runner. It executes an FP32 `Mul` with two runtime input sizes, disables graph optimization and CPU/Python fallback, checks exact results, and requires profiling evidence that the requested provider executed both kernels. Missing CUDA support fails rather than skips. The same file can test an installed wheel without repository fixtures or downloaded models. `docs/Validate_CUDA_Package.md` documents isolated-wheel reproduction, environment/provenance collection, CPU sanity checks, and coverage limits. ### Motivation and Context The Linux aarch64 lists currently select `89-real;90-real;120-real;121-real`, omitting the SM100 family used by GB200. A package can import and advertise CUDAExecutionProvider but fail a basic `Mul` with `cudaErrorNoKernelImageForDevice` on this hardware. This follows the architecture-list alignment in microsoft#31989. This change restores native SM100 coverage for these Linux ARM packages. It does not change kernel implementations, public APIs, PTX policy, or Windows/x64 targets, and does not claim support for other missing GPU architectures. ### Validation - Both changed pipeline YAML files parse; `bash -n` and `git diff --check` pass. - Eight local build-script cases cover ARM CUDA 13 defaults, existing x64 defaults, explicit architecture overrides, unsupported CUDA versions, and CPU builds. - Repository-pinned lintrunner/Ruff checks pass. - The CPU sanity test passes with ONNX Runtime 1.31.0. Selecting the CUDA test against a CPU-only wheel fails with no skipped test. - Independent review completed; the test explicitly tolerates implicit CPU provider registration while prohibiting graph fallback and verifying CUDA kernel execution. Native validation used the same unmodified test file on NVIDIA GB200 (compute capability 10.0), Linux aarch64 with 64 KiB pages, driver 580.126.20, and Python 3.12.3: | Runtime | CPU test | CUDA test | | --- | --- | --- | | Stock ONNX Runtime 1.30.0 | Pass | Fails with `cudaErrorNoKernelImageForDevice` | | Locally built ONNX Runtime 1.30.0 with SM100 | Pass | Pass | Both runs executed two tests with no skips. The local SM100 build uses upstream source `f2c39fe2f838cf35ce7da92824f5a5e3ee6e88a7`; this is supporting architecture-coverage evidence, not a build of the exact current-main patch. The test SHA-256 is `a25fade458fbb1ef6279a2291e24bcf6e7d434970a1a00c826e4c0d41684a365`. Reproduce using `python onnxruntime_test_python_cuda_kernel.py -v` against each installed wheel, following the checked-in validation guide. The exact patched `main` multi-architecture wheel and CUDA plugin packages have not been built. Upstream packaging CI should check the complete artifacts and size/build-time impact, followed by testing the resulting Python wheel on SM100 hardware. The new test runs when CUDA Python tests are enabled; packaging-only jobs do not automatically provide GPU execution coverage.
### Description This patch enables the subgroup path in the `im2col_matmul` kernel when the extension `subgroup-size-control` is supported. With this extension we can set a fixed subgroup size for the `im2col_matmul` kernel, making it save to enable the existing `subgroupShuffle` path in the kernel. ### Motivation and Context This change will improve the performance of `sd-turbo-vae-decoder-fp16-demo.onnx` (5.2%) and `sd-turbo-unet-fp16-demo.onnx` (2.2%).
) ## Summary - Validate embedded sparse values and indices before allocating a dense destination. - Reject unsupported sparse index element types before zero-size early returns or allocation. ## Validation - Warnings-as-errors build completed successfully. - Focused sparse payload and index-type regression tests passed. Co-authored-by: danielsongmicrosoft <danielsongmicrosoft@users.noreply.github.com>
…t#33260) ### Description On AArch64, `onnxruntime_mlas_test` runs several FP16 tests based only on the compile-time macro `MLAS_F16VEC_INTRINSICS_SUPPORTED`. It doesn't check whether the CPU actually supports FP16 arithmetic. This PR adds the runtime check that `test_halfgemm.cpp` already uses, `MlasFp16AccelerationSupported()`, which is backed by `HasFp16VectorAcceleration()`. The change is test-only and does not touch library code. It has four commits: 1. **`[MLAS] Skip NEON FP16 tests on CPUs without FP16 arithmetic`** (5da6550) These tests are now registered only when `MlasFp16AccelerationSupported()` is true: `Fp16Activation` (`test_fp16_activation.cpp`), `NeonErfFP16` and `NeonGeluFP16` (`test_gelu_erf_neon_fp16.cpp`), `NeonHGemmTransposedB`, `NeonHGemmB`, `NeonHGemmPackedB` and `NeonHGemm` (`test_hgemm_neon.cpp`), and `NeonFp16DequantB`, `NeonFp16HQ4BitGemmKernel` and `NeonFp16DequantB8Bit` (`test_hqnbitgemm_neon.cpp`). Before this change, each of them crashed with SIGILL on a Cortex-A53. Tests in the same files that passed on the A53 are still registered: `NeonHGemmPackB`, `NeonFp16Cast`, `NeonFp16Prepack` and `NeonFp16Prepack8Bit`. 2. **`[MLAS] Skip FP16 eltwise, tanh, softcap and exp tests without FP16 arithmetic`** (ef08a84) The FP16 helper functions in `test_eltwise.cpp` (`Eltwise_Add`), `test_softcap.cpp` (`Tanh`, `Softcap`) and `MlasComputeExpTest` in `test_softmax.cpp` (`Exp`) now return early when FP16 isn't supported. (Commit 4 replaces the `test_softcap.cpp` part of this.) `MlasEltwiseDispatchNeon` and `MlasSoftmaxDispatchNeon` only fill their `*_Fp16` slots when `MlasFp16AccelerationSupported()` is true. When a slot is empty, the public FP16 APIs throw an exception such as `"Add_Fp16 is not supported."`, which is how the library is meant to behave. 3. **`[MLAS] Skip FP16 softmax tests without FP16 arithmetic`** (da9bc03) `MlasSoftmaxTest::TestReduceMaxFp16` and `MlasSoftmaxTest::TestFp16` now return early when FP16 isn't supported. `TestReduceMaxFp16` calls `GetMlasPlatform().SoftmaxDispatch->ReduceMax_Fp16` directly. On CPUs without FP16 that pointer is null, so the call crashed with SIGSEGV. This commit covers both `Softmax_SingleThread` and `Softmax_Threaded`. 4. **`[MLAS] Register FP16-only Tanh and Softcap tests only with FP16 arithmetic`** (d73d987) `Tanh` and `Softcap` have no FP32 path: their `ExecuteShort()` only calls `TestFp16()`. With the early returns from commit 2, both suites still ran on CPUs without FP16 arithmetic and passed without executing any assertion. This commit removes those two early returns and instead registers both suites only when `MlasFp16AccelerationSupported()` is true, the same pattern as commit 1. The registration is placed under the `MLAS_F16VEC_INTRINSICS_SUPPORTED && MLAS_TARGET_ARM64` condition that already guards `TestFp16()`. After this PR, a suite on a CPU without FP16 arithmetic is either not registered (FP16-only suites: the 10 from commit 1 plus `Tanh` and `Softcap`) or still runs its FP32 checks. `Eltwise_Add`, `Exp`, `Softmax_SingleThread` and `Softmax_Threaded` all call their FP32 `Test()` in `ExecuteShort()`, so only their FP16 parts are skipped. On CPUs that report FP16 vector acceleration, the same tests are registered and run as before. On non-ARM64 targets (`MLAS_F16VEC_INTRINSICS_SUPPORTED` is only defined for ARM64), commits 1-3 change nothing because their code is inside `#if` blocks for those macros. Commit 4 has one effect there: `Tanh` and `Softcap` are no longer registered. Their `ExecuteShort()` body was already compiled out on those targets, so they used to pass without running anything. Diffstat: 7 files changed, 34 insertions(+), 10 deletions(-). ### Motivation and Context The i.MX 8M Plus has Cortex-A53 cores (ARMv8.0-A). Its `/proc/cpuinfo` lists `Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid`, with no `fphp` or `asimdhp`. On that board, `onnxruntime_mlas_test` (built from main plus an unrelated VSINPU change, which does not touch MLAS) stopped at `Fp16Activation.ShortExecute` with exit code 132 (SIGILL), after 793 s. Up to that point, 1489 tests had passed and 1 had failed (`Eltwise_Add.ShortExecute`). gtest printed no final summary. I then ran each of the 158 test suites separately (`--gtest_filter=<Suite>.*`). 142 exited 0 and these 16 did not: | Suite(s) | Exit code | Cause | | --- | --- | --- | | `Fp16Activation`, `NeonErfFP16`, `NeonGeluFP16`, `NeonHGemmTransposedB`, `NeonHGemmB`, `NeonHGemmPackedB`, `NeonHGemm`, `NeonFp16DequantB`, `NeonFp16HQ4BitGemmKernel`, `NeonFp16DequantB8Bit` | 132 (SIGILL) | FP16 vector arithmetic on a CPU without it | | `Eltwise_Add`, `Tanh`, `Softcap`, `Exp` | 1 | C++ exception `"<Kernel>_Fp16 is not supported."` | | `Softmax_SingleThread`, `Softmax_Threaded` | 139 (SIGSEGV) | call through the null `SoftmaxDispatch->ReduceMax_Fp16` | All 16 are covered by this PR. I checked whether the FP16 activation kernel can be reached during normal inference on non-FP16 CPUs. This is from reading the code, not from a runtime test. The FP16 `MlasActivation` path is only reachable through `MLAS_HALF_GEMM_ACTIVATION_PROCESSOR` and `MlasFp16Activation`. Those are used by the CPU EP `MLFloat16` kernels `Relu`, `LeakyRelu`, `Conv`, `FusedConv` and `NhwcFusedConv`. All of these are registered in `RegisterFp16Kernels()` (`cpu_execution_provider.cc` and `cpu_contrib_kernels.cc`), which is only called when `MlasFp16AccelerationSupported()` is true. I found no existing upstream issue or PR for this. I searched for "Fp16Activation", "test_fp16_activation", "MlasFp16AccelerationSupported", "HasFp16VectorAcceleration" and "mlas illegal instruction". The related items microsoft#33080, microsoft#33054 and microsoft#32301 cover different problems. #### Testing Hardware: Variscite DART-MX8M-PLUS (i.MX 8M Plus, 4x Cortex-A53), Linux 6.18.20. Build: cross-compiled with the Yocto SDK (fsl-imx-xwayland 6.18-wrynose), clang 22.1.8, `--config Release --build_shared_lib --cmake_generator Ninja --compile_no_warning_as_error --no_telemetry --use_vsinpu`. KleidiAI and SVE were enabled by default. Unit tests were built, and the deployed binaries are stripped. On the board (Cortex-A53, no FP16 arithmetic): | | Before (main 1f542b8 + VSINPU change) | After (this PR) | | --- | --- | --- | | Full `onnxruntime_mlas_test`, no filter | exit 132 at `Fp16Activation.ShortExecute` after 793 s; 1489 passed, 1 failed, no summary | measured with commits 1-3 (two independent clean builds and runs gave identical results): exit 0, 23733 tests from 147 suites ran, 22353 passed, 1380 skipped, 0 failed; 10050 s total (gtest). The 10 suites gated in commit 1 are not registered. `Eltwise_Add`, `Exp` and both `Softmax_*` suites pass with their FP32 parts only. `Tanh.ShortExecute` and `Softcap.ShortExecute` were reported as passed (0 ms) without running anything, which commit 4 fixes. With commit 4 they are not registered. The only change in `--gtest_list_tests` is that those 2 suites (1 test each) are gone. So the expected full run is 23731 tests from 145 suites, 22351 passed, 1380 skipped, 0 failed. I did not repeat the full run with commit 4 on the board | | `--gtest_filter='*Fp16*:*FP16*:*Activation*'` | exit 132 at `Fp16Activation.ShortExecute` | exit 0: 61 tests from 29 suites ran, 50 passed, 11 skipped, 0 failed | The full-run numbers above are from commits 1-3. With commit 4 (d73d987) on the same board, `--gtest_list_tests` differs from the commits 1-3 binary only by the removal of `Tanh.ShortExecute` and `Softcap.ShortExecute`, and `--gtest_filter='*Fp16*:*FP16*:*Activation*:Tanh.*:Softcap.*:Eltwise_*:Exp.*:Softmax_*'` exits 0: 66 tests from 34 suites ran, 55 passed, 11 skipped, 0 failed. I did not repeat the full run with commit 4. Under QEMU user-mode emulation (qemu-aarch64 10.0.13, **emulation only, not hardware**). The filter was `Fp16Activation.*:NeonErfFP16.*:NeonGeluFP16.*:NeonHGemm*:NeonFp16*:Eltwise_*:Tanh.*:Softcap.*:Exp.*:Softmax_*`. | `-cpu` | Before | After commits 1-3 | After commit 4 | | --- | --- | --- | --- | | `cortex-a53` (no FP16) | exit 132 at `Fp16Activation.ShortExecute` | exit 0, 13 of 13 passed (the 10 suites from commit 1 are not registered) | exit 0, 11 of 11 passed (`Tanh` and `Softcap` are not registered either) | | `cortex-a55` (FP16) | exit 0, 23 of 23 passed | exit 0, 23 of 23 passed | not re-run (test list identical, see below) | | `max` (FP16) | exit 0, 23 of 23 passed | exit 0, 23 of 23 passed | `--gtest_list_tests` identical; the wider filter `*Fp16*:*FP16*:*Activation*:Tanh.*:Softcap.*:Eltwise_*:Exp.*:Softmax_*`: exit 0, 3462 tests ran, 3461 passed, 1 skipped (`NchwcDepthwiseSlidingTest.SumBiasActivationsNonFinite`), including `Tanh.ShortExecute` and `Softcap.ShortExecute` | On `cortex-a53`, `--gtest_list_tests` lists 23745 tests before this PR, 23735 after commits 1-3 and 23733 with commit 4. On `cortex-a55` and `max`, the `--gtest_list_tests` output is the same before the PR, after commits 1-3 and with commit 4 (a55: 40809 tests, max: 42523), so the change does not alter test registration on FP16-capable CPUs. I did not test on FP16-capable hardware.
### Description I fixed float16 conversion from a model path on Windows. The converter now closes its temporary model before ONNX opens it for shape inference and loading, then removes it in `finally`. It keeps the temporary output beside the original model so relative external-weight paths continue to resolve. I added tests for embedded and external weights, three `keep_io_types` settings, repeated conversions, unchanged input files, and cleanup after inference or loading errors. ### Motivation and Context Calling `convert_float_to_float16(str(model_path))` with default shape inference raises `PermissionError` on Windows because `NamedTemporaryFile` remains open when `onnx.load` reopens it. The string-path route supports models that exceed in-memory shape inference's size limit, so disabling inference would lose the intended behavior. Existing ModelProto and inference-disabled path conversions produce identical models before and after this change. Existing model and external-weight files remain byte-identical. ### Validation I tested on Windows with Python 3.13.3, ONNX 1.18.0 and the ONNX Runtime 1.30.0 CPU wheel, while importing the converter from source. - `test_float16.py`: 13 passed, 6 subtests passed. Against pristine source, all six new conversion subcases fail with the expected PermissionError. - 30 compatibility controls pass on both base and patch, including unchanged files and error cleanup. - 12 converted-model cases pass ONNX validation and real CPU inference with the expected values. - `lintrunner onnxruntime/python/tools/transformers/float16.py onnxruntime/test/python/transformers/test_float16.py` and `git diff --check` pass. I ran the test module from its directory with the installed native wheel preloaded and the selected source directory on `PYTHONPATH`: ```python import onnxruntime import float16 import pytest raise SystemExit(pytest.main(["test_float16.py", "--import-mode=importlib", "-q"])) ``` I have not run the native build, full repository suite, other platforms or a model larger than 2 GB locally. AI assistance disclosure: AI-assisted development tools were used during investigation and implementation. The reported tests were run against the final diff. --------- Co-authored-by: xadupre <xadupre@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…3342) GitHub issue: microsoft#33300 **Description** This PR removes the assertion that thread_count and DegreeOfParallelism need to match in the test _GroupQueryAttentionTest.FlashDecoding_LocalWindow_Reference_CPU_ **Motivation and Context** _GroupQueryAttentionTest.FlashDecoding_LocalWindow_Reference_CPU_ asserted that _concurrency::ThreadPool::DegreeOfParallelism(&thread_pool)_ equals the pool's constructor thread count (12). This doesn't hold true on hybrid CPUs: _DegreeOfParallelism_ scales the reported value by a granularity factor (4x) on hybrid hardware, so it returns 48 instead of 12 and the assertion fails. The asserted value is never used elsewhere in the test — thread_count alone drives args.thread_count (the MlasExecuteThreaded iteration count) and the scratch-buffer sizing.
…t#33348) ### Description Pow can load a scalar operand in its vectorized broadcast path, including base [3,2,64,64] with exponent [1,1,1,1], then pass it to the vec4-only pow_v helper. Convert each argument to vec4 of its own element type so scalar loads broadcast correctly and mixed base/exponent types are preserved. Add six WebGPU regressions covering the reported shape, broadcast in both directions, row-wise mixed float/int32, and FP16, each with dynamic and initializer exponents and CPU fallback disabled. Validation on Windows x64 / native WebGPU / D3D12: - All six new tests fail before the fix and pass afterward: 12 confirmed GPU executions, zero skips. - Existing Pow tests: 18 reported passes, zero GTest skips; 11 GPU executions. Six double/int64 cases are CPU-only, and one generic FP16 helper is inactive without CUDA/CoreML. - Fresh and incremental builds, changed-line clang-format, and git diff --check passed. Metal and browser/Wasm were not tested. ### Motivation and Context Fixes microsoft#32842.
### Description - Change `MatMulExecutionPlanner::CreateExecutionPlan` to return `Status` and publish its output plan only after validation succeeds. - Validate algorithm/configuration compatibility, host-known algorithm prerequisites, packed tuning, subgroup size agreement, and overflow-safe packed/Split-K dispatch arithmetic in the planner. - Remove duplicated prerequisite reconstruction and validation from `MatMulComputeDispatcher`. - Add contract tests for unsupported forced requests, unchanged output on failure, invalid vendor configurations, and dispatch overflow. - Update the WebGPU MatMul planner design documentation. ### Motivation and Context Follow-up to microsoft#32630. A successful `CreateExecutionPlan` should mean that the returned plan is executable for all prerequisites already known to the host. Previously the planner returned an unchecked proposal and the dispatcher reconstructed the same prerequisite facts to validate it, which weakened the plan contract and allowed the two paths to drift. Forced test selections still bypass performance heuristics, but unsupported requests now fail in plan creation without silently falling back. ### Testing - Static Vulkan `onnxruntime_provider_test` build - 41 planner, configuration, and execution-plan validation tests passed - 22 hardware-backed forced MatMul, FP32 accumulation, Split-K, dynamic reselection, and pointwise Conv tests passed - WebGPU plugin library target built successfully The full local plugin `onnxruntime_provider_test` link remains blocked by an existing MSVC `C4744` Abseil/GoogleTest signedness warning promoted to `C2220`, followed by `LNK1257`; no changed planner source failed compilation.
jatinwadhwa921
self-requested a review
October 14, 2026 06:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.