# What changed in executorch

> 86 changes in executorch 1 from its official release notes, upgrade guides and advisories: 2 breaking, 57 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/pypi/executorch/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## executorch 1

### Breaking changes

- Softmax, log-softmax, mean, and sum now accumulate in FP32 for improved numerical accuracy. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Removed the legacy toggles from the runtime and export path. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)

### New APIs and options

- Added support for the Ethos-U65 target. (1.5.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1)
- Added a public API for retrieving the thread count. (1.5.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1)
- The export pipeline supports multi-method models and per-backend load options. (1.5.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1)
- Added Neutron support for `rsqrt`, Hardswish, `softmax`, reflected padding, scalar elementary arguments, and AdaptiveAvgPool1d. (1.5.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1)
- The AOTI backend gained opt-in ROCm support, packed W4 execution, and Voxtral Realtime coverage. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added Qualcomm support for the `as_strided` operator. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- LLM Export adds BF16 activation support. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added BF16-by-FP32 GEMV decode support. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- XNNPACK gained BF16 fully connected delegation. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Python wheels now include a C++ SDK with linkable delegate libraries and packaged TorchAO kernels. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Memory planning can account for target memory maps and shared allocations with offsets. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added opt-in explicit-layout lowering for Cortex-M, with convolution and pooling kernels. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Arm support now includes the Ethos-U65 target. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Arm export now supports Ethos-U85 KV caches. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- MLX lowering now supports flip. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Qualcomm enables Gemma 4 text models. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Shared pre-decomposition and graph-transform hooks include common view/permute propagation and reinplace passes. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Qualcomm adds support for Hadamard-transform flows. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added INT4 short-query kernels for CUDA. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added INT5 short-query kernels for CUDA. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added INT6 short-query kernels for CUDA. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Qualcomm support now includes LLM quantization-aware distillation. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Metal adds addmm support. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Metal adds split_copy support. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- The export pipeline now supports models with multiple methods. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- MLX lowering now supports native_group_norm. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- MLX adds flat, ring, and cell off-graph KV-cache layouts with shared pools. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added Qualcomm support for the `pdist` operator. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Loading now supports options configured per backend. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Vulkan adds quantized convolution paths using unsigned dot products. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added a quantized MoE feed-forward operator with INT4 packing and fused projections. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added a quantized stacked-halves RoPE operator. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added Qualcomm support for the `reflection_pad3d` operator. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added Qualcomm support for the `scatter_add` operator. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added Qualcomm support for the `scatter_reduce` operator. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- CUDA inference can target shared memory across architectures. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added Qualcomm support for the `sort` operator. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- MLX lowering now supports trunc. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Vulkan adds two-dimensional dispatch helpers and device-safe dispatch geometry. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- MLX lowering now supports upsample_nearest2d. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Vulkan can wrap external images and buffers using caller-provided dimensions. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Added 2-bit weight quantization support. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added an MLX handler for bitwise_or. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added BFloat16 and FP16 activation support. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Ethos-U and VGF dependencies can be installed with the optional package extras. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added a grammar field to GenerationConfig. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added a grammar_type field to GenerationConfig. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added an MLX handler for hardtanh. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added an MLX handler for leaky_relu. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added partitioning, tensor dumping, and runtime heap profiling. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added support for quantizing LLMs with multiple batches. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added addmm, select_scatter, variance, diagonal, fill, cdist, LayerNorm variants, and hyperbolic functions. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added BFloat16-output quantized embeddings on CPU. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added quantized same-padding convolution support in XNNPACK. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Expanded lowering for activation, binary, conversion, data layout, FFT, reduction, shape, and unary operators. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added or improved profiling, shader segments, BFloat16, MXFP, grid sampling, and persistent IO mappings. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added desktop support for Linux and Windows GPUs and opt-in wheel builds. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)

### Performance

- BF16 SDPA was optimized. (1.5.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1)
- Decoupled calibration, quantization, compilation, and evaluation stages for faster workflows. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)

### Behavior and default changes

- Arm support was expanded for symbolic shapes, dynamic convolution, and pooling. (1.5.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1)
- Migrated the Android API from Java to Kotlin. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Expanded operator coverage and removed several broadcasting restrictions. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Migrated the Android API from Java to Kotlin. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)

### Tooling

- Added scratch-buffer planning for AoT. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added a tool reporting ANE, GPU, and CPU dispatch. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added backend profiling. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)

### Fixes and other changes

- The supported CMake floor was lowered so builds with CMake 3.26 through 3.28 work again. (1.5.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1)
- Fixed NaNs in CUDA split-K attention for Voxtral. (1.5.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1)
- Failures for invalid device-planned copies are clearer. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Failures caused by missing delegate data are clearer. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- PTE and PTD files are checked for schema versions, with clearer failures for invalid device-planned copies and missing delegate data. (1.5.0) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.1), [release notes](https://github.com/pytorch/executorch/releases/tag/v1.5.0)
- Improved direct serialization for embedded flows. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Added explicit dim-order legalization for channels-last portable fallbacks. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Expanded support to additional CPU variants, including more Corstone-300 variants and M0+. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Migrated the Android APIs from Java to Kotlin. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Fixed partition, format, and conversion issues. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Fixed correctness. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Fixed a null dereference when op-package options are absent. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Fixed same padding for even kernels in XNNPACK. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Improved preservation of symbolic input metadata during exported-program pass replay. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Hardened validation and segment loading against null metadata. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Migrated the Android API from Java to Kotlin. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Fixed incorrect baked-in paths within wheels. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
- Fixed XNNPack PreLU in quantized graphs. (1.4.1) — [release notes](https://github.com/pytorch/executorch/releases/tag/v1.4.1)
