Prep for v0.18.0#313
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #313 +/- ##
=======================================
Coverage 98.61% 98.61%
=======================================
Files 3 3
Lines 2591 2591
=======================================
Hits 2555 2555
Misses 36 36 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Dear all, please speak now on these changes. But if you don't, it's also okay. We can re-add any "missing" features in a non-breaking way. If you use only JuMP/MOI, then this should be non-breaking, other than dropping support for old Xpress versions. In return, it adds many new features and bug fixes, such as support for non-convex quadratics and safe interrupting via CTRL+C. If you used anything other than JuMP/MOI, you're in trouble. It's effectively rewrite all of your code to the C API. Which should be straight forward, just a little tedious. I can help if the codes are public. @guilhermebodin |
|
I am ok with this. Go for it |
|
All good from our side, We have only used Xpress through JuMP/MOI. |
Since it is such a large breaking release, I wrote some proper release notes.
Release notes v0.18.0
This is a large breaking release. The purpose of this release was to clean up a
lot of the wrapper by removing the intermediate API between MathOptInterface and
C.
These changes are motivated by our experience maintaining other solver wrappers:
the fewer layers of indirection between MOI and the solver the better, even if
the code is more verbose. In particular, macros seem like they make things
easier to read, but they distract from the code that actually runs. And helper
functions that automate some of the handling of C arguments like
Ref{Cint}obscure the underlying C calls.
Breaking
Support for Xpress v8 and earlier has been removed. There are no work-arounds.
The only supported versions are minor and patch releases in the Xpress v9
series.
Droped support for Julia@1.6 and make minimum v1.10 (Drop support for Julia@1.6 and make minimum v1.10 #297)
This change is technically not breaking because users on v1.6 will not be able
to upgrade to this version, but it is worth advertising.
[breaking] simplify the wrapper by removing the intermediate API ([breaking] simplify the wrapper by removing the intermediate API #298)
This PR is breaking for any code that touched the
Xpress.Libsubmodule, anycode in
src/api.jl, or any code that used@_invokeor@checked.There are no simple work-arounds. Instead, you must rewrite your code to use
the underlying C API directly.
As an example, instead of
do
If you need help updating your code, please open a GitHub isssue and tag
@odow.[breaking] remove kwargs from Optimizer constructor ([breaking] remove kwargs from Optimizer constructor #300)
This PR removed the ability to set options via
Xpress.Optimizer(; kwargs...).Use
JuMP.set_attributeorMOI.RawOptimizerAttributeinstead. We made thischange to align with the rest of the JuMP ecosystem.
[breaking] remove incorrect set_callback_preintsol ([breaking] remove incorrect set_callback_preintsol #309)
This PR removed
Xpress.set_callback_preintsol. You can still set thiscallback manually using
XPRSaddcbpreintsol. We removed this function becauseit wasn't used by the MOI wrapper, and it did not expose the full capabilities
of the underlying callback.
[breaking] remove set_callback_optnode! ([breaking] remove set_callback_optnode! #310)
This PR removed
Xpress.set_callback_optnode!. You can still set thiscallback manually using
XPRSaddcboptnode, or by setting theXpress.CallbackFunctionattribute. We removed this function becauseit could equivalently be called by
CallbackFunction, and it did not exposethe full capabilities of the underlying callback.
[breaking] move logfile field from XpressProblem to Optimizer (Move logfile field from XpressProblem to Optimizer #312)
The
XpressProblem(; logfile)keyword argument has been removed. If you areusing the C API, call
XPRSsetlogfileinstead. If you are using the MOIwrapper, set the
"logfile"attribute.Added
Add support for CTRL+C during the solve (Add support for CTRL+C during the solve #307)
This PR adds support for interrupting the solver during
optimize!. Itapplies only to MIP models.
Add support for ScalarQuadraticFunction-in-EqualTo (Add support for ScalarQuadraticFunction-in-EqualTo #319)
Previously this was supported by a bridge adding two constraints:
f(x) <= aandf(x) >= a.Fixed
Switch to XPRSoptimize and remove lp/mip/nlp switches (Switch to XPRSoptimize and remove lp/mip/nlp switches #299)
As a result of this PR, Xpress will now automatically detect the problem type
and use the appropriate solver. This fixes a bug in which non-convex quadratic
programs were not supported by the MOI wrapper.
Other