Releases: jump-dev/Xpress.jl
v0.18.0
Xpress 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 (#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 (#298)
This PR is breaking for any code that touched the
Xpress.Libsubmodule, any
code insrc/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
using Xpress prob = Xpress.XpressProblem() value = Xpress.getintcontrol(prob, Xpress.XPRS_OUTPUTFLAG)
do
using Xpress prob = Xpress.XpressProblem() pInt = Ref{Cint}(0) ret = XPRSgetintcontrol(prob, XPRS_OUTPUTFLAG, pInt) @assert ret == 0 # Check error code value = pInt[]
If you need help updating your code, please open a GitHub isssue and tag
@odow. -
[breaking] remove kwargs from Optimizer constructor (#300)
This PR removed the ability to set options via
Xpress.Optimizer(; kwargs...).
UseJuMP.set_attributeorMOI.RawOptimizerAttributeinstead. We made this
change to align with the rest of the JuMP ecosystem. -
[breaking] remove incorrect set_callback_preintsol (#309)
This PR removed
Xpress.set_callback_preintsol. You can still set this
callback manually usingXPRSaddcbpreintsol. We removed this function because
it wasn't used by the MOI wrapper, and it did not expose the full capabilities
of the underlying callback. -
[breaking] remove set_callback_optnode! (#310)
This PR removed
Xpress.set_callback_optnode!. You can still set this
callback manually usingXPRSaddcboptnode, or by setting the
Xpress.CallbackFunctionattribute. We removed this function because
it could equivalently be called byCallbackFunction, and it did not expose
the full capabilities of the underlying callback. -
[breaking] move logfile field from XpressProblem to Optimizer (#312)
The
XpressProblem(; logfile)keyword argument has been removed. If you are
using the C API, callXPRSsetlogfileinstead. If you are using the MOI
wrapper, set the"logfile"attribute.
Added
-
Add support for CTRL+C during the solve (#307)
This PR adds support for interrupting the solver during
optimize!. It
applies only to MIP models. -
Add support for ScalarQuadraticFunction-in-EqualTo (#319)
Previously this was supported by a bridge adding two constraints: f(x) <= a and f(x) >= a.
Fixed
-
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
- Update versions in GitHub actions (#296)
- Add a CI job to test local installation (#301)
- Remove unnecessary XPRSloadlp (#303)
- Write the filename of libxprs to deps.jl instead of the directory (#302)
- Remove kwargs from Optimizer in tests (#304)
- Test Xpress_jll@9.8.1 in CI (#306)
- Clean up and tidy the test/test_MOI_wrapper.jl file (#305)
- Move message callback into MOI wrapper (#308)
- Remove the separate helper.jl and license.jl files (#311)
- Set XPRS_CALLBACKFROMMAINTHREAD when adding a callback (#314)
- Remove unused solve_relaxation (#315)
- Remove setting MPSNAMELENGTH by default (#316)
- Minor formatting changes for the MOI wrapper (#318)
Merged pull requests:
- Update versions in GitHub actions (#296) (@odow)
- Drop support for Julia@1.6 and make minimum v1.10 (#297) (@odow)
- [breaking] simplify the wrapper by removing the intermediate API (#298) (@odow)
- Switch to XPRSoptimize and remove lp/mip/nlp switches (#299) (@odow)
- [breaking] remove kwargs from Optimizer constructor (#300) (@odow)
- Add a CI job to test local installation (#301) (@odow)
- Write the filename of libxprs to deps.jl instead of the directory (#302) (@odow)
- Remove unnecessary XPRSloadlp (#303) (@odow)
- Remove kwargs from Optimizer in tests (#304) (@odow)
- Clean up and tidy the test/test_MOI_wrapper.jl file (#305) (@odow)
- Test Xpress_jll@9.8.1 in CI (#306) (@odow)
- Add support for CTRL+C during the solve (#307) (@odow)
- Move message callback into MOI wrapper (#308) (@odow)
- [breaking] remove incorrect set_callback_preintsol (#309) (@odow)
- [breaking] remove set_callback_optnode! (#310) (@odow)
- Remove the seprate helper.jl and license.jl files (#311) (@odow)
- Move logfile field from XpressProblem to Optimizer (#312) (@odow)
- Prep for v0.18.0 (#313) (@odow)
- Set XPRS_CALLBACKFROMMAINTHREAD when adding a callback (#314) (@odow)
- Remove unused solve_relaxation (#315) (@odow)
- Remove setting MPSNAMELENGTH by default (#316) (@odow)
- Bump julia-actions/setup-julia from 2 to 3 (#317) (@dependabot[bot])
- Minor formatting changes for the MOI wrapper (#318) (@odow)
- Add support for ScalarQuadraticFunction-in-EqualTo (#319) (@odow)
Closed issues:
v0.17.2
Xpress v0.17.2
Merged pull requests:
- Fix incorrect code in the README (#280) (@odow)
- Improve readme (#281) (@joaquimg)
- Fix test_nonlinear to have LOCALLY_SOLVED as the .optimal_status (#282) (@odow)
- Fixes for new test_nonlinear_ tests (#283) (@odow)
- Temporarily skip a troublesome test (#284) (@odow)
- Switch to using XPRESS_LICENSE in GitHub actions (#286) (@odow)
- Skip failing test due to upstream bug (#288) (@odow)
- Skip another failing upstream test (#289) (@odow)
- Update Xpress to 9.8.0 (#292) (@rafabench)
- Prep for v0.17.2 (#293) (@rafabench)
Closed issues:
v0.17.1
v0.17.0
Xpress v0.17.0
Merged pull requests:
- Add license headers (#219) (@odow)
- Use Xpress_jll for binaries (#220) (@odow)
- Use conda binaries on CI (#221) (@odow)
- Basic tidying of code (#222) (@odow)
- Move Lib module to subdirectory (#223) (@odow)
- Add support for MOI.RelativeGapTolerance and MOI.AbsoluteGapTolerance (#224) (@odow)
- Disable MIPDUALREDUCTIONS when callbacks are added (#225) (@odow)
- Refactor setting VariablePrimalStart in MOI_wrapper.jl (#226) (@odow)
- Remove /docs directory (#227) (@odow)
- Remove unused test file semicontint.jl (#228) (@odow)
- Refactor test directory (#229) (@odow)
- Document custom attributes in the MOI wrapper (#230) (@odow)
- Add JuliaFormatter (#231) (@odow)
- Tidy src/MOI/MOI_wrapper.jl (#232) (@odow)
- Fix duplicated function in test/test_MOI_wrapper.jl (#234) (@odow)
- Ignore src/Lib from .codecov (#235) (@odow)
- Remove calls to src/api.jl (#236) (@odow)
- Refactor and simplify src/helper.jl (#237) (@odow)
- Refactor and simplify src/utils.jl (#238) (@odow)
- Move XPRS_ATTRIBUTES to src/api.jl (#239) (@odow)
- Fix MOI.supports(::Optimizer, ::MOI.RawOptimizerAttribute) (#241) (@odow)
- Change CRLF to LF line endings (#242) (@odow)
- Refactor and simplify src/xprs_callbacks.jl (#243) (@odow)
- Refactor and simplify src/MOI/MOI_callbacks.jl (#244) (@odow)
- Simplify _indices_and_coefficients to return 0-indexed cols (#245) (@odow)
- Add more tests to test/test_MOI_wrapper.jl (#246) (@odow)
- Remove ConstraintName for VariableIndex constraints (#247) (@odow)
- Add more tests to test/test_MOI_wrapper.jl (#248) (@odow)
- Simplify _cache_primal_status to use XPRS_SOLSTATUS (#249) (@odow)
- Remove allocations (#250) (@joaquimg)
- Refactor src/license.jl (#251) (@odow)
- Remove LinearAlgebra dependency (#252) (@odow)
- Remove SparseArrays dependency (#253) (@odow)
- Remove Random dependency (#254) (@odow)
- Support MOI.ScalarNonlinearFunction (#255) (@odow)
- Update wrapper of xprs.h (#257) (@odow)
- Fix uses of code that are not supported by Xpress v8 (#258) (@odow)
- Fix xprs.jl to use Clong instead of Cint (#259) (@odow)
- Fix getter of MOI.ListOfConstraintIndices (#261) (@odow)
- Fix setting Nothing for MOI.TimeLimitSec (#262) (@odow)
- Tidy pass_names_to_solver and add tests (#263) (@odow)
- Prep for v0.17.0 (#264) (@odow)
- Update versions in GitHub actions (#265) (@odow)
- Add Getting help section to README (#266) (@odow)
- Update Xpress_jll support (#267) (@odow)
- Remove mention of community license in README (#268) (@odow)
- Fix XPAUTH_PATH search for license (#269) (@odow)
- Add callback example to README (#271) (@odow)
- update attribute controls for xpress-9.4 (#273) (@mbataillou)
Closed issues:
- Use dispatch in add single variable constraint (#70)
- Xpress ignore LP warm starts (#127)
- Memory leaks (#131)
- Document MOI-specific parameters (#168)
- Possible bug in lazy constraints (#191)
- Missing MOI setter for RelativeGapTolerance (#209)
- Solver and JuMP returns not the same (#212)
- Add JuliaFormatter (#214)
- Consider removing src/api.jl (#215)
- Add license headers (#216)
- Renew CI license (#217)
- Add support for ScalarNonlinearFunction (#233)
- Add callback example to README (#270)
- Unrecognized control parameter. (#272)
v0.16.2
v0.16.1
v0.16.0
v0.15.6
Xpress v0.15.6
Closed issues:
- Setting license file separately from Xpress installation? (#182)
Merged pull requests:
- Update addnames loops (#183) (@guilhermebodin)
- Ref for performance improvements (#184) (@viniciusjusten)
- Update ci.yml with new secret (#186) (@joaquimg)
- Avoid allocations with Ref() and add option to fix two bounds at once (#187) (@joaquimg)
v0.15.5
v0.15.4
Xpress v0.15.4
Closed issues:
- _info type-stability (#179)
Merged pull requests:
- fix type-stability (#180) (@Thiago-NovaesB)