@JuliaRegistrator register
Release notes:
- JuMP / MOI in-place modification: set(::Optimizer, ::MOI.ConstraintSet, ...) now supported for variable bounds (GreaterThan, LessThan, EqualTo,
Interval) and affine RHS, so warm-start / re-solve loops can change values without rebuilding the model.
- Added MOI.DualObjectiveValue (dual-solution objective after an LP solve; matches ObjectiveValue at optimality).
- Fixed free-variable default bound (correctness): new JuMP / MOI variables were silently given a lower bound of 0.0 instead of being free (-Inf,
+Inf), causing wrong results or spurious infeasibilities; variables are now created free.
- Fixed MOI.ConstraintDual sign conventions: duals now follow MOI (relative to minimization, negated for maximization); variable-bound duals return the
reduced cost instead of NaN, split Interval duals come from the binding child, and the vector getter returns a flat Vector.
- Fixed intermittent Windows callback crash: heap corruption / access violation during GC when a callback was active during a MIP solve (the problem
wrapper is now reused, not reallocated per call). Callbacks remain unsafe during SLP / nonlinear / multistart solves.
- Fixed an opaque MethodError (now a proper XPRSexception) when a pre-allocated output array is too short.
- Ship MOI_FEATURES.md in the package (fixes a dead README link); corrected bridge-usage examples to Model(XpressAPI.Optimizer).
- Low-level wrapper cleanup: concrete String argument/result types, explicit return in wrappers, and docstring signatures now show the return type.
@JuliaRegistrator register
Release notes:
Interval) and affine RHS, so warm-start / re-solve loops can change values without rebuilding the model.
+Inf), causing wrong results or spurious infeasibilities; variables are now created free.
reduced cost instead of NaN, split Interval duals come from the binding child, and the vector getter returns a flat Vector.
wrapper is now reused, not reallocated per call). Callbacks remain unsafe during SLP / nonlinear / multistart solves.