JuMP and Julia 0.7/1.0



I’d like to give an update on JuMP’s plans for Julia 0.7. This supersedes the recent discussions:


First, the good news. JuMP master (which uses MathOptInterface and will become JuMP 0.19, read more here) is now passing tests on Julia 0.7. Julia 0.7 has lots cool features that we’ve barely scratched the surface of.

The bad news is that this took more work than I expected, so we have to revise our estimation of the effort needed to provide a 0.7-compatible release of JuMP 0.18 (a.k.a. the last major release of JuMP on top of MathProgBase). The update took two days of work, and there’s still substantial TODOs in areas like broadcasting and linear algebra operations which saw big changes in Julia 0.7. In addition, we also still have the relatively straightforward task of addressing deprecation warnings which are present in JuMP master. A lot of the changes for 0.7 could be backported to JuMP 0.18, but it’s not 1-1 given how much has changed in JuMP.

While we were previously requesting help from the community to update JuMP 0.18 for Julia 0.7, it’s perhaps not realistic to expect someone outside the core team to wade through all of these changes. At the same time, the core team is furiously pushing forward with JuMP 0.19 and there’s currently nobody strongly motivated to update JuMP 0.18 for Julia 0.7. We will still review PRs towards this end, but be warned that it’s a substantial amount of dirty work.

Our current recommendations for users are as follows:

If you want a stable JuMP environment, continue to use JuMP 0.18 on Julia 0.6. We will maintain JuMP 0.18 for Julia 0.6 and make bug fixes as necessary. We will release JuMP 0.19 (when it’s ready) to be compatible with both Julia 0.6 and 0.7, which provides an upgrade path to first update JuMP 0.18 to JuMP 0.19 and then update Julia 0.6 to 0.7.

For adventurous early adopters, you are welcome to try out JuMP/MathOptInterface (i.e., the master branch) on either Julia 0.6 or Julia 0.7. It’s rough around the edges and still missing some features, but the basics are working. We have a growing list of solvers that are compatible with MathOptInterface. To get started, see Juan Pablo’s tutorial at JuliaCon tomorrow (materials) and my slides from JuMP-dev about a month ago.

Technical notes:

We are developing the solver wrappers like Cbc.jl to support (1) Julia 0.6, (2) Julia 0.7, (3) MathProgBase, and (4) MathOptInterface all on the same branch. (The MathProgBase package, unlike JuMP 0.18, is already compatible with Julia 0.7.) Many solver packages already have tagged versions supporting MathOptInterface.

We welcome PRs addressing Julia 0.7 deprecation warnings, but they must maintain support for Julia 0.6 by using the Compat package when appropriate.

As always, we’re available at the JuMP-dev channel for developer chat.



Thanks for the update. Please note that the current JuMP master is really upsetting the package manager because the upper limits on the dependencies are causing “unjustifiable requirements”. Any chance these can be removed (doing so was the only way I was able to get it running), or do you guys have some procedure for dealing with it?


JuMP master is passing on Travis with the upper limits as is. I can’t say what’s causing your issue.


Sorry, I just tried building on another machine and am not having the issue, so I think my problem must have been a package I had on dev, even though I thought I had freed all of the JuMP dependencies. If it’s a common issue I have when developing multiple packages I’ll post back here with how to resolve. Thanks.

Update: Ok, in case this is helpful to anyone else, I think I have figured out something that has been causing me a great deal of confusion with the new package manager and which I think was causing this issue. With the new package manager, if you have a package in dev, once you do a pull you still need to do dev PackageName in the package manager again, otherwise Pkg will not update its metadata.