Releases: QuantumKitHub/TensorKit.jl
v0.16.0
TensorKit v0.16.0
Release notes:
We are pleased to announce TensorKit.jl v0.16.0! This release expands multifusion support, makes accessing diagonal data easier, streamlines tensor printing, and refreshes our TensorOperations backend while tightening documentation and error messaging.
🎉 Highlights
- Multifusion utilities:
unitspace,zerospace,leftunitspace,rightunitspace,isunitspace(#291) - Projections and orthogonal complements across tensors (#312)
rrulefortransposeto improve AD coverage (#319)- TensorOperations backend/allocator rework for clearer extensibility (#311)
- First part of a major docs overhaul plus symmetric tensor tutorial (#289, #316)
- Changes to tensor showing/printing methods, with (part of) tensor block data being shown (#322)
SectorVector <: AbstractVectoras output type for singular and eigenvalues (#324)
✨ New Features
- Multifusion spaces now expose
unitspace,zerospace,leftunitspace,rightunitspace,isunitspaceto reason about units and zero objects (#291) - Projections and orthogonal complements for tensors (#312)
- ChainRules
rrulefortranspose(#319)
🔧 Improvements
left_orth,right_orth,left_null,right_null,ishermitian, andisisometricaligned with MatrixAlgebraKit v0.6 interfaces (#312)svd_vals,eig_valsandeigh_valsnow output a "vector" instead of a diagonal tensor. (#325)- TensorOperations reworked around backend and allocator abstractions for cleaner extensibility (#311)
- Clearer error messages across the codebase (#309)
- Changes to tensor showing/printing methods, with (part of) tensor block data being shown (#322)
🐛 Fixes
- Avoid unnecessary copy in
twistfor bosonic braiding tensors (#305) - Miscellaneous fixes and typos (#295)
📦 Dependencies
- MatrixAlgebraKit v0.6-compatible interfaces for factorization helpers
- TensorOperations backend and allocator better integrated
📚 Documentation
- Broad documentation refresh with improved navigation (#289)
- Added symmetric tensor tutorial in the appendix (#316)
🙏 Acknowledgments
Thanks to everyone who contributed PRs, issues, and feedback for this release.
🔗 Links
Merged pull requests:
- WIP: Documentation update/overhaul (#289) (@Jutho)
- Generalising functions to support
GenericUnit(#291) (@borisdevos) - Avoid copy in
twistfor tensors with bosonic braiding (#305) (@leburgel) - Error message improvements (#309) (@lkdvos)
- remove
'\n'in compact printing of tensors (#310) (@lkdvos) - rework TensorOperations implementation to use backend and allocator (#311) (@lkdvos)
- Updates for MatrixAlgebraKit v0.6 (#312) (@lkdvos)
- Add symmetric tensor tutorial to docs as appendix (#316) (@leburgel)
- Bump actions/checkout from 5 to 6 (#318) (@dependabot[bot])
- Add
rrulefortranspose(#319) (@lkdvos) - Bump v0.16 + Remove old deprecations (#321) (@lkdvos)
- further tweak tensor and block show (#322) (@Jutho)
- Update changelog [skip ci] (#323) (@Jutho)
- Add
SectorVector(#324) (@lkdvos)
Closed issues:
v0.15.3
TensorKit v0.15.3
Merged pull requests:
v0.15.2
TensorKit v0.15.2
TensorKit v0.15.2 contains some changes with respect to how objects are printed. By default, tensors now no longer print their data, and only print their spaces. To inspect the data of a tensor t, blocks(t) and subblocks(t) can be used to print and alter the data in different forms.
We've also updated our compatibility to TensorKitSectors v0.3, which entails some internal consistency naming changes and improvements but should otherwise not affect users. This does provide a step towards full support of multi-fusion categories in TensorKit (Shout-out to @borisdevos for this work).
This patch release also contains fixes and performance improvements:
- The issue with multiple truncation schemes (
TruncationIntersection) has been solved (#300) - Some unnecessary allocations in the reverse rules for contractions and tensor products have been avoided (#306)
- The test suite was refactored and split into several groups to reduce the total CI runtime and improve local selective running of the tests (#298)
Merged pull requests:
- Changes for TensorKitSectors v0.3 (#290) (@borisdevos)
- Refactor test suite (#298) (@lkdvos)
- Fix
TruncationIntersectionimplementation and test (#300) (@lkdvos) - Show improvements +
subblocksiterator (#304) (@lkdvos) - avoid twist allocating in rrules when not required (#306) (@lkdvos)
- Bump v0.15.2 (#307) (@lkdvos)
Closed issues:
v0.15.1
TensorKit v0.15.1
Small fixes and some typos.
Merged pull requests:
v0.15.0
TensorKit v0.15.0
TensorKit v0.15 consists of a (mostly internal) rewrite of the tensor factorizations to make
use of MatrixAlgebraKit.jl.
This rewrite is important for code organization and maintenance reasons, but has some additional benefits.
Firstly, MatrixAlgebraKit provides a convenient interface for working with truncated factorizations, such that TensorKit will now support an updated range of truncation schemes, not only for the singular value decompositions, but also for the eigenvalue decompositions, a feature that was previously missing.
Secondly, the improved interface of MatrixAlgebraKit allows us to cut back on some unnecessary intermediate allocations when working with symmetric tensors, so we expect a (minor) increase in performance.
Lastly, the code is now structured to facilitate supporting new features without having to do major code alterations. In particular, this should pave the way towards supporting GPU-backed TensorMaps.
To facilitate this, there are however some deprecations and some breaking changes:
🚀 New Features & Enhancements
- Trucated eigenvalue decompositions:
eig_truncandeigh_trunc - Extended truncation schemes:
trunctolandtruncerrornow support relative and absolute tolerances, newtruncfilterstrategy to pass a filter function - Factorization pullbacks: pullback functions are now implemented through MatrixAlgebraKit, eliminating the need to define ChainRulesCore extensions for them. Additionally, we now also support differentiating through nullspace and polar decompositions.
📋 Public API Changes and breaking changes
-
Deprecated factorization functions:
leftorth->left_orthrightorth->right_orthtsvd->svd_compactandsvd_trunceig->eig_fulleigh->eigh_fullandeigh_trunc
-
Deprecated factorization structs:
OrthogonalFactorizationand its subtypes (QR, QRpos, LQ, SVD, SDD, ...) have been removed in favor of their MatrixAlgebraKit counterparts, but their constructors are still supported in deprecated mode to patch through to the correctMatrixAlgebraKit.Algorithm. -
Truncation schemes:
truncdimhas been deprecated totruncrank,truncbelowhas been deprecated totrunctolandtruncerrhas been deprecated totruncerror.
For further details and information, check out the updated docs, the changelog, or the diff for this release: v0.14.11...v0.15.0
Merged pull requests:
v0.14.11
TensorKit v0.14.11
- Added new
absorb(!)to move data from one tensor into another of a different shape. - Small fixes and clarifications of the docs
- Exported the
deligneproductnon-unicode function
Merged pull requests:
v0.14.10
TensorKit v0.14.10
v0.14.10 contains a number of small fixes, utility and convenience.
- The docs got some minor fixes to be up to date with the latest state of the package
- A small bug was fixed for when the frobenius schur factors were not gauged to be
\pm1 - Various compat entries were updated
- A bug with the parsing of
@planarand@plansorwas resolved
Merged pull requests:
- Change frobeniusschur factor (#260) (@lkdvos)
- Restrict
oplustoElementarySpace(#265) (@lkdvos) - Bump actions/checkout from 4 to 5 (#267) (@dependabot[bot])
- Citation.cff (#268) (@lkdvos)
- Updates to get MatrixAlgebraKit to work (#269) (@kshyatt)
- Update TODO to reflect AMD and fix typo (#270) (@kshyatt)
- Added a few more eig/eigh/svd tests (#271) (@kshyatt)
- Excise MatrixAlgebra module entirely to use MatrixAlgebraKit (#272) (@kshyatt)
- Attempt to fix #262 (#273) (@kshyatt)
- CompatHelper: bump compat for TensorKitSectors to 0.2, (keep existing compat) (#275) (@github-actions[bot])
- Bump VectorInterface compat to
0.4.8, 0.5(#277) (@lkdvos) - Bump actions/checkout from 4 to 5 (#278) (@dependabot[bot])
- Bump julia-actions/setup-julia from 1 to 2 (#279) (@dependabot[bot])
- Update README.md (#280) (@kshyatt)
- Basic set up for GPU CI on TensorKit (#281) (@kshyatt)
- Docfixes and v0.14.10 bump (#282) (@lkdvos)
Closed issues:
v0.14.9
v0.14.8
v0.14.7
TensorKit v0.14.7
This patch release contains some non-breaking changes in the form of important performance reworks that are particularly relevant to non-Abelian symmetries in the context of tensors with a larger number of indices.
The backend for index manipulations for these kinds of tensors should be noticeably faster.
For those that wish the experiment, you can also now configure the multithreading settings for these operations through set_num_transformer_threads(n).
Additionally, the system for keeping the cached data has been refactored and cleaned up, so it should be slightly easier to interact with that and print information about it.
Finally, various minor convenience and docs improvements have been carried out.
Merged pull requests:
- make all caches behave the same (#244) (@Jutho)
- Default
spacetypeandsectortypeimplementations in type domain (#248) (@ogauthe) - DiagonalTensorMap performance and convenience specializations (#249) (@lkdvos)
- small type stability fix (#250) (@Jutho)
- [Performance]
TreeTransformerrefactor + multithreading (#251) (@lkdvos) - Add color inversion for docs images in dark themes (#253) (@leburgel)
Closed issues:
- Dark theme of website "https://jutho.github.io/TensorKit.jl/stable/" (#128)
- Can the category VecG be supported? (#227)
- About functions on braided sector (#246)