PSA: Convex.jl default solver deprecation


Support for default solvers in Convex.jl is about to be dropped. For the most part this’ll just require you to explicitly pass a MathProgBase.AbstractMathProgSolver as the second argument to solve!, if you aren’t already doing so. Reasons for the change include:

  1. The current behaviour throws a warning about loading packages that aren’t Convex.jl dependencies
  2. Explicitly passing in a solver better aligns with the JuMP API
  3. The current default solver logic makes Convex.jl incompatible with system image building

More details are provided in the links below. If anyone has any final comments/concerns, please raise them now.


To add to this, note that Convex v0.9.0 will introduce the deprecation and v0.10.0 will require explicit specification of solvers.


How are tests (Pkg.test("Convex")) going to be handled? As far as I understand, the package directory is scanned and if the package is installed, it runs the test. As it was pointed out, the test fails if the package has been installed and then removed from the project.


Pkg.test("Convex") currently iterates over a static set of solvers, so that behaviour didn’t need to change. The only part that we needed to change was how the solver was being accessed. Now the solver is a variable in the @testset for loops and is passed explicitly along, rather that using set_default_solver and get_default_solver.


Warning: v0.10.0 will be released early next week as this is a fairly blocking issue for us. If you’d like to confirm that this change doesn’t impact you then we recommend running the current master branch.