|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## Guidelines for updating this changelog |
| 9 | + |
| 10 | +When making changes to this project, please update the "Unreleased" section with your changes under the appropriate category: |
| 11 | + |
| 12 | +- **Added** for new features. |
| 13 | +- **Changed** for changes in existing functionality. |
| 14 | +- **Deprecated** for soon-to-be removed features. |
| 15 | +- **Removed** for now removed features. |
| 16 | +- **Fixed** for any bug fixes. |
| 17 | +- **Performance** for performance improvements. |
| 18 | + |
| 19 | +When releasing a new version, move the "Unreleased" changes to a new version section with the release date. |
| 20 | + |
| 21 | +## [Unreleased](https://github.com/QuantumKitHub/TensorKit.jl/compare/v0.16.0...HEAD) |
| 22 | + |
| 23 | +## [0.16.0](https://github.com/QuantumKitHub/TensorKit.jl/releases/tag/v0.16.0) - 2025-12-05 |
| 24 | + |
| 25 | +### Added |
| 26 | + |
| 27 | +- `rrule` for `transpose` operation ([#319](https://github.com/QuantumKitHub/TensorKit.jl/pull/319)) |
| 28 | +- New functions for multifusion support: `unitspace`, `zerospace`, `leftunitspace`, `rightunitspace`, `isunitspace` ([#291](https://github.com/QuantumKitHub/TensorKit.jl/pull/291)) |
| 29 | +- Support for projections and orthogonal complements ([#312](https://github.com/QuantumKitHub/TensorKit.jl/pull/312)) |
| 30 | + |
| 31 | +### Changed |
| 32 | + |
| 33 | +- Tensors now no longer print their data by default, only their spaces. Use `blocks(t)` or `subblocks(t)` to inspect data ([#304](https://github.com/QuantumKitHub/TensorKit.jl/pull/304)) |
| 34 | +- Updated `left_orth`, `right_orth`, `left_null` and `right_null` interfaces for MatrixAlgebraKit v0.6 ([#312](https://github.com/QuantumKitHub/TensorKit.jl/pull/312)) |
| 35 | +- Updated `ishermitian` and `isisometric` implementations ([#312](https://github.com/QuantumKitHub/TensorKit.jl/pull/312)) |
| 36 | +- Sector functions now by default use `unit` instead of `one`, `isunit` instead of `isone`, and `dual` instead of `conj` ([#291](https://github.com/QuantumKitHub/TensorKit.jl/pull/291)) |
| 37 | +- Reworked TensorOperations implementation to use backend and allocator system ([#311](https://github.com/QuantumKitHub/TensorKit.jl/pull/311)) |
| 38 | +- Major documentation update/overhaul ([#289](https://github.com/QuantumKitHub/TensorKit.jl/pull/289)) |
| 39 | +- Added symmetric tensor tutorial as appendix ([#316](https://github.com/QuantumKitHub/TensorKit.jl/pull/316)) |
| 40 | +- Improved error messages throughout codebase ([#309](https://github.com/QuantumKitHub/TensorKit.jl/pull/309)) |
| 41 | + |
| 42 | +### Deprecated |
| 43 | + |
| 44 | +### Removed |
| 45 | + |
| 46 | +- All deprecations from v0.15: old factorization function names (`leftorth`, `rightorth`, `tsvd`, `eig`, `eigh`) |
| 47 | +- Old truncation strategy names (`truncdim`, `truncbelow`) |
| 48 | +- Old factorization struct types (`OrthogonalFactorization`) |
| 49 | +- Old constructor syntaxes and deprecated `rand*` function names |
| 50 | + |
| 51 | +### Fixed |
| 52 | + |
| 53 | +- Avoid unnecessary copy in `twist` for tensors with bosonic braiding ([#305](https://github.com/QuantumKitHub/TensorKit.jl/pull/305)) |
| 54 | +- Small fixes and typos ([#295](https://github.com/QuantumKitHub/TensorKit.jl/pull/295)) |
| 55 | + |
| 56 | +## [0.15.3](https://github.com/QuantumKitHub/TensorKit.jl/releases/tag/v0.15.3) - 2025-10-30 |
| 57 | + |
| 58 | +### Fixed |
| 59 | + |
| 60 | +- Fixed typo in `show(::GradedSpace)` ([#308](https://github.com/QuantumKitHub/TensorKit.jl/pull/308)) |
| 61 | +- Updated printing of `ProductSpace{<:Any,0}` |
| 62 | +- Added tests for show methods |
| 63 | + |
| 64 | +## [0.15.2](https://github.com/QuantumKitHub/TensorKit.jl/releases/tag/v0.15.2) - 2025-10-28 |
| 65 | + |
| 66 | +### Added |
| 67 | + |
| 68 | +- `subblocks` iterator for easier inspection of tensor data ([#304](https://github.com/QuantumKitHub/TensorKit.jl/pull/304)) |
| 69 | + |
| 70 | +### Changed |
| 71 | + |
| 72 | +- Tensors no longer print their data by default, only their spaces. Use `blocks(t)` or `subblocks(t)` to inspect data ([#304](https://github.com/QuantumKitHub/TensorKit.jl/pull/304)) |
| 73 | +- Updated compatibility to TensorKitSectors v0.3 ([#290](https://github.com/QuantumKitHub/TensorKit.jl/pull/290)) |
| 74 | +- Refactored test suite and split into groups ([#298](https://github.com/QuantumKitHub/TensorKit.jl/pull/298)) |
| 75 | + |
| 76 | +### Fixed |
| 77 | + |
| 78 | +- Fixed `TruncationIntersection` implementation and test ([#300](https://github.com/QuantumKitHub/TensorKit.jl/pull/300)) |
| 79 | +- Avoided unnecessary allocations in rrules for contractions and tensor products ([#306](https://github.com/QuantumKitHub/TensorKit.jl/pull/306)) |
| 80 | + |
| 81 | +## [0.15.1](https://github.com/QuantumKitHub/TensorKit.jl/releases/tag/v0.15.1) - 2025-10-09 |
| 82 | + |
| 83 | +### Fixed |
| 84 | + |
| 85 | +- Small fixes and typo corrections ([#295](https://github.com/QuantumKitHub/TensorKit.jl/pull/295)) |
| 86 | + |
| 87 | +## [0.15.0](https://github.com/QuantumKitHub/TensorKit.jl/releases/tag/v0.15.0) - 2025-10-03 |
| 88 | + |
| 89 | +### Added |
| 90 | + |
| 91 | +- [MatrixAlgebraKit](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl) as new backend for tensor factorizations ([#230](https://github.com/QuantumKitHub/TensorKit.jl/pull/230)) |
| 92 | +- `foreachblock(f, t::AbstractTensorMap...)` - uniform interface to iterate through tensor blocks |
| 93 | +- `eig_trunc` and `eigh_trunc` - truncated eigenvalue decompositions |
| 94 | +- `ominus` (and unicode `⊖`) - compute orthogonal complement of a space |
| 95 | +- Backend selection for factorizations - swap algorithms or implementations |
| 96 | + |
| 97 | +### Changed |
| 98 | + |
| 99 | +- `left_orth` and `right_orth` now always output tensors with a single connecting space |
| 100 | +- `left_orth` and `right_orth` now always have connecting space with `isdual=false` |
| 101 | +- Code formatter is now [Runic.jl](https://github.com/fredrikekre/Runic.jl) |
| 102 | + |
| 103 | +### Deprecated |
| 104 | + |
| 105 | +- Factorization functions `leftorth`, `rightorth`, `tsvd`, `eig`, `eigh` in favor of MatrixAlgebraKit variants (`left_orth`, `right_orth`, `svd_compact`, `eig_full`, `eigh_full`) |
| 106 | +- Truncation strategies: `truncdim` (use `truncrank`) and `truncbelow` (use `trunctol`) |
| 107 | +- `OrthogonalFactorization` structs (constructors deprecated to return equivalent MatrixAlgebraKit algorithm structs) |
| 108 | + |
| 109 | +### Removed |
| 110 | + |
| 111 | +- Direct permute-and-factorize operations (incompatible with `permute` vs `braid` distinction) |
| 112 | +- `Polar` decomposition behavior for `left_orth`/`right_orth` (use `left_polar`/`right_polar` instead for `isposdef` R factors) |
| 113 | + |
| 114 | +## [0.14.0](https://github.com/QuantumKitHub/TensorKit.jl/releases/tag/v0.14.0) - 2024-12-19 |
| 115 | + |
| 116 | +### Added |
| 117 | + |
| 118 | +- `DiagonalTensorMap` type for representing tensor maps with diagonal blocks |
| 119 | +- `reduceddim(V)` function that sums up degeneracy dimensions for each sector |
| 120 | +- New index manipulation functions: |
| 121 | + - `flip(t, i)` |
| 122 | + - `insertleftunit(t, i)` |
| 123 | + - `insertrightunit(t, i)` |
| 124 | + - `removeunit(t, i)` |
| 125 | + |
| 126 | +### Changed |
| 127 | + |
| 128 | +- Singular values and eigenvalues now explicitly represented as `DiagonalTensorMap` instances |
| 129 | +- SVD truncation now guarantees smaller singular values are removed first, irrespective of sector quantum dimension |
| 130 | + |
| 131 | +## [0.13.0](https://github.com/QuantumKitHub/TensorKit.jl/releases/tag/v0.13.0) - 2024-11-24 |
| 132 | + |
| 133 | +### Added |
| 134 | + |
| 135 | +- Refactored `TensorMap` constructors to align with Julia `Array` constructors |
| 136 | +- Convenience constructors: `ones`, `zeros`, `rand`, `randn` for tensors |
| 137 | +- TensorOperations v5 support |
| 138 | + |
| 139 | +### Changed |
| 140 | + |
| 141 | +- Scalar type as parameter to `AbstractTensorMap` type: `AbstractTensorMap{E, S, N₁, N₂}` |
| 142 | +- Default way to create uninitialized tensors is now `TensorMap{E}(undef, codomain ← domain)` |
| 143 | +- Behavior of `copy` for `BraidingTensor` to properly instantiate a `TensorMap` |
| 144 | +- TensorKitSectors promoted to separate package |
| 145 | +- `TensorMap` data structure now consists of single vector with blocks as views |
| 146 | +- `FusionTree` vertices now only use `Int` labels for `GenericFusion` sectors |
0 commit comments