Currently benchmark_solve! has two forms:
benchmark_solve!(prob, options::AbstractSolverOptions; kwargs...) — passes options as a kwarg into DirectTrajOpt.solve!, which only matches the Ipopt backend.
- The do-block form — used in
Piccolissimo.jl benchmarks to work around (1) for Altissimo.
AltissimoOptions (defined in Piccolissimo's src/solvers/altissimo_backend.jl) is registered with DirectTrajOpt.Solvers.solve! positionally, so the kwarg path fails.
Two options:
- A. Add a
benchmark_solve!(prob, options::AltissimoOptions; kwargs...) method here that dispatches positionally. Requires HarmoniqsBenchmarks to depend on Altissimo (or use a Requires-style stub).
- B. Detect positional dispatch dynamically inside the existing method — e.g.,
try kwarg call; catch MethodError; positional call. Brittle.
Context: surfaced in https://github.com/harmoniqs/Piccolissimo.jl/pull/50 — the benchmark code uses the do-block form everywhere Altissimo runs.
Currently
benchmark_solve!has two forms:benchmark_solve!(prob, options::AbstractSolverOptions; kwargs...)— passesoptionsas a kwarg intoDirectTrajOpt.solve!, which only matches the Ipopt backend.Piccolissimo.jlbenchmarks to work around (1) for Altissimo.AltissimoOptions(defined in Piccolissimo'ssrc/solvers/altissimo_backend.jl) is registered withDirectTrajOpt.Solvers.solve!positionally, so the kwarg path fails.Two options:
benchmark_solve!(prob, options::AltissimoOptions; kwargs...)method here that dispatches positionally. Requires HarmoniqsBenchmarks to depend on Altissimo (or use a Requires-style stub).try kwarg call; catch MethodError; positional call. Brittle.Context: surfaced in https://github.com/harmoniqs/Piccolissimo.jl/pull/50 — the benchmark code uses the do-block form everywhere Altissimo runs.