Repository navigation
v2.32.3
v2.32.3 (2026-07-25)
This release is published under the Apache-2.0 License.
Bug Fixes
- capture: Avoid torch 2.1 storage weakref segfault (
7420a39)
Torch 2.1 returns ephemeral UntypedStorage wrappers whose deallocator can leave WeakKeyDictionary refs dangling. The runnable completeness witness then crashed CPython while releasing its storage-origin map at capture teardown.\n\nFeature-detect retained storage wrappers and keep an identity-safe strong origin registry for the active forward on affected runtimes; preserve weak keys on modern torch.
- ci: Install full [test] extra in smoke + pin mypy/ruff (unblock matrix, stop tooling drift) (
1b9f677)
After 2.32.2, all smoke matrix legs still failed at COLLECTION -- the smoke job installed only .[dev,tabular], but merged rf/viz test files import heavy deps unguarded (torchvision in test_rf_remediation_rules.py, etc.), and pytest imports every test module during collection. And Quality/mypy failed because CI installed an unpinned mypy that flags Tensor.names (torch-stub drift), which local mypy 2.1.0 passes.
- .github/workflows/tests.yml: smoke installs .[dev,tabular,test] so torchvision/ timm/transformers/pydot are present -> collection succeeds -> the matrix actually runs (finally verifying the torch-2.1 / py3.10 package fixes shipped in 2.32.1, previously masked by collection errors). Heavier/slower smoke, deliberately. - pyproject.toml: pin ruff==0.15.4 + mypy==2.1.0 in the dev extra (one source of truth; stops the CI tooling-version drift that produced the 24k-ruff-error and Tensor.names-mypy failures); add pydot to the test extra.
Local: mypy 2.1.0 clean (366 files), pyproject parses. semantic-release -> 2.32.3.
-
compat: Derive generator table from live torch (
b0b24d8) -
compat: Guard removed named tensor APIs (
db7471c) -
io: Keep conditional trace tensors out of metadata (
cdd5baf) -
receptive_field: Map BatchNorm channel parents (
31dd15b)
Training BatchNorm applies one full-dependence rule to activation and channel-vector parents. Projective transposition needs the vector parents' sole axis mapped to the output channel axis; without it, the full-rule passthrough became UNKNOWN and tripped the well-formed-state assertion. Record parent-specific full axes and axis maps so the solve remains exact instead of suppressing the validation tripwire.
-
runnable: Normalize torch 2.13 private callable aliases (
bfe11d8) -
runnable: Support NumPy 2 and Python 3.10 RNG witnesses (
a4f1485)
Chores
- dev: Pin pip-audit 2.10.1 (
66f99db)
Continuous Integration
-
quality: Pin Torch 2.13 type-check environment (
68fc838) -
release: Gate publishing on reusable suites (
e15daf1) -
tests: Pin CPU matrix and add latest canary (
17ef3af) -
tests: Pin NumPy below 2 on floor legs (
1cf44da) -
tests: Run canonical py3.11 leg on smoke like the rest of the matrix (
b538324)
The full-suite 'not slow' gate on the canonical leg surfaced a pre-existing backlog of latent not-slow failures on main (CI has always run smoke only), including an infinite-loop hang in the viz collapse-optimizer. Characterizing and fixing that suite is a separate initiative; the reproducible matrix repair ships on the smoke baseline the project has always used. The canonical render env (torch 2.8 / py3.11) still runs the byte-exact render oracle.
Testing
-
compat: Feature-detect torch 2.1 API surface (
12bb14d) -
compat: Gate version-sensitive fixtures (
e5df4ec) -
runnable: Accept torch seed overflow error variants (
9a25361) -
runnable: Assert zero-element linear warnings (
f22999b) -
runnable: Support str enums on Python 3.10 (
cfe4a44) -
security: Handle absent operator.call on Python 3.10 (
f74f5c2) -
viz: Normalize Python 3.10 profiling qualnames (
40f2c10) -
viz: Refresh render-identity oracle golden for pydot-guard line shift (
d5d8704)
Refresh the benign source-line shift (:45->:46) introduced by the 89d9e5c pydot importorskip guard; there is no semantic rendering change, and the test was skipped without pydot so the drift stayed latent until the matrix installed pydot.
- viz: Scope byte oracle to canonical CI (
44c8147)
Detailed Changes: v2.32.2...v2.32.3