n.b. This release is targeting ONNX 1.21. ONNX 1.22 will be supported in ORT 1.28.
n.b. This changelog was generated via LLM. Only the contributor list has been verified. As always, only trust the commit history.
Announcements & Breaking Changes
- CUDA 12 package files are now explicitly named as such.
- CUDA 12 packages are deprecated, please move to CUDA 13 ASAP.
Security Fixes
- Fixed out-of-bounds read in
SoftmaxCrossEntropyLossvia label bounds validation (#28004) - Hardened
OneHotinput validation and output-size computation (#28014) - Added SafeInt overflow protection in
Expandand capped constant-folding output sizes (#28055) - Bounded total output allocation size in
Tilekernel (#28070) - Added mask/input shape consistency checks in
MaxpoolWithMask::Compute(#28223) - Fixed
BitShiftUB for shift amounts greater than or equal to bit width (#28272) - Validated sequence bounds in GQA (
seqlens_kvscos_cache) (#28277) - Validated conv bias shape in
WordConvEmbeddingto prevent OOB reads (#28279) - Fixed int32 overflow in CUDA Cast and UnaryElementWise kernels for very large tensors (#28386)
- Fixed out-of-bounds read in
CropBasescale handling (#28399) - Fixed rank-underflow bug in Inverse kernel trailing-dimension indexing (#28400)
- Added sparse tensor external file path validation and additional external-path hardening (#28408, #28709, #28725)
- Switched remaining
torch.load()calls toweights_only=True(#28421) - Added CPU cache-indirection beam-index validation (#28486)
- Added additional overflow/bounds checks and test coverage in runtime buffers (#28713, #28747)
New Features
Execution Provider Plugin API
- Added zero-copy I/O for plugin EPs with HOST_ACCESSIBLE memory (#28037)
- Added
OrtEp::OnSessionInitializationEnd()callback (#28319) - Added plugin EP session-options getters (#28377)
- Added CUDA Plugin EP provider options for streams and external allocators (#28603)
Core APIs & Runtime
- Added support for ONNX overloaded functions (IR v10+) (#28275)
- Added FLOAT8E8M0 datatype support in ONNX Runtime (#28381)
- Added CPU Cast support for FLOAT8E8M0 (#28435)
- Added
kOrtEpDevice_EpMetadataKey_OSDriverVersionexample and docs (#28282)
Quantization & Training Tooling
- Added calibration cache support to
quantize_static(#28221) - Added
ActivationRestrictedAsymmetricquantization option (#28237) - Added opset-21
block_sizeattribute support to QDQ quantization (#28522) - Added CPU fallback for
FusedAdamoptimizer in ORT Training (#28233)
Execution Provider Updates
NVIDIA CUDA EP
- Added
ConvTranspose-22support (#27710) - Filled CUDA opset gaps for LSTM, RNN, Reshape, Cast, Round/Equal, ReduceMax/ReduceMin, Sin/Cos, and Random* ops (#27737, #27743, #27742, #27744, #27754, #27755, #27756, #27759)
- Added LpNormalization support for CUDA EP (#28724)
- Added chunked dequant+GEMM for MatMulNBits to reduce peak GPU memory (#28712)
- Added QMoE tests for standard swiglu and improved decode-path routing/softmax kernels (#28741, #29026)
- Fixed CUDA Attention dispatch mismatch for GQA head-size cases (#28358)
- Fixed CUTLASS FMHA bias-loader alignment on unaligned kernel path (#28369)
WebGPU EP
- Added LSTM support on WebGPU (#27881)
- Added per-graph buffer manager for multi-graph capture (#28260)
- Added QKV and MLP layer fusions for Qwen3-style models (#28280)
- Added QKV bias support in FlashAttention for MultiHeadAttention (#28380)
- Added shader dump-to-file environment variable and nightly validation checks (#28674)
- Added opset-24 + KV-shared decoder support (Gemma 4) (#28501)
- Performance improvements: FlashAttention M4 Max optimization and subgroup-based LinearAttention tuning (#27780, #28412, #28519, #28520)
- Fixed numerical and correctness issues in QMoE, LayerNorm/SkipLayerNorm, and MatMul bias indexing (#28427, #28434, #28475)
CoreML EP
- Added support for pre-opset-13
Split(splitattribute path) and scalarGatherindices (#28270, #28278) - Added
FusedConv,Identity,Ceil,Tile,Cast(bool),Sin,Cos, andGatherNDsupport (#28289, #28293, #28595, #28596, #28598)
TensorRT / DML / QNN
- Improved TensorRT RTX compatibility (multi-GPU tests, API guards, and subgraph fixes) (#27837, #28361, #28611, #28503)
- Added diagnostics for DML failure paths (#28495)
- Updated QNN ETW log level rule handling (#27593)
Web & JavaScript
JavaScript / Node.js
- Updated JavaScript dependencies (
next,postcss,tmp,qs,body-parser, and other npm packages) (#27705, #27894, #28304, #28547, #28644, #28683, [#28694]
CPU & Core Optimizations
MLAS / Quantization / Attention
- Added NHWC convolution path in MLAS to reduce transpose overhead (#26834)
- Added CPU QMoE 2-bit support and LUT GEMM fast path (#28185)
- Added quantized KV-cache support for CPU GroupQueryAttention with SIMD optimizations and tiled compute (#28576, #28578, #28606, #28695)
- Added RVV-optimized NCHWc convolution/pooling and LLM operators for RISC-V (#28411, #28518)
- Parallelized CPU ScatterElements and optimized MatMulNBits 2-bit float-zero-point path (#28588, #28589)
- Added optional bias support in MatMulNBits CPU LUT GEMM path (#28742)
Graph, Optimizer, and Fusion
- Added DiT attention fusion for F5-TTS and diffusion transformer models (#27999)
- Improved ONNX Attention dispatch path and removed legacy unfused MHA path (#27992)
- Added support for optional
present_key/present_valueoutputs in GQA and Gemma4 support (#28242) - Added implicit-input handling for partitioning/fusion around control-flow nodes (#28608, #28690)
Language Bindings
Python
- Fixed runtime-unresolvable type annotations in
SessionandInferenceSession(#27802) - Made
sympyan optional runtime dependency (#28141) - Added PEP 561
py.typedmarker to theonnxruntimepackage (#28438)
C#
- Added EP tests for CUDA Plugin EP (#28375)
Bug Fixes
Critical & Correctness Fixes
- Fixed session use-after-free when
UserLoggingFunctionis used (#28314) - Prevented double-free in
OrtModelEditorApiownership transfer (#28123) - Fixed plugin EP provider-library load refcount leak and added regression test (#28396, #28430)
- Fixed dangling pointer from temporary return value (#28419)
- Fixed PRelu returning NaN for infinite inputs on CPU EP (#28750)
- Fixed CPU Attention softcap/attn_mask ordering and added CUDA spec coverage consolidation (#28379)
- Fixed Reshape
allowzero=1handling for chained zero-size tensors (#28455) - Fixed CPU QLinearConv per-channel weight zero-point handling for distinct values (#28456)
- Fixed Unicode-path handling issues on Windows and AppContainer path canonicalization (#28390, #28509)
Portability Fixes
- Build and portability fixes across AIX, GCC-15, S390x, libc++/Clang, FreeBSD, and cross-compilation flows (#26704, #27191, #28016, #28049, #28074, #28362, #28567, #28507)
- Fixed CPUIDInfo bounds handling for unknown ARM vendors (#28344)
- Fixed
Resizenearest-mode rounding bug for negative halfway values (#28345)
Contributors
Thanks to our 106 contributors for this release!
@adrastogi, @adrianlizarraga, @AIFrameworksIntegration, @AlekseiNikiforovIBM, @angelser, @angelserMS, @ankitm3k, @anzzraju1997-glitch, @apsonawane, @arajendra, @ayappanec, @bachelor-dou, @badranX, @baijumeswani, @BoarQing, @bopeng1234, @bsosnader, @cbourjau, @chilo-ms, @chunghow-qti, @chwarr, @Craigacp, @daijh, @derdeljan-msft, @dparikh79, @edgchen1, @elwhyjay, @ericcraw, @eserscor, @feich-ms, @fs-eire, @gaugarg-nv, @gblong1, @GopalakrishnanN, @gramalingam, @guschmue, @hariharans29, @HectorSVC, @intbf, @ishwar-raut1, @Jaswanth51, @jatinwadhwa921, @javier-intel, @jchen10, @jiafatom, @Jiawei-Shao, @jnagi-intel, @jocelyn-stericker, @JonathanC-ARM, @justinchuby, @jwludzik, @kevinch-nv, @Kotomi-Du, @kpkbandi, @KV2773, @Laan33, @lhrios, @maxwbuckley, @MayureshV1, @mdvoretc-intel, @mingyueliuh, @mklimenk, @mustjab, @n1harika, @nazanin-beheshti, @orlmon01, @prathikr, @preetha-intel, @psakhamoori, @qiurui144, @qjia7, @qti-ashwshan, @qti-hungjuiw, @qti-yuduo, @rajatmonga, @RajeevSekar, @Rishi-Dave, @rvandermeulen, @RyanMetcalfeInt8, @SamuelLess, @sanaa-hamel-microsoft, @sfatimar, @sgbihu, @shiyi9801, @simonbyrne, @skottmckay, @susbhere, @sushraja-msft, @tairenpiao, @TejalKhade28, @theHamsta, @tianleiwu, @titaiwangms, @umangb-09, @velonica0, @vraspar, @vthaniel, @wenqinI, @xadupre, @xenova, @xhan65, @xiaofeihan1, @xieofxie, @yuslepukhin, @ZackyLake, @zejianzhang1982, @zz002
Full Changelog: v0.1.4...v1.27.0