Skip to content

Sync msft_12_10_2026 - #1340

Merged
jatinwadhwa921 merged 80 commits into
ovep-developfrom
sync_msft_12_10_2026
Oct 14, 2026
Merged

jatinwadhwa921 merged 80 commits into
ovep-developfrom
sync_msft_12_10_2026

Conversation

@hdharpure9922

Copy link
Copy Markdown

No description provided.

mustjab and others added 30 commits October 7, 2026 13:48
)

## 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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=next&package-manager=npm_and_yarn&previous-version=15.5.24&new-version=15.5.27)](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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gradle/actions/wrapper-validation&package-manager=github_actions&previous-version=5.0.2&new-version=6.4.0)](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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=reviewdog/action-cpplint&package-manager=github_actions&previous-version=1.11.0&new-version=1.12.0)](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>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=SixLabors.ImageSharp&package-manager=nuget&previous-version=2.1.9&new-version=4.1.2)](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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-dotnet&package-manager=github_actions&previous-version=5.4.0&new-version=6.0.0)](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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=source-map-js&package-manager=npm_and_yarn&previous-version=1.2.1&new-version=1.2.2)](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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-go&package-manager=github_actions&previous-version=6.5.0&new-version=7.0.0)](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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=compression&package-manager=npm_and_yarn&previous-version=1.8.1&new-version=1.8.2)](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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=source-map-js&package-manager=npm_and_yarn&previous-version=1.2.1&new-version=1.2.2)](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.
chilo-ms and others added 27 commits October 9, 2026 16:09
…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
jatinwadhwa921 self-requested a review October 14, 2026 06:20

@jatinwadhwa921 jatinwadhwa921 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jatinwadhwa921
jatinwadhwa921 merged commit 73adcd3 into ovep-develop Oct 14, 2026
5 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.