JuMP 0.22 is released

We’re happy to announce the release of JuMP v0.22 and MathOptInterface v0.10, which completes a major milestone on our path to JuMP v1.0.

Indeed, similar to how Julia v1.0 was Julia v0.7 with deprecations removed, we anticipate—barring unexpected problems—that JuMP v1.0 will be JuMP v0.22 with deprecations removed.

The release notes for JuMP and MathOptInterface contain a detailed list of the changes.

For a full list of the merged pull requests and closed issues that contributed to this release, see the tag notes for JuMP v0.22.0 and MathOptInterface v0.10.0.

Breaking changes

JuMP v0.22 is a breaking release. However, the breaking changes should be invisible for the majority of users.

There are four main areas of breakage:

New features

JuMP 0.22 has a range of new features, most of which are minor. Here is a summary of the more interesting ones.

Documentation as a PDF

The documentation is now available in PDF form!

Be warned: it’s quite a big PDF, and some parts of the formatting need improving. However, we hope you find it useful. If you have suggestions for how the documentation could be improved, please open a GitHub issue or join the developer chatroom.

Exported status codes

Ever been annoyed at the fact you had to use the MOI. prefix in places like:

if termination_status(model) == MOI.OPTIMAL
    # do stufff
end

JuMP now re-exports MOI.TerminationStatusCode and MOI.ResultStatusCode, so you can use

import JuMP
if JuMP.termination_status(model) == JuMP.OPTIMAL
    # do stufff
end

or

using JuMP
if termination_status(model) == OPTIMAL
    # do stufff
end

Note that JuMP.OPTIMAL === MOI.OPTIMAL, so this is not a breaking change; all existing code will continue to work.

Set inequality syntax

JuMP has long had support for specifying constraints about positive semidefinite (PSD) matrices. In versions prior to JuMP v0.22, there were two options to enforce the constraint that the matrix X - Y was PSD:

@constraint(model, X -  Y in PSDCone())
@SDconstraint(model, X >= Y)

JuMP v0.22 deprecates all usages of @SDconstraint, introducing a more general syntax for specifing set inequalities. For example:

@SDconstraint(model, X >= Y)
# becomes
@constraint(model, X >= Y, PSDCone())

This works with any vector-valued cone (e.g., SecondOrderCone()), so that the following two are equivalent:

@constraint(model, X - Y in SomeSet())
@constraint(model, X >= Y, SomeSet())

We think this provides a simpler interface for people modeling set inequalities, and one that more closely matches what they have written down on paper.

Next steps

We’re getting close to a release of JuMP v1.0.

Our next steps are:

You can track our progress at https://github.com/jump-dev/JuMP.jl/issues/2564. If you encounter any issues with this release, please open an issue or let us know over at the developer chatroom.

Thanks to all who contributed to this release!