JuMP 0.21.5 is released

We are happy to announce the joint release of JuMP 0.21.5 and MathOptInterface 0.9.17! These releases are a mix of new features and some much needed performance optimizations. This should be a non-breaking release, please let us know if this isn’t the case by opening a GitHub issue or joining the Developer chatroom. We did have a couple of bugs that slipped into a short-lived release, hence the jump (if you will excuse us) from 0.21.3 to 0.21.5.

On the JuMP side, new features of interest include

We also spent time improving the time it takes to run the tests and fixing bugs. We also resolved a long outstanding issue with reporting correct line numbers in errors involving macros.

On the MathOptInterface side, we spent the majority of the last few months working on performance improvements. These changes include: faster reading and writing of MathOptFormat files; specialized copy_to methods for Clp and GLPK, which reduces the time taken to copy the problem from JuMP into the solver; and numerous minor changes to the backend of MathOptInterface, such as specialized dictionaries which act like arrays at first, but switch to dictionaries when elements are deleted.

@blegat also implemented an option that changes the way to compute which bridges to use in a transformation, opening the way for us to experiment with different bridging schemes in the future.

On the solver front, the conic solver SCS in particular received a lot of attention on improving performance. This led to very large gains formulating large problems in our benchmarks. In the worst case, a problem that never finished loading into the solver now takes 10 seconds.

We also have a number of contributors to thank.

We also thank testing improvements from @iainnz, documentation improvements from @zlatanvasovic, @mtanneau and @aks1996.

For a full list of the merged pull requests and closed issues that contributed to this release, see the tag notes for JuMP v0.21.4 and v0.21.5, and MathOptInterface v0.9.15, v0.9.16, and v0.9.17.

This release knocks out a number of major items on our roadmap for JuMP 1.0. Stay tuned for more progress!