Skip to content

Widen LinearMPC compat to 0.8, 0.9 and 0.10 - #153

Merged
baggepinnen merged 1 commit into
masterfrom
fbc/widen-linearmpc-compat
Aug 24, 2026
Merged

Widen LinearMPC compat to 0.8, 0.9 and 0.10#153
baggepinnen merged 1 commit into
masterfrom
fbc/widen-linearmpc-compat

Conversation

@baggepinnen

Copy link
Copy Markdown
Member

LinearMPC = "0.7" in [compat] (registered as WeakCompat for ["0.4.47 - 0"], i.e. every version that has the extension) pins any environment loading RobustAndOptimalControlLinearMPCExt to LinearMPC 0.7.x. That has a consequence well outside this package:

  • LinearMPC 0.7.x requires DAQPBase = "0.3" (0.8 → 0.3.5 - 0.3, 0.9 → 0.4.4 - 0.4, 0.10 → 0.5).
  • So DAQPBase 0.5 — and therefore DAQP 0.9 — is unreachable in any environment that also has RobustAndOptimalControl ≥ 0.4.47.
  • Since 0.4.46 caps Optim = "1.5.0 - 1", a downstream package that wants DAQP 0.9 has to roll RobustAndOptimalControl back to 0.4.46, taking Optim down to 1.x and ControlSystemIdentification to 2.11.x with it.

That is exactly what JuliaComputing/DyadControlSystems.jl hit: DAQP 0.9 is unmergeable there today, and this compat bound is the reason.

No code change needed

The extension only touches three LinearMPC entry points — LinearMPC.MPC(F, G; Ts, C, Np, Nc, kwargs...), LinearMPC.set_objective! and LinearMPC.set_bounds! — and all three are unchanged across 0.7–0.10. LinearMPC.Simulation (used by the tests and the docstring example) is unchanged too.

Testing

test/test_linearmpc_ext.jl run against each version in the widened range:

LinearMPC result
0.7.3 (baseline) 15/15 pass
0.8.0 15/15 pass
0.8.3 15/15 pass
0.9.0 15/15 pass
0.10.0 15/15 pass

Julia 1.12.6. Patch version bumped to 0.4.52 so the widened bound can be registered.

🤖 Generated with Claude Code

`LinearMPC = "0.7"` pins any environment that loads this extension to
LinearMPC 0.7.x, and LinearMPC 0.7.x requires DAQPBase 0.3. That makes
DAQPBase 0.5 (and so DAQP 0.9) unreachable alongside
RobustAndOptimalControl >= 0.4.47, which is where the extension was
added. Downstream, DyadControlSystems.jl cannot take DAQP 0.9 without
rolling RobustAndOptimalControl back to 0.4.46 — and with it Optim to 1.x
and ControlSystemIdentification to 2.11.x.

Nothing in the extension needed changing: it only calls
`LinearMPC.MPC(F, G; ...)`, `set_objective!` and `set_bounds!`, all of
which are unchanged across the 0.7 - 0.10 range. test_linearmpc_ext.jl
passes 15/15 against LinearMPC 0.7.3, 0.8.0, 0.8.3, 0.9.0 and 0.10.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@baggepinnen
baggepinnen merged commit 2aa7b2d into master Aug 24, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant