Changelog¶
All notable changes to this project are documented here.
0.4.0 (2026-03-16)¶
Features¶
Bug Fixes¶
- clamp scale factor before half-precision downcast (#170) (08d7120)
- MLX SVD backward, global device leak, and NaN abort (#168) (d050b9a)
- reject 1D inputs with ValueError instead of IndexError (#171) (7b53608)
- remove CLAUDE.md from tracking and add to .gitignore (#177) (8503f4c)
- remove local-only files from tracking and add to .gitignore (#176) (db5ad2f)
- replace in-place mutation of B_diag and S_corr in PyTorch backend (cba6362), closes #151
Documentation¶
- annotate backward-pass sign conventions per framework (#157) (#172) (0dafc71)
- document per-point weights across all markdown files (#175) (6633915)
- fix consistency, missing content, and clarity across markdown files (#174) (d151c64)
0.3.0 (2026-03-14)¶
Features¶
Bug Fixes¶
- autograd: gradient correctness, NaN shape hardening, and sign-symmetric safe denominators (#131) (503d95e)
- horn/kabsch: batch dims, cross-framework validation, and RMSD consistency (#108) (0bedf35)
- jax: add shape validation to horn, extract _horn_core, and clean up idioms (#109) (9cae22a)
- jax: replace vmap_diag conditional with eye-broadcast in SVD backward (#107) (442f2dd), closes #31
- P1 correctness bugs and review follow-ups (#128, #127, #130) (#133) (4a51e89)
- pytorch,tensorflow: remove in-place view mutations and tf.rank tracing bug (#132) (65d92ca), closes #111 #124
- pytorch: correct SVD backward comment, document higher-order grads, replace deprecated torch.det (#139) (ba75971)
- replace hardcoded eps=1e-12 with dtype-aware finfo(dtype).eps (#110) (#136) (d34759d)
- switch RMSD sqrt guard from max(mse, eps) to mse + eps (#137) (#138) (219ded6)
- tensorflow: runtime shape validation for dynamic shapes (#134) (#135) (d5e5e9b)
- tests: guard nearly_coplanar_nd against dim < 3 (#102) (042652f), closes #93
Performance Improvements¶
- replace repeated ones-stack pattern with single-allocation in all frameworks (#143) (420dcd3), closes #30
Documentation¶
- add MkDocs Material documentation site (#142) (b553a2e)
- docstrings, normalization notes, compile/jit guidance (#141) (0236c37)
- document cross-covariance conditioning requirement for rotation stability (#105) (0f45c53)
0.2.0 (2026-03-08)¶
Features¶
- expose version on the kabsch_horn package (#77) (3586908)
- tooling: add pre-commit config with hygiene, secret-scan, and ruff hooks (#86) (fe0e7a3)
Bug Fixes¶
- add [tool.pytest.ini_options] with testpaths to pyproject.toml (#75) (24ac798)
- build all dynamically inside each try block (#67) (48761d6)
- ci: drop push trigger on dev to eliminate duplicate runs (#87) (f367bf5)
- ci: replace uv sync --all-extras --dev with uv sync --dev (#76) (c454078)
- correct GitHub username in pyproject.toml URLs (#63) (e8cdd9c)
- enforce NaN-propagation contract in test_propagates_nans_gracefully (#42) (#73) (3d8e62b)
- move shape check before auto-batching unsqueeze in all frameworks (#69) (f60d0fc), closes #49
- remove dead _B = P.shape[0] assignments across all frameworks (#71) (f0cde24), closes #50
- remove dead assignment in PyTorch SVD backward (#65) (9ccb02a), closes #33
- testing: extend error handling coverage for horn shape mismatch and dim mismatch (#84) (3aed5ef)
- testing: guard framework imports in adapters.py with try/except (#68) (68ce6b5), closes #46
- testing: parametrize reference validation tests over multiple seeds (#83) (8aa00f6)
- testing: raise Hypothesis example counts and consolidate numpy settings (#82) (f50ef9e)
- testing: remove inline imports and replace class-name dispatch in test_error_handling.py (#80) (a7775fd)
- tests: restructure nearly_coplanar_hypothesis to use _inner() pattern (#98) (8d577cd), closes #94 #95 #96
- tests: strengthen assume guard to require sigma_min > 1e-3 (#72) (c7c7350), closes #70
- tests: use Haar-uniform rotation sampler and add ND recovery tests (#61) (8c5ea10), closes #10
- wrap numpy imports in try/except like all other backends (#64) (a3cecef)
Documentation¶
0.1.0 (2026-03-07)¶
Features¶
- jax: Implement JAX backend with correct autodiff and tests (8c7b4c4)
- mlx: Implement MLX backend with custom autodiff and tests (b9306cf)
- setup project correctly and add working PyTorch implementation with SafeSVD (3cd857d)
- tf: Implement TensorFlow backend with correct autodiff and tests (53e7f97)