Adding a package bumps another to a seemingly breaking release

(@v1.7) pkg> activate --temp
  Activating new project at `/tmp/jl_TmSumB`

(jl_TmSumB) pkg> add TensorKit@0.9
    Updating registry at `~/.julia/registries/General`
    Updating git-repo `https://github.com/JuliaRegistries/General.git`
   Resolving package versions...
    Updating `/tmp/jl_TmSumB/Project.toml`
  [07d1fe3e] + TensorKit v0.9.1
    Updating `/tmp/jl_TmSumB/Manifest.toml`
  [621f4979] + AbstractFFTs v1.1.0
  [79e6a3ab] + Adapt v3.3.3
  [ab4f0b2a] + BFloat16s v0.2.0
  [fa961155] + CEnum v0.4.2
  [052768ef] + CUDA v3.9.0
  [d360d2e6] + ChainRulesCore v1.14.0
  [9e997f8a] + ChangesOfVariables v0.1.2
  [34da2185] + Compat v3.43.0
  [ffbed154] + DocStringExtensions v0.8.6
  [e2ba6199] + ExprTools v0.1.8
  [0c68f7d7] + GPUArrays v8.3.2
  [61eb1bfa] + GPUCompiler v0.14.1
  [f0d1745a] + HalfIntegers v1.4.3
  [3587e190] + InverseFunctions v0.1.3
  [92d709cd] + IrrationalConstants v0.1.1
  [692b3bcd] + JLLWrappers v1.4.1
  [929cbde3] + LLVM v4.9.1
  [8ac3fa9e] + LRUCache v1.3.0
  [2ab3a3ac] + LogExpFunctions v0.3.12
  [21216c6a] + Preferences v1.3.0
  [27ebfcd6] + Primes v0.4.0
  [74087812] + Random123 v1.5.0
  [e6cf234a] + RandomNumbers v1.5.3
  [308eb6b3] + RationalRoots v0.1.0
  [189a3867] + Reexport v1.2.2
  [ae029012] + Requires v1.3.0
  [276daf66] + SpecialFunctions v2.1.4
  [5e0ebb24] + Strided v1.2.1
  [07d1fe3e] + TensorKit v0.9.1
  [6aa20fa7] + TensorOperations v3.2.4
  [a759f4b9] + TimerOutputs v0.5.17
  [9d95972d] + TupleTools v1.3.0
  [9f57e263] + WignerSymbols v1.1.0
  [dad2f222] + LLVMExtra_jll v0.0.14+2
  [efe28fd5] + OpenSpecFun_jll v0.5.5+0
  [0dad84c5] + ArgTools
  [56f22d72] + Artifacts
  [2a0f44e3] + Base64
  [ade2ca70] + Dates
  [8bb1440f] + DelimitedFiles
  [8ba89e20] + Distributed
  [f43a241f] + Downloads
  [b77e0a4c] + InteractiveUtils
  [4af54fe1] + LazyArtifacts
  [b27032c2] + LibCURL
  [76f85450] + LibGit2
  [8f399da3] + Libdl
  [37e2e46d] + LinearAlgebra
  [56ddb016] + Logging
  [d6f4376e] + Markdown
  [a63ad114] + Mmap
  [ca575930] + NetworkOptions
  [44cfe95a] + Pkg
  [de0858da] + Printf
  [3fa0cd96] + REPL
  [9a3f8284] + Random
  [ea8e919c] + SHA
  [9e88b42a] + Serialization
  [1a1011a3] + SharedArrays
  [6462fe0b] + Sockets
  [2f01184e] + SparseArrays
  [10745b16] + Statistics
  [fa267f1f] + TOML
  [a4e569a6] + Tar
  [8dfed614] + Test
  [cf7118a7] + UUIDs
  [4ec0a83e] + Unicode
  [e66e0078] + CompilerSupportLibraries_jll
  [deac9b47] + LibCURL_jll
  [29816b5a] + LibSSH2_jll
  [c8ffd9c3] + MbedTLS_jll
  [14a3606d] + MozillaCACerts_jll
  [4536629a] + OpenBLAS_jll
  [05823500] + OpenLibm_jll
  [83775a58] + Zlib_jll
  [8e850b90] + libblastrampoline_jll
  [8e850ede] + nghttp2_jll
  [3f19e933] + p7zip_jll
Precompiling project...
  1 dependency successfully precompiled in 3 seconds (41 already precompiled)

(jl_TmSumB) pkg> add WignerSymbols@2.0.0
   Resolving package versions...
    Updating `/tmp/jl_TmSumB/Project.toml`
  [07d1fe3e] ↑ TensorKit v0.9.1 ⇒ v0.10.0
  [9f57e263] + WignerSymbols v2.0.0
    Updating `/tmp/jl_TmSumB/Manifest.toml`
  [18e54dd8] + IntegerMathUtils v0.1.0
  [27ebfcd6] ↑ Primes v0.4.0 ⇒ v0.5.2
  [308eb6b3] ↑ RationalRoots v0.1.0 ⇒ v0.2.0
  [07d1fe3e] ↑ TensorKit v0.9.1 ⇒ v0.10.0
  [9f57e263] ↑ WignerSymbols v1.1.0 ⇒ v2.0.0

(jl_TmSumB) pkg> st
      Status `/tmp/jl_TmSumB/Project.toml`
  [07d1fe3e] TensorKit v0.10.0
  [9f57e263] WignerSymbols v2.0.0

I’m unsure why TensorKit is bumped from 0.9 to 0.10 here? Isn’t this a potentially breaking upgrade?

According to semver, no. Minor version adds functionality and should not be breaking.
(see below)

The issue here is that pkg> add TensorKit@0.9 doesn’t add a [compat] entry, so subsequent Pkg operations can do whatever they want. IIRC this may be fixed on Julia 1.8, but in the meantime you can add the corresponding compat entry by hand.

That’s correct for versions >=1.0. For <1.0 though, minor releases are considered breaking as well (because typically you’re breaking much more often in the early phase). See, e.g., 10. Project.toml and Manifest.toml · Pkg.jl and 6. Compatibility · Pkg.jl

As to the original question, you could try pinning TensorKit, i.e. ] pin TensorKit.

Oh, didn’t know that. Thanks for clarifying.

1 Like