← Back to all sparks
P

Pyomo

ANALYTICS
Velocity0.0

Python-based optimization modeling language for formulating and solving problems

Optimization modeling library grinding through a multi-year solver-interface rewrite.

optimizationsolver-interfacespython-libraryrefactorscientific-computing
Current state
Pyomo is a Python algebraic modeling language for optimization, and its recent releases are dominated by two long-running efforts: the v2 solver interface refactor and steady expansion of the solvers it can drive. The 6.10 series dropped Python 3.9, removed the hard ply dependency, and added a Model Observer package plus gams_v2, cuopt, and scip interfaces. Release notes restate the same series highlights each time, so the actual per-release delta sits below the header block.
Where it's heading
The center of gravity is the solver layer. Every release in this window adds or refactors an interface — KNITRO, Gurobi MINLP, cuOpt, SCIP, GAMS — while the v2 rewrite runs underneath as the eventual replacement for the legacy wrappers. Alongside that, the project is doing unglamorous modernization: pyproject.toml, NumPy 2, Python 3.14, static typing.
Prediction
The v2 solver interfaces should keep absorbing solvers until the legacy wrapper can be deprecated; the entries do not show a stated timeline for that cutover.

Recent moves

  1. 2mo ago

    Model Observer package, SCIP interfaces, and a KKT reformulation transform

    The substantive additions in this release are the new Model Observer package, an initialization module for nonconvex nonlinear problems, SCIP direct and persistent interfaces, and a KKT transformation. It continues the pattern of the solver layer absorbing one more backend per release while the core picks up transformations.

    View source ↗
  2. 5mo ago

    6.10 series opens: Python 3.9 dropped, ply removed, cuOpt interface added

    Opens the 6.10 series with two dependency cuts — Python 3.9 and the external ply parser — plus the gams_v2 and cuOpt solver interfaces. Dropping ply is the kind of change that matters mainly to packagers, but it narrows the install surface for a library that ships into constrained scientific environments.

    View source ↗
  3. 9mo ago

    Python 3.14 support, KNITRO direct interface, Gurobi MINLP

    Adds a KNITRO direct interface and extends gurobi_direct to MINLP, both feeding the same solver-coverage arc. The notice that this is the last release supporting Python 3.9 sets up the 6.10 break.

    View source ↗
  4. 11mo ago

    HiGHS support in benders, grey box objectives in Design of Experiments

    Mostly consolidation — a Windows capture_output deadlock fix, standard-form bugfix, SCIP node-count reporting — with real additions confined to the contributed packages, where benders gains HiGHS and DoE gains grey box objectives.

    View source ↗
  5. 1y ago

    pyproject.toml migration, NumPy 2 and Python 3.14 compatibility

    Infrastructure modernization: packaging moves to pyproject.toml, NumPy 2 and Python 3.14 incompatibilities are cleared, and the relax_integer_vars transformation is rewritten. Invisible to models, but it is what keeps Pyomo installable as the scientific Python stack moves.

    View source ↗
  6. 1y ago

    Maintenance release: expression-generation dispatch, docs, solver bugfixes

    A maintenance release — internal multiple dispatch for relational expression generation, documentation URL fixes, and small solver bugfixes. Nothing here changes what a model can express or which solvers it can reach.

    View source ↗