Breaking changes
- Decomposition routines (
svd/qr/lq/eigh) now honor a corrected charge-carrying side convention; results may differ when the non-default side was previously selected. lazyabstractmethodpattern removed; abstract hooks are now concrete methods on the appropriate*Commonmixin. Affects external subclassers of internal mixins.- Absorb-mode handling standardized via a new
Absorbclass across linalg modules — accepted values/normalization are unified across sparse and flat backends.
Enhancements
- einsum: multi-term
einsumviacotengracontraction paths. - Cholesky: new
cholesky(andcholesky_regularized) for all array types (sparse/flat, abelian/fermionic), with flat-backend support contributed in (#25). - Decompositions:
svd_rand_truncatedfor randomized truncated SVD.qr_via_choleskyandlq_via_cholesky.svd_via_eig_truncatedfor the flat backend.svd_via_eiggained anepsparameter for stabilizing small singular values.- Flat
svd_via_eignow supports the full range ofAbsorboptions and shortcuts. - Unified
lq,svd,svd_truncated,svd_via_eig,svd_via_eig_truncated,qr, andeigh_truncatedonto a shared_splitinterface inArrayCommon.
- Performance: lexsort and phase computations reworked for faster
jax.jittracing (#31); int packing dtype tightened. - Reshape: refactored
calc_reshape_argswith broader test coverage. - Architecture: many methods unified into
BosonicCommon; newtests/test_no_method_overrides.pyenforces the single-definition MRO rule. - Docs: initial API reference, ReadTheDocs build infrastructure, RTD badge, and reference updates (#30).
- Tooling:
pixi run pytesttask withSYMMRAY_DEBUG=1; renamed test envs (testpyold/testpymid/testpynew); CI simplified to use the pixi task.
Bug fixes
- Fixed
einsumfor single-term expressions. - Fixed
reshapewith an ambiguous-1innewshape. - Fixed charge-carrying side behavior in decompositions.
- Fixed dtype handling in charge
shift. - Fixed
choleskycorrectness bugs uncovered during multi-backend rollout.
New Contributors
- @ChenAo-Phys made their first contribution in #25
Full Changelog: v0.2.0...v0.2.1