What’s up with StatsFuns, though? For example, according to the documentation, `SpecialFunctions v1.8.1 (<v2.0.0): StatsFuns, SymbolicUtils`

means that constraints in StatsFuns and SymbolicUtils prevent Pkg from updating SpecialFunctions to v2.0.0, which is perfectly understandable. But why is it not possible to update StatsFuns itself?

The output just says that this package is not at its latest version, and there’s no reason for it to be at this old version. Thus, StatsFuns can be updated, right? For some reason, `up --manifest`

actually updates this package on Julia 1.8, but this downgrades optimization packages, as shown in my earlier post:

```
(jl_MD9i7u) pkg> st -m --outdated
Status `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_MD9i7u/Manifest.toml`
[7c1d4256] DynamicPolynomials v0.3.21 (<v0.4.1): SymbolicUtils
[b6b21f68] Ipopt v0.6.1 (<v0.9.1)
[7d188eb4] JSONSchema v0.3.4 (<v1.0.0): MathOptInterface
[4076af6c] JuMP v0.21.10 (<v0.22.1)
[b8f27783] MathOptInterface v0.9.22 (<v0.10.6): Ipopt, JuMP
[0a4f8689] MathTeXEngine v0.2.1 (<v0.3.3): Makie
[102ac46a] MultivariatePolynomials v0.3.18 (<v0.4.2): DynamicPolynomials, SymbolicUtils
[d8a4904e] MutableArithmetics v0.2.22 (<v0.3.1): DynamicPolynomials, JuMP, MathOptInterface, MultivariatePolynomials
[276daf66] SpecialFunctions v1.8.1 (<v2.0.0): JuMP, SymbolicUtils
```

Now Ipopt and JuMP have apparently no reason to be at these old versions, right? I run `up --manifest`

, and they indeed get updated! This downgrades StatsFuns back to v0.9.7 and, for example, Reexport from v1.2.2 to v0.2.0.

Looks like I discovered an “update loop”… Full reproducible example:

```
pkg> activate --temp
Activating new project at `/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr`
(jl_DG9aAr) pkg> add BenchmarkTools CairoMakie Distributions ForwardDiff Ipopt JuMP LoopVectorization PlutoUI ProgressMeter QuadGK Revise ShiftedArrays Symbolics UnicodePlots
Resolving package versions...
Updating `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Project.toml`
[6e4b80f9] + BenchmarkTools v1.2.2
[13f3f980] + CairoMakie v0.6.6
[31c24e10] + Distributions v0.25.36
[f6369f11] + ForwardDiff v0.10.24
[b6b21f68] + Ipopt v0.9.1
[4076af6c] + JuMP v0.22.1
[bdcacae8] + LoopVectorization v0.12.99
[7f904dfe] + PlutoUI v0.7.1
[92933f4c] + ProgressMeter v1.7.1
[1fd47b50] + QuadGK v2.4.2
[295af30f] + Revise v3.2.0
[1277b4bf] + ShiftedArrays v1.0.0
[0c5d862f] + Symbolics v4.2.0
[b8865327] + UnicodePlots v2.5.0
Updating `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Manifest.toml`
[621f4979] + AbstractFFTs v1.0.1
[1520ce14] + AbstractTrees v0.3.4
...
(jl_DG9aAr) pkg> st -m --outdated
Status `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Manifest.toml`
[7c1d4256] DynamicPolynomials v0.3.3 (<v0.4.1): SymbolicUtils
[0a4f8689] MathTeXEngine v0.2.1 (<v0.3.3): Makie
[102ac46a] MultivariatePolynomials v0.3.2 (<v0.4.2): DynamicPolynomials, SymbolicUtils
[7f904dfe] PlutoUI v0.7.1 (<v0.7.23)
[189a3867] Reexport v0.2.0 (<v1.2.2): DynamicPolynomials
[276daf66] SpecialFunctions v1.8.1 (<v2.0.0): JuMP, StatsFuns, SymbolicUtils
[4c63d2b9] StatsFuns v0.9.7 (<v0.9.14)
(jl_DG9aAr) pkg> # looks like PlutoUI and StatsFuns can be updated, so update them!
(jl_DG9aAr) pkg> up -m
Updating registry at `~/.julia/registries/General.toml`
Updating `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Project.toml`
[b6b21f68] ↓ Ipopt v0.9.1 ⇒ v0.6.1
[4076af6c] ↓ JuMP v0.22.1 ⇒ v0.21.10
[7f904dfe] ↑ PlutoUI v0.7.1 ⇒ v0.7.23
Updating `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Manifest.toml`
[6e696c72] + AbstractPlutoDingetjes v1.1.2
[7c1d4256] ↑ DynamicPolynomials v0.3.3 ⇒ v0.3.21
[cd3eb016] + HTTP v0.9.17
[47d2ed2b] + Hyperscript v0.0.4
[ac1192a8] + HypertextLiteral v0.9.3
[b5f81e59] + IOCapture v0.2.2
[83e8ac13] + IniFile v0.5.0
[b6b21f68] ↓ Ipopt v0.9.1 ⇒ v0.6.1
[7d188eb4] + JSONSchema v0.3.4
[4076af6c] ↓ JuMP v0.22.1 ⇒ v0.21.10
[b8f27783] ↓ MathOptInterface v0.10.6 ⇒ v0.9.22
[fdba3010] + MathProgBase v0.7.8
[739be429] + MbedTLS v1.0.3
[102ac46a] ↑ MultivariatePolynomials v0.3.2 ⇒ v0.3.18
[d8a4904e] ↓ MutableArithmetics v0.3.1 ⇒ v0.2.22
[7f904dfe] ↑ PlutoUI v0.7.1 ⇒ v0.7.23
[189a3867] ↑ Reexport v0.2.0 ⇒ v1.2.2
[4c63d2b9] ↑ StatsFuns v0.9.7 ⇒ v0.9.14
[fd094767] - Suppressor v0.2.0
[5c2747f8] + URIs v1.3.0
[ae81ac8f] - ASL_jll v0.1.3+0
[9cc047cb] - Ipopt_jll v300.1400.400+0
[d00139f3] - METIS_jll v5.1.1+0
[d7ed1dd3] - MUMPS_seq_jll v5.4.1+0
[656ef2d0] - OpenBLAS32_jll v0.3.17+0
Precompiling project...
14 dependencies successfully precompiled in 129 seconds. 232 already precompiled.
(jl_DG9aAr) pkg> # This updated PlutoUI and StatsFuns but downgraded Ipopt and JuMP
(jl_DG9aAr) pkg> st -m --outdated
Status `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Manifest.toml`
[7c1d4256] DynamicPolynomials v0.3.21 (<v0.4.1): SymbolicUtils
[b6b21f68] Ipopt v0.6.1 (<v0.9.1)
[7d188eb4] JSONSchema v0.3.4 (<v1.0.0): MathOptInterface
[4076af6c] JuMP v0.21.10 (<v0.22.1)
[b8f27783] MathOptInterface v0.9.22 (<v0.10.6): Ipopt, JuMP
[0a4f8689] MathTeXEngine v0.2.1 (<v0.3.3): Makie
[102ac46a] MultivariatePolynomials v0.3.18 (<v0.4.2): DynamicPolynomials, SymbolicUtils
[d8a4904e] MutableArithmetics v0.2.22 (<v0.3.1): DynamicPolynomials, JuMP, MathOptInterface, MultivariatePolynomials
[276daf66] SpecialFunctions v1.8.1 (<v2.0.0): JuMP, SymbolicUtils
(jl_DG9aAr) pkg> # looks like Ipopt and JuMP can be updated, so update them!
(jl_DG9aAr) pkg> up -m
Updating registry at `~/.julia/registries/General.toml`
Updating `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Project.toml`
[b6b21f68] ↑ Ipopt v0.6.1 ⇒ v0.9.1
[4076af6c] ↑ JuMP v0.21.10 ⇒ v0.22.1
[7f904dfe] ↓ PlutoUI v0.7.23 ⇒ v0.7.1
Updating `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Manifest.toml`
[6e696c72] - AbstractPlutoDingetjes v1.1.2
[7c1d4256] ↓ DynamicPolynomials v0.3.21 ⇒ v0.3.3
[cd3eb016] - HTTP v0.9.17
[47d2ed2b] - Hyperscript v0.0.4
[ac1192a8] - HypertextLiteral v0.9.3
[b5f81e59] - IOCapture v0.2.2
[83e8ac13] - IniFile v0.5.0
[b6b21f68] ↑ Ipopt v0.6.1 ⇒ v0.9.1
[7d188eb4] - JSONSchema v0.3.4
[4076af6c] ↑ JuMP v0.21.10 ⇒ v0.22.1
[b8f27783] ↑ MathOptInterface v0.9.22 ⇒ v0.10.6
[fdba3010] - MathProgBase v0.7.8
[739be429] - MbedTLS v1.0.3
[102ac46a] ↓ MultivariatePolynomials v0.3.18 ⇒ v0.3.2
[d8a4904e] ↑ MutableArithmetics v0.2.22 ⇒ v0.3.1
[7f904dfe] ↓ PlutoUI v0.7.23 ⇒ v0.7.1
[189a3867] ↓ Reexport v1.2.2 ⇒ v0.2.0
[4c63d2b9] ↓ StatsFuns v0.9.14 ⇒ v0.9.7
[fd094767] + Suppressor v0.2.0
[5c2747f8] - URIs v1.3.0
[ae81ac8f] + ASL_jll v0.1.3+0
[9cc047cb] + Ipopt_jll v300.1400.400+0
[d00139f3] + METIS_jll v5.1.1+0
[d7ed1dd3] + MUMPS_seq_jll v5.4.1+0
[656ef2d0] + OpenBLAS32_jll v0.3.17+0
(jl_DG9aAr) pkg> st -m --outdated
Status `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Manifest.toml`
[7c1d4256] DynamicPolynomials v0.3.3 (<v0.4.1): SymbolicUtils
[0a4f8689] MathTeXEngine v0.2.1 (<v0.3.3): Makie
[102ac46a] MultivariatePolynomials v0.3.2 (<v0.4.2): DynamicPolynomials, SymbolicUtils
[7f904dfe] PlutoUI v0.7.1 (<v0.7.23)
[189a3867] Reexport v0.2.0 (<v1.2.2): DynamicPolynomials
[276daf66] SpecialFunctions v1.8.1 (<v2.0.0): JuMP, StatsFuns, SymbolicUtils
[4c63d2b9] StatsFuns v0.9.7 (<v0.9.14)
(jl_DG9aAr) pkg> # hmmm, PlutoUI and StatsFuns can be updated... again, so update them!
(jl_DG9aAr) pkg> up -m
Updating registry at `~/.julia/registries/General.toml`
Updating `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Project.toml`
[b6b21f68] ↓ Ipopt v0.9.1 ⇒ v0.6.1
[4076af6c] ↓ JuMP v0.22.1 ⇒ v0.21.10
[7f904dfe] ↑ PlutoUI v0.7.1 ⇒ v0.7.23
Updating `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Manifest.toml`
[6e696c72] + AbstractPlutoDingetjes v1.1.2
[7c1d4256] ↑ DynamicPolynomials v0.3.3 ⇒ v0.3.21
[cd3eb016] + HTTP v0.9.17
[47d2ed2b] + Hyperscript v0.0.4
[ac1192a8] + HypertextLiteral v0.9.3
[b5f81e59] + IOCapture v0.2.2
[83e8ac13] + IniFile v0.5.0
[b6b21f68] ↓ Ipopt v0.9.1 ⇒ v0.6.1
[7d188eb4] + JSONSchema v0.3.4
[4076af6c] ↓ JuMP v0.22.1 ⇒ v0.21.10
[b8f27783] ↓ MathOptInterface v0.10.6 ⇒ v0.9.22
[fdba3010] + MathProgBase v0.7.8
[739be429] + MbedTLS v1.0.3
[102ac46a] ↑ MultivariatePolynomials v0.3.2 ⇒ v0.3.18
[d8a4904e] ↓ MutableArithmetics v0.3.1 ⇒ v0.2.22
[7f904dfe] ↑ PlutoUI v0.7.1 ⇒ v0.7.23
[189a3867] ↑ Reexport v0.2.0 ⇒ v1.2.2
[4c63d2b9] ↑ StatsFuns v0.9.7 ⇒ v0.9.14
[fd094767] - Suppressor v0.2.0
[5c2747f8] + URIs v1.3.0
[ae81ac8f] - ASL_jll v0.1.3+0
[9cc047cb] - Ipopt_jll v300.1400.400+0
[d00139f3] - METIS_jll v5.1.1+0
[d7ed1dd3] - MUMPS_seq_jll v5.4.1+0
[656ef2d0] - OpenBLAS32_jll v0.3.17+0
(jl_DG9aAr) pkg> st -m --outdated
Status `/private/var/folders/ys/3h0gnqns4b98zb66_vl_m35m0000gn/T/jl_DG9aAr/Manifest.toml`
[7c1d4256] DynamicPolynomials v0.3.21 (<v0.4.1): SymbolicUtils
[b6b21f68] Ipopt v0.6.1 (<v0.9.1)
[7d188eb4] JSONSchema v0.3.4 (<v1.0.0): MathOptInterface
[4076af6c] JuMP v0.21.10 (<v0.22.1)
[b8f27783] MathOptInterface v0.9.22 (<v0.10.6): Ipopt, JuMP
[0a4f8689] MathTeXEngine v0.2.1 (<v0.3.3): Makie
[102ac46a] MultivariatePolynomials v0.3.18 (<v0.4.2): DynamicPolynomials, SymbolicUtils
[d8a4904e] MutableArithmetics v0.2.22 (<v0.3.1): DynamicPolynomials, JuMP, MathOptInterface, MultivariatePolynomials
[276daf66] SpecialFunctions v1.8.1 (<v2.0.0): JuMP, SymbolicUtils
(jl_DG9aAr) pkg> # well, Ipopt and JuMP got downgraded again, but it looks like they can be updated too, so update them...
```

And this can go on and on: update PlutoUI and StatsFuns - Ipopt and JuMP get downgraded. Update them - PlutoUI and StatsFuns get downgraded. Rinse and repeat.

I also found a similar loop with *just* Ipopt and JuMP: Updating Ipopt and JuMP looks broken · Issue #297 · jump-dev/Ipopt.jl · GitHub