Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Guidelines for updating this changelog

When making changes to this project, please update the "Unreleased" section with your changes under the appropriate category:

  • Added for new features.

  • Changed for changes in existing functionality.

  • Deprecated for soon-to-be removed features.

  • Removed for now removed features.

  • Fixed for any bug fixes.

When releasing a new version, move the "Unreleased" changes to a new version section with the release date.

Unreleased

Added

Changed

  • environments now follows a single positional contract for every state and operator kind: environments(below, operator, above, alg), where alg is the environment algorithm (slot 4). The operator form requires an explicit above. Auxiliary inputs are keyword-only: leftstart/rightstart for finite and window environments, and lenvs/renvs for window and quasiparticle environments. The two-argument form environments(below, above) (with two states) is reserved for the operator-free overlap environments. There is no two-argument environments(below, operator) shorthand: a two-argument call is always the overlap, since the second argument cannot be disambiguated between a ket and an operator (undecidable for density matrices, where states and operators share a representation). (#436)

  • transfer_spectrum now computes the spectrum for all sectors of the transfer space at once, returning a TensorKit.SectorVector that can be indexed per sector. The sector keyword is removed; a specific selection of sectors (with per-sector counts) can be requested by passing howmany as an AbstractDict/iterable of sector => count pairs. The below state and the eigensolver algorithm are optional positional arguments, and the algorithm can be resolved per sector. The Krylov dimension adapts to the number of values requested in each sector, controlled by the new oversampling and oversampling_factor keywords. Accordingly, marek_gap and correlation_length now return a TensorKit.SectorDict of per-sector results by default; pass sector = ... to obtain a single sector's result as before.

Deprecated

Removed

Fixed

Performance

0.13.11 - 2026-05-04

Added

  • MultilineMPO space getters (#407)

Changed

  • Refactored time-evolution MPO construction (#422)

  • Updated TensorKitManifolds compat to 0.8 (#421)

  • Updated MatrixAlgebraKit algorithm specification (#418)

  • Preparations for GPU / non-CPU array support (#375, #392)

  • Generalized calc_galerkin to AbstractMPS (#395)

  • Removed explicit call to InfiniteMPS in VUMPS (#396)

  • Generalized regauge! to AbstractVector (#393)

Fixed

  • Various fixes for compatibility with latest TensorKit versions (#416)

  • changebonds inconsistencies (#415)

  • Small fixes for density operators (#409)

  • Tolerance on positivity test (#398)

Performance

  • Benchmarks and AC/AC2 contraction improvements (#345)

0.13.10 - 2026-02-26

Added

  • expectation_value for local MPO tensors (#327)

  • Base.copy for MPS types now performs a deep copy (#387)

Changed

  • entropy can now also be called directly on a spectrum (singular value vector) (#377)

  • Updated compat bounds to remove broken package versions

Fixed

  • Fixed Adapt extension for GPU support (#389)

0.13.9 - 2026-02-03

Added

  • LocalPreferences.toml file to ensure TensorOperations properly precompiles on testing infrastructure

  • GeometryStyle and OperatorStyle traits for dispatching on finite/infinite geometry and operator types (#352, #354)

  • Base.isfinite methods for MPS types (#347)

  • Bose-Hubbard example (#342)

  • WindowMPS example update (#350)

  • Multifusion category compatibility (#297)

Fixed

  • Dynamic tolerances yielded NaN during the initialization stage due to 1 / sqrt(iter) where iter = 0 (#335)

  • InfiniteMPOHamiltonian environments with low bond dimension and high Krylov dimension now are properly clamped (#335)

  • Logical operator precedence in getproperty function (#346)

  • Typo in VUMPSSvdCut (#361)

  • Typo in time formatting for logs (#336)

  • Domain/codomain of MPODerivativeOperator (#370)

  • In-place operations handled more carefully (#337)

  • Orthogonalization algorithms now use correct methods (#373)

Changed

  • The changebonds(state, ::RandExpand) algorithm now no longer has to perform a truncated SVD to obtain the desired spaces, and instead sample the space directly and then generates a random isometry. This should be slightly more performant, but otherwise equivalent (#335)

  • IDMRG refactored to follow the IterativeSolver interface and share code between IDMRG and IDMRG2 (#348)

  • Bumped compatibility for TensorKit 0.16 and MatrixAlgebraKit 0.6 (#365)

  • Removed _left_orth and _right_orth workarounds in favor of new orthogonalization methods

  • Reduced allocation while computing Galerkin error (#366)

  • Updated show methods to reflect new TensorKit printing (#341)

  • More informative errors for finite MPS (#367)

  • Minor documentation and docstring improvements (#363, #372, #371)

Deprecated

Removed

0.13.8 - 2024-10-31

See full history and previous releases on GitHub.