Hi everyone,
This is a reminder to feature owners to file a release-highlight issue for every feature you want tracked in the 2.14 release.
IMPORTANT: features that are not submitted will NOT be mentioned in the release blog or other comms.
## How to submit
Either one of:
1. File a new issue in pytorch/pytorch using the “New Feature for Release” template, or
2. Label an existing RFC or tracking issue with the `release-feature-request` label.
Please include, per feature:
- What ships in 2.14: the API surface, plus a stability designation of either API Stable or API Unstable. (Beta and Prototype are no longer used as designations.)
- Tutorial links, new or updated.
- A short blog-post write-up, 2-3 paragraphs, usable as-is in the release blog.
- Any platform or backend caveats: CUDA, ROCm, XPU, MPS, CPU-Arm.
The running list of tracked features lives [here](Issues · pytorch/pytorch · GitHub).
## Candidate list
The following was identified by an AI-assisted scan of the `release/2.13` to `release/2.14` diff, covering 2,995 commits from 487 contributors. This list is a starting point, not authoritative. It was assembled from the release-notes worksheets, most of which are still untriaged, so it will miss things and mis-scope others. If your feature is missing, that is exactly what this post is asking you to fix.
### Features
- NVGEMM, a CuTeDSL/CUTLASS GEMM backend for Inductor with epilogue fusion, scaled and NVFP4 GEMM, and grouped-reduction epilogues
- nccl2, torchcomms landing in-tree as a c10d backend with nonblocking communicators and eager comm-split
- Fault-tolerant collectives in c10d, with in-place process-group reconfiguration and Gloo support
- One-sided RMA window APIs on Backend and ProcessGroup
- A backend-agnostic Flight Recorder, recording via ProcessGroup hooks
- Pluggable distributed backends, registered through Python entry points
- `torch.switch`, a higher-order op for multi-way branching
- Declarative dynamic shapes via `@dynamic_spec` and ShapesSpec, shared across compile, export and `make_fx`
- Native linear algebra on MPS: Jacobi SVD, eigh, lstsq, panel-factorization Cholesky, geqrf, LU factor and solve, and matrix exp
- FlexAttention on MPS gains KV batch broadcasting, LSE and max-scores outputs, and SymInt captures
- `torch.linalg.polar` and `torch.linalg.matrix_sqrth`
- Memory-snapshot annotations: a public `torch.cuda.graph_annotations` module, post-facto annotation, and backward-kernel naming
- CUDA graph lifecycle hooks and multi-pool capture, plus `torch.while_loop` capture
- An expanded `torch::stable` ABI, with PyObject conversion and more Tensor overloads
- Autograd extension points: a node-creation hook, and output grad dtype on custom functions
- AOTInductor external constants for zero-copy weight sharing, plus lazy autotuning
- XPU graph capture and MemPool handling
- Helion backend integration
- `torch.distributed.set_timeout` as a public API
### Performance Improvements
- Compute and communication overlap on by default in Inductor
- Large MPS op migration to native Metal, plus a five-part reduction rewrite
- The MPS `F.linear` decode path, recovering an 8.5x slowdown on sequence-length-1 inputs
- MPS allocator bucketing and placement heaps, plus pinned-buffer blit copies
- Dynamo per-call overhead reductions
- ROCm grouped and scaled grouped GEMM Triton lowerings, and Origami enabled
- Inductor combo-kernel and split-reduction tuning, including GB200
### Deprecations and BC-breaking changes
- TorchScript deprecation warnings made visible, and TorchScript kept out of import paths
- Profiler: `use_cuda` removed, `with_modules` deprecated, and the pattern matcher and BasicEvaluation removed
- Python function events excluded from profiler `key_averages()` by default
- The Dynamo TVM backend Relay path removed
- `_set_pg_timeout` deprecated, `setSequenceNumberForGroup` now a no-op, and control collectives removed
- `register_opaque_type` renamed to `register_custom_class`, and OpaqueBase to CustomClassBase
- CUDA green context set and pop deprecated
- Sparse tensors validated for consistency under `weights_only`
- The balanced accuracy policy removed from `linear_cross_entropy`
### Non-Feature Updates
- CUDA: 12.6, 13.0 and 13.2. CUDA 12.9 is dropped, and the default wheel remains CUDA 13.0. CUDA 13.4 builds exist but are excluded from Windows and the docker release matrix.
- ROCm: 7.2 and 7.14, with 7.1 dropped. ROCm 7.14 wheels come from the TheRock pip SDK.
- Python: 3.10 through 3.15, including free-threaded 3.14t and 3.15t, unchanged from 2.13.
- Build system: migrated from setuptools to scikit-build-core.
- Dependencies: cuDNN 9.24, oneDNN 3.12.3, and XPU support package 2026.1.
- New platform coverage: a native linux-riscv64 build image, and Rubin (sm_107) in Inductor.
## 2.14 Release Timeline
- M1: Release Announcement (21/7/26)
- M2: All PRs landed in PyTorch repo / Feature Submission Closed (7/8/26)
- M3: Release branch cut, create RC1 for PyTorch and Torchvision (week of 10/8/26)
- M4: Release branch finalized, announce final launch date, feature classifications published (week of 24/8/26), and the final RC is produced
- M4.1: Tutorial drafts submission deadline (28/8/26)
- M5: External-Facing Content Finalized (1/9/26)
- M6: Release Day (2/9/26)
Milestones M1 through M3 are complete. Feature classifications are published at M4, so highlight issues filed now can still make the blog.
## How you can help
- Feature owners: submit a release-highlight issue with the blog blurb and tutorial links.
- Tutorial authors: open PRs against pytorch/tutorials tagged `2.14-release`. These are tracked toward M4.1.
- Everyone else: flag anything major that is missing from the candidate list above. Based on how thin the scan came back, the areas most likely under-represented are Quantization, ONNX, Export, and CPU/Arm.
Questions welcome on this thread.
Cheers,
Team PyTorch