JuMP 1.0.0 is released

Authors: Miles Lubin, Oscar Dowson, Iain Dunning, Joaquim Dias Garcia, Joey Huchette, and Benoît Legat.

We are happy to announce the release of JuMP 1.0!

Nearly 10 years in the making, the release of JuMP 1.0 represents a major milestone in the history of JuMP. It also represents a stable platform from which we can continue to build new and exciting features for a long time into the future.

In this post we explain what “going 1.0” means for us now and what it will mean for the future.

If it’s been a while since you tried JuMP, read our release notes to review some recently added features. We’ve also put a lot of effort into revising our documentation, and there are a range of getting started tutorials for new users.

What is JuMP?

JuMP is a modeling language and collection of supporting packages for mathematical optimization problems in Julia.

JuMP makes it easy to formulate and solve a range of problem classes, including linear programs, integer programs, conic programs, semidefinite programs, and constrained nonlinear programs.

JuMP is one of the 10 most popular Julia packages, and it has tens of thousands of users in countries worldwide, with over 50 thousand downloads in the last six months.

JuMP consists of two main Julia packages, JuMP.jl and MathOptInterface.jl, along with a plethora of supporting packages which interface MathOptInterface.jl to external solvers, use JuMP to solve application specific optimization problems, or extend JuMP to new problem domains.

JuMP-dev, the annual user conference, has dozens of contributed talks, and there are over 250 Julia packages that depend on JuMP and MathOptInterface for things such as power systems modeling, exa-scale metabolic modeling, convex programming and much more.

People use JuMP to route school buses, schedule trains, plan power grid expansion, and optimize organic milk production.

A brief history of JuMP

Why 1.0 and how will future versions work?

The 1.0 release marks the completion of the JuMP 1.0 roadmap and the transition to semantic versioning.

In short, semantic versioned packages have a version comprised of three numbers: MAJOR.MINOR.PATCH. Given a version number MAJOR.MINOR.PATCH:

By releasing JuMP 1.0.0, the core contributors are ensuring that all code you write using a 1.x.y release of JuMP will continue to work with all future MINOR and PATCH releases, until we make a new MAJOR release.

JuMP follows the ColPrac guide for deciding how to version each release.

JuMP and Julia compatibility

The latest release of JuMP will always support the long-term support and stable releases of Julia.

When the long-term support release is changed, JuMP’s minimum required version of Julia will be updated and a new minor release will be tagged.

Next steps

JuMP 1.0 is not an end goal. We have big plans for the future! To get involved:

Thank you

A huge number of people have contributed to packages in the JuMP-dev GitHub repositories over the last 10 years. In order of the number of pull requests, we thank: