From e28f87ade6dd6925352c6a3b2ded0e68e00f8325 Mon Sep 17 00:00:00 2001 From: jClugstor Date: Thu, 18 Jun 2026 15:27:42 -0400 Subject: [PATCH 1/8] Bump Manifolds and ManifoldsBase compats --- lib/OptimizationManopt/Project.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/OptimizationManopt/Project.toml b/lib/OptimizationManopt/Project.toml index 2125d2ba8..e2cda7d93 100644 --- a/lib/OptimizationManopt/Project.toml +++ b/lib/OptimizationManopt/Project.toml @@ -1,7 +1,7 @@ name = "OptimizationManopt" uuid = "e57b7fff-7ee7-4550-b4f0-90e9476e9fb6" authors = ["Mateusz Baran ", "Ronny Bergmann "] -version = "1.3.2" +version = "1.4.0" [deps] Manopt = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb" @@ -37,9 +37,9 @@ DifferentiationInterface = "0.7" Manopt = "0.5.25" OptimizationBase = "5.1" LinearAlgebra = "1.10" -ManifoldsBase = "1" +ManifoldsBase = "1, 2" ManifoldDiff = "0.4" -Manifolds = "0.10" +Manifolds = "0.10, 0.11" Reexport = "1.2" SciMLBase = "2.122.1, 3" From 3f7d521dd8a8cc384beb5c8e0617d9f12ff88e75 Mon Sep 17 00:00:00 2001 From: jClugstor Date: Thu, 18 Jun 2026 15:55:05 -0400 Subject: [PATCH 2/8] fix QA for OptimizationManopt --- lib/OptimizationManopt/Project.toml | 37 +++++++++++++++++++--------- lib/OptimizationManopt/test/qa/qa.jl | 7 +++++- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/lib/OptimizationManopt/Project.toml b/lib/OptimizationManopt/Project.toml index e2cda7d93..64cb92a5d 100644 --- a/lib/OptimizationManopt/Project.toml +++ b/lib/OptimizationManopt/Project.toml @@ -13,35 +13,48 @@ Reexport = "189a3867-3050-52da-a836-e630ba90ab69" SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" [extras] -Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" +FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" -RipQP = "1e40b3f8-35eb-4cd8-8edd-3e515bb9de08" +JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" QuadraticModels = "f468eda6-eac5-11e8-05a5-ff9e497bcd19" -ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +RipQP = "1e40b3f8-35eb-4cd8-8edd-3e515bb9de08" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" -FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" -Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" [sources] OptimizationBase = {path = "../OptimizationBase"} [compat] -Pkg = "1" -SafeTestsets = "0.1" -julia = "1.10" +Aqua = "0.8" DifferentiationInterface = "0.7" -Manopt = "0.5.25" -OptimizationBase = "5.1" +Enzyme = "0.13" +FiniteDiff = "2" +ForwardDiff = "0.10, 1" +JET = "0.9, 0.10, 0.11" LinearAlgebra = "1.10" -ManifoldsBase = "1, 2" ManifoldDiff = "0.4" Manifolds = "0.10, 0.11" +ManifoldsBase = "1, 2" +Manopt = "0.5.25" +OptimizationBase = "5.1" +Pkg = "1" +QuadraticModels = "0.9" +Random = "1.10" Reexport = "1.2" +ReverseDiff = "1" +RipQP = "0.6" +SafeTestsets = "0.1" SciMLBase = "2.122.1, 3" +Test = "1.10" +Zygote = "0.6, 0.7" +julia = "1.10" [targets] test = ["DifferentiationInterface", "Enzyme", "ForwardDiff", "FiniteDiff", "QuadraticModels", "Random", "ReverseDiff", "RipQP", "Test", "Zygote", "SafeTestsets", "Pkg"] diff --git a/lib/OptimizationManopt/test/qa/qa.jl b/lib/OptimizationManopt/test/qa/qa.jl index c33d117c1..04e04a0ea 100644 --- a/lib/OptimizationManopt/test/qa/qa.jl +++ b/lib/OptimizationManopt/test/qa/qa.jl @@ -2,7 +2,12 @@ using OptimizationManopt, Aqua, JET using Test @testset "Aqua" begin - Aqua.test_all(OptimizationManopt) + # Manifolds is declared because the curvature analysis path may pull it in, + # but no symbol from it is currently used in src — ignore it for now. + Aqua.test_all( + OptimizationManopt; + stale_deps = (; ignore = [:Manifolds]) + ) end @testset "JET static analysis" begin From 101c8244ff12031d918ea304cc4a5b5ef51ebf08 Mon Sep 17 00:00:00 2001 From: jClugstor Date: Thu, 18 Jun 2026 15:57:33 -0400 Subject: [PATCH 3/8] Manopt requires Period now, use Period for maxtime --- lib/OptimizationManopt/src/OptimizationManopt.jl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/OptimizationManopt/src/OptimizationManopt.jl b/lib/OptimizationManopt/src/OptimizationManopt.jl index 1a4d8c4b2..0a6415bf3 100644 --- a/lib/OptimizationManopt/src/OptimizationManopt.jl +++ b/lib/OptimizationManopt/src/OptimizationManopt.jl @@ -1,8 +1,10 @@ module OptimizationManopt using Reexport -@reexport using Manopt -using OptimizationBase, Manopt, ManifoldsBase, ManifoldDiff, SciMLBase +@reexport using OptimizationBase +using ManifoldsBase, ManifoldDiff, SciMLBase +import Manopt +using Dates: Millisecond """ abstract type AbstractManoptOptimizer end @@ -34,7 +36,7 @@ function __map_optimizer_args!( end if !isnothing(maxtime) - push!(criteria, Manopt.StopAfter(maxtime)) + push!(criteria, Manopt.StopAfter(Millisecond(round(Int, maxtime * 1000)))) end if !isnothing(abstol) From 69a6331e0195776c2bacc171994a0d93598f2cba Mon Sep 17 00:00:00 2001 From: jClugstor Date: Thu, 18 Jun 2026 16:07:58 -0400 Subject: [PATCH 4/8] add Dates --- lib/OptimizationManopt/Project.toml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/OptimizationManopt/Project.toml b/lib/OptimizationManopt/Project.toml index 64cb92a5d..d8415d936 100644 --- a/lib/OptimizationManopt/Project.toml +++ b/lib/OptimizationManopt/Project.toml @@ -3,12 +3,13 @@ uuid = "e57b7fff-7ee7-4550-b4f0-90e9476e9fb6" authors = ["Mateusz Baran ", "Ronny Bergmann "] version = "1.4.0" [deps] -Manopt = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" -OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb" +Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -ManifoldsBase = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb" ManifoldDiff = "af67fdf4-a580-4b9f-bbec-742ef357defd" Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e" +ManifoldsBase = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb" +Manopt = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" +OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb" Reexport = "189a3867-3050-52da-a836-e630ba90ab69" SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" @@ -33,6 +34,7 @@ OptimizationBase = {path = "../OptimizationBase"} [compat] Aqua = "0.8" +Dates = "1.10" DifferentiationInterface = "0.7" Enzyme = "0.13" FiniteDiff = "2" From fa84cbeab93a6f01f7ceb48e7e779b7ad9d771fc Mon Sep 17 00:00:00 2001 From: jClugstor Date: Thu, 18 Jun 2026 16:24:23 -0400 Subject: [PATCH 5/8] prevent name collision warnings --- lib/OptimizationManopt/src/OptimizationManopt.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/OptimizationManopt/src/OptimizationManopt.jl b/lib/OptimizationManopt/src/OptimizationManopt.jl index 0a6415bf3..3cd724cb3 100644 --- a/lib/OptimizationManopt/src/OptimizationManopt.jl +++ b/lib/OptimizationManopt/src/OptimizationManopt.jl @@ -1,9 +1,9 @@ module OptimizationManopt using Reexport -@reexport using OptimizationBase +@reexport using Manopt +import OptimizationBase using ManifoldsBase, ManifoldDiff, SciMLBase -import Manopt using Dates: Millisecond """ @@ -281,7 +281,7 @@ function _default_convergence_criterion(::AbstractManoptOptimizer, M, abstol) return Manopt.StopWhenChangeLess(M, abstol) end -function build_loss(f::OptimizationFunction, prob, cb) +function build_loss(f::OptimizationBase.OptimizationFunction, prob, cb) # TODO: I do not understand this. Why is the manifold not used? # Either this is an Euclidean cost, then we should probably still call `embed`, # or it is not, then we need M. @@ -293,7 +293,7 @@ function build_loss(f::OptimizationFunction, prob, cb) end end -function build_gradF(f::OptimizationFunction{true}) +function build_gradF(f::OptimizationBase.OptimizationFunction{true}) function g(M::AbstractManifold, G, θ) f.grad(G, θ) return G .= riemannian_gradient(M, θ, G) @@ -306,7 +306,7 @@ function build_gradF(f::OptimizationFunction{true}) return g end -function build_hessF(f::OptimizationFunction{true}) +function build_hessF(f::OptimizationBase.OptimizationFunction{true}) function h(M::AbstractManifold, H1, θ, X) H = zeros(eltype(θ), length(θ)) f.hv(H, θ, X) @@ -324,7 +324,7 @@ function build_hessF(f::OptimizationFunction{true}) return h end -function SciMLBase.__solve(cache::OptimizationCache{O}) where {O <: AbstractManoptOptimizer} +function SciMLBase.__solve(cache::OptimizationBase.OptimizationCache{O}) where {O <: AbstractManoptOptimizer} local x, cur, state manifold = cache.manifold From cf5911091b8d5a5bde29a1b727d501e243790e9e Mon Sep 17 00:00:00 2001 From: jClugstor Date: Thu, 18 Jun 2026 16:39:21 -0400 Subject: [PATCH 6/8] import SciMLMessage --- lib/OptimizationManopt/src/OptimizationManopt.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/OptimizationManopt/src/OptimizationManopt.jl b/lib/OptimizationManopt/src/OptimizationManopt.jl index 3cd724cb3..a61493be8 100644 --- a/lib/OptimizationManopt/src/OptimizationManopt.jl +++ b/lib/OptimizationManopt/src/OptimizationManopt.jl @@ -3,6 +3,7 @@ module OptimizationManopt using Reexport @reexport using Manopt import OptimizationBase +using OptimizationBase: @SciMLMessage using ManifoldsBase, ManifoldDiff, SciMLBase using Dates: Millisecond From 9019fa302fb008beaeb2a7c435f73f02a5d8335e Mon Sep 17 00:00:00 2001 From: jClugstor Date: Mon, 22 Jun 2026 10:26:27 -0400 Subject: [PATCH 7/8] explicit import of ReturnCode --- lib/OptimizationManopt/src/OptimizationManopt.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/OptimizationManopt/src/OptimizationManopt.jl b/lib/OptimizationManopt/src/OptimizationManopt.jl index a61493be8..5b7ce8f95 100644 --- a/lib/OptimizationManopt/src/OptimizationManopt.jl +++ b/lib/OptimizationManopt/src/OptimizationManopt.jl @@ -4,7 +4,9 @@ using Reexport @reexport using Manopt import OptimizationBase using OptimizationBase: @SciMLMessage -using ManifoldsBase, ManifoldDiff, SciMLBase +using ManifoldsBase, ManifoldDiff +import SciMLBase +using SciMLBase: ReturnCode using Dates: Millisecond """ From ffd7d55b8e523e19096f134eb2b23a47ae2b6493 Mon Sep 17 00:00:00 2001 From: jClugstor Date: Mon, 22 Jun 2026 11:35:19 -0400 Subject: [PATCH 8/8] patch instead of minor --- lib/OptimizationManopt/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/OptimizationManopt/Project.toml b/lib/OptimizationManopt/Project.toml index d8415d936..d4079d768 100644 --- a/lib/OptimizationManopt/Project.toml +++ b/lib/OptimizationManopt/Project.toml @@ -1,7 +1,7 @@ name = "OptimizationManopt" uuid = "e57b7fff-7ee7-4550-b4f0-90e9476e9fb6" authors = ["Mateusz Baran ", "Ronny Bergmann "] -version = "1.4.0" +version = "1.3.3" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"