# What changed in coreai-torch

> 50 changes in coreai-torch 0.4 from its official release notes, upgrade guides and advisories: 9 breaking, 11 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/pypi/coreai-torch/

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

## coreai-torch 0.4

### Breaking changes

- conv_transpose now rejects output_padding values that PyTorch itself rejects. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- The separate optimize() step has been removed. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Per-operation timing lookups have been removed. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- The total_duration_ns benchmark field has been removed. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Integer true division now promotes to float instead of silently truncating. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Artifacts converted with coreai-torch v0.4.0 will fail to load or specialize on-device starting with OS 27 second beta; reconvert with v0.4.1 or later. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- save_asset records the producer in asset metadata, overwrites an existing serialized model instead of failing, and validates that the destination has a .aimodel extension. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- The legacy Torch importer was removed. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- The unused ml_asset module was removed. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)

### New APIs and options

- A debugging report shows the device chosen for each operation and the reason for any declined placement. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- A debugging report captures and compares intermediate values. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- A debugging report breaks a program down by operation kind. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- A debugging report explains why a placement moved between two plans. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Compares two benchmark runs and reports resized dispatches when operations were added or removed. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Excluded nodes are reported as ValidationResult.SKIPPED and no longer narrow the debugging search. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Adds support for aten::atan2, decomposed into atan(y/x) with per-quadrant correction. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Adds a two-step patch/sub-export API for callers driving export themselves, with autograd support so gradients flow through externalized submodules; the one-shot path is unchanged. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- InferenceValue.Kind now supports image types. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- Lowering now supports masked_scatter, which writes values into a tensor at masked positions. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- Python bindings now support strided views. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)

### Performance

- Debug operation IDs are assigned once per graph rather than once per node, making conversion time linear in graph size; IDs now follow IR order. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Diffing is linear-time, reports modified operations rather than unrelated removal/addition pairs, and supports weight-value comparison policies. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)

### Behavior and default changes

- Timing is recorded once per dispatch, rather than divided among individual operations; benchmarks now include an untimed warmup run. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Composite labels no longer include the random suffix added by externalization, allowing programs from different builds to be compared by label. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- to_coreai() now returns an already-optimized program, so callers no longer need a separate optimization step. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- The upper bound on torch is removed; torch>=2.8.0 is accepted, with a warning when installed PyTorch is newer than the verified range. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- The scalarAt subscript is now public. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- Shape lowering now supports mixed SymInt and int shapes. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- Lowering supports dynamic or symbolic repeat counts, rather than only fixed integers. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)

### Tooling

- Debug location tracking was improved. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- Intermediate value inspection was improved. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)

### Fixes and other changes

- Fixed a benchmarker interval-ID collision that caused debugging crashes. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Debugging bisection now honours its depth range. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Diffing now follows arguments nested in lists, tuples, and dicts, as well as kwargs; constant arguments are part of node identity. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- The graphdiff tool no longer recurses infinitely on non-torch graphs. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Debugging histograms no longer crash for callees that have no graph. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Debugging no longer crashes when it encounters an unrecognised compute device. (0.4.3) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.3)
- Listings omit colour escapes when written to a file or in-memory stream and indent to match the line they describe. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Argmin indices are now correct when minima equal dtype-extremal values. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Conv transpose lowering is fixed. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Debug info attribution and module instance numbering are fixed across separately converted hierarchies and for operations reachable only through operand edges. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Batch norm is computed in fp32 instead of downcasting parameters, avoiding overflow of large running_var values and silently zeroed output. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Synthesized gamma and beta retain normalized_shape when elementwise_affine=False, matching the composite boundary's declared axes. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- max_pool2d now respects its default stride value. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Negative-axis handling is fixed so per-channel axis=-1 is no longer applied one dimension early. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Calling torch.mean with dtype on an integer tensor no longer fails conversion. (0.4.2) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.2)
- Lowering preserves static output shape for float dtypes when bounds are integers. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- Shape lowering supports mixed SymInt and int shapes, and concat lowering works when a non-concat axis remains dynamic after shape promotion. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- Shape lowering now supports mixed SymInt and int shapes. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
- Shape lowering now supports mixed SymInt and int shapes. (0.4.1) — [release notes](https://github.com/apple/coreai-torch/releases/tag/v0.4.1)
