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
Addition of
FiniteMPS/FiniteMPOwith different scalar types, through a newBase.similar(ψ, ::Type{S})forS <: NumberonFiniteMPS. (#484)Zipup, an algorithm forapproximate/approximate!that compresses a finite MPO-MPS product in a single sweep, optionally followed by a sweep in the opposite direction that imposes the final truncation. The sweep direction is selected by theleft_to_rightkeyword. Bothapproximate((O, ϕ), alg)andapproximate!(ψ, (O, ϕ), alg)are supported, where the destinationψis a write target rather than an initial guess and may aliasϕ; they return(ψ, ϵ).
Changed
environmentsnow follows a single positional contract for every state and operator kind:environments(below, operator, above, alg), wherealgis the environment algorithm (slot 4). The operator form requires an explicitabove. Auxiliary inputs are keyword-only:leftstart/rightstartfor finite and window environments, andlenvs/renvsfor window and quasiparticle environments. The two-argument formenvironments(below, above)(with two states) is reserved for the operator-free overlap environments. There is no two-argumentenvironments(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_spectrumnow computes the spectrum for all sectors of the transfer space at once, returning aTensorKit.SectorVectorthat can be indexed per sector. Thesectorkeyword is removed; a specific selection of sectors (with per-sector counts) can be requested by passinghowmanyas anAbstractDict/iterable ofsector => countpairs. Thebelowstate 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 newoversamplingandoversampling_factorkeywords. Accordingly,marek_gapandcorrelation_lengthnow return aTensorKit.SectorDictof per-sector results by default; passsector = ...to obtain a single sector's result as before.All
trschemekeyword arguments are renamed totrunc(#482).
Deprecated
Removed
Fixed
Base.:+/-onFiniteMPSreturned a wrong state for near-parallel operands carried by different tensor networks, e.g.norm(E₀ * gs - H * gs)coming out as2 * norm(gs) * E₀instead of ~0. The lazy gauge sweep inCView.getindexre-derivedAL/Centries that were already cached, and since different code paths install different factorizations (a truncated SVD from DMRG vs. a positive QR from the sweep) the replacement differed by a bond unitary, so+combined tensors belonging to two different gauges. The same staleness was latent in every consumer that reads several gauge tensors across a center move,dotincluded. (#473, #484)Addition of single-site operands.
FiniteMPS + FiniteMPSassertedlength > 1, andFiniteMPO + FiniteMPOthrew a space error, because both split the chain into a left and a right block and fuse them at the seam — of which there is none at length 1. Such an operand has no internal bond to fuse, so the sum is now simply the sum of the two tensors. (#484)convert(TensorMap, ::FiniteMPO)on a single-site MPO stripped the left virtual leg ofmpo[1]and the right virtual leg ofmpo[end]and contracted the two — which at length 1 is the same tensor, so it returnedO * Oon twice the physical space instead ofO. (#484)
Performance
0.13.11 - 2026-05-04
Added
MultilineMPOspace getters (#407)
Changed
Refactored time-evolution MPO construction (#422)
Updated
TensorKitManifoldscompat to 0.8 (#421)Updated MatrixAlgebraKit algorithm specification (#418)
Generalized
calc_galerkintoAbstractMPS(#395)Removed explicit call to
InfiniteMPSin VUMPS (#396)Generalized
regauge!toAbstractVector(#393)
Fixed
Various fixes for compatibility with latest TensorKit versions (#416)
changebondsinconsistencies (#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_valuefor local MPO tensors (#327)Base.copyfor MPS types now performs a deep copy (#387)
Changed
entropycan now also be called directly on a spectrum (singular value vector) (#377)Updated compat bounds to remove broken package versions
Fixed
- Fixed
Adaptextension for GPU support (#389)
0.13.9 - 2026-02-03
Added
LocalPreferences.tomlfile to ensureTensorOperationsproperly precompiles on testing infrastructureGeometryStyleandOperatorStyletraits for dispatching on finite/infinite geometry and operator types (#352, #354)Base.isfinitemethods for MPS types (#347)Bose-Hubbard example (#342)
WindowMPS example update (#350)
Multifusion category compatibility (#297)
Fixed
Dynamic tolerances yielded
NaNduring the initialization stage due to1 / sqrt(iter)whereiter = 0(#335)InfiniteMPOHamiltonianenvironments with low bond dimension and high Krylov dimension now are properly clamped (#335)Logical operator precedence in
getpropertyfunction (#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)IDMRGrefactored to follow theIterativeSolverinterface and share code betweenIDMRGandIDMRG2(#348)Bumped compatibility for TensorKit 0.16 and MatrixAlgebraKit 0.6 (#365)
Removed
_left_orthand_right_orthworkarounds in favor of new orthogonalization methodsReduced allocation while computing Galerkin error (#366)
Updated
showmethods 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.