Skip to content

Bump DiffEqBase / OrdinaryDiffEq / OrdinaryDiffEqCore compat to include v7/v4#580

Merged
ChrisRackauckas merged 2 commits intoSciML:masterfrom
ChrisRackauckas-Claude:bump-diffeqbase-v7
Apr 22, 2026
Merged

Bump DiffEqBase / OrdinaryDiffEq / OrdinaryDiffEqCore compat to include v7/v4#580
ChrisRackauckas merged 2 commits intoSciML:masterfrom
ChrisRackauckas-Claude:bump-diffeqbase-v7

Conversation

@ChrisRackauckas-Claude
Copy link
Copy Markdown
Contributor

Summary

Widen compat so JumpProcesses resolves alongside the in-development v7 OrdinaryDiffEq stack (lib/DiffEqBase 7.0.0 + lib/OrdinaryDiffEqCore 4.0.0 in the OrdinaryDiffEq monorepo):

  • DiffEqBase: "6.192""6.192, 7"
  • OrdinaryDiffEq: "6""6, 7"
  • OrdinaryDiffEqCore: "3""3, 4"

Version bump 9.25.1 → 9.26.0.

Motivation

On SciML/OrdinaryDiffEq.jl#3488 (v7 release branch), the test (ModelingToolkit, …) matrix and various indirect paths fail at resolve time. Even after DiffEqCallbacks.jl#303 + DiffEqNoiseProcess.jl#271 + the problem-library bumps, resolution still trips over JumpProcesses, which is pulled in transitively via ModelingToolkitBaseJumpProcesses and via StochasticDiffEqImplicitJumpProcesses:

Unsatisfiable requirements detected for package JumpProcesses [ccbc3e58]:
 JumpProcesses [ccbc3e58] log:
 ├─possible versions are: 9.0.0 - 9.25.1 or uninstalled
 ├─restricted to versions 9.13.1 - 9 by StochasticDiffEqImplicit [5080b986]
 ├─restricted to versions 9.23.0 - 9 by ModelingToolkitBase [7771a370]
 └─restricted by compatibility requirements with DiffEqBase [2b5f629d] to versions: uninstalled
   └─DiffEqBase [2b5f629d] is fixed to version 7.0.0

This widening unblocks that edge.

Why this is source-level safe

The SciMLBase v3 / DiffEqBase v7 rename work was already landed in #579 ("Prepare source for SciMLBase v3 and widen compat"):

  • src/SSA_stepper.jl defines both DiffEqBase.u_modified!(::SSAIntegrator, ::Bool) and, under @static if isdefined(SciMLBase, :derivative_discontinuity!), SciMLBase.derivative_discontinuity!(::SSAIntegrator, ::Bool). So SciMLBase v3's callback machinery (which now calls the renamed derivative_discontinuity!) dispatches correctly to the SSA integrator path.
  • The generic u_modified!(integrator, true/false) call sites in src/variable_rate.jl / src/aggregators/ssajump.jl / src/aggregators/coevolve.jl still resolve on v3: SciMLBase keeps u_modified! as @deprecate u_modified!(i::DEIntegrator, bool) derivative_discontinuity!(i, bool) (scheduled removal 2028, per the SciMLBase comment). Runtime behavior is unchanged; expect only deprecation warnings, which can be cleaned up as a follow-up by mechanically swapping the remaining generic call sites to derivative_discontinuity!.
  • No call sites for any of the other removed v3/v7 symbols (has_destats, .destats, concrete_solve, fastpow, RECOMPILE_BY_DEFAULT, DEStats, QuadratureProblem, tuples()/intervals(), standalone DEAlgorithm/DEProblem/DESolution).

Test plan

  • Source grep for removed symbols — clean except for the already-handled u_modified! case (covered by the existing v3 guard + the scheduled-2028 SciMLBase deprecate forwarder).
  • CI on this PR — source unchanged, so the currently-registered DiffEqBase 6.x / OrdinaryDiffEq 6.x test path should stay green.
  • OrdinaryDiffEq.jl#3488: Unsatisfiable requirements detected for package JumpProcesses should disappear from MTK / Stoch-Impl test groups once this is registered.

Intentionally out of scope

  • [compat] StochasticDiffEq = "6.82" left alone. It's a test dep of JumpProcesses; doesn't propagate. The monorepo StochasticDiffEq v6.102.0 still satisfies the pin.
  • Mechanical u_modified!derivative_discontinuity! sweep in variable_rate.jl / aggregators/*.jl — belongs in a follow-up once the compat widening is in users' hands.

Co-Authored-By: Chris Rackauckas accounts@chrisrackauckas.com

…de v7/v4

Widens:

- DiffEqBase: "6.192" → "6.192, 7"
- OrdinaryDiffEq: "6" → "6, 7"
- OrdinaryDiffEqCore: "3" → "3, 4"

so JumpProcesses can be installed alongside the v7 release line of the
OrdinaryDiffEq stack (lib/DiffEqBase 7.0.0 + lib/OrdinaryDiffEqCore 4.0.0).
Version bump 9.25.1 → 9.26.0.

Source is already v7/v3-compatible. The `u_modified!` renames were
landed in SciML#579 "Prepare source for SciMLBase v3 and widen compat":

- `SSA_stepper.jl` already defines `DiffEqBase.u_modified!(::SSAIntegrator, ::Bool)`
  and, under a `@static if isdefined(SciMLBase, :derivative_discontinuity!)`
  guard, also defines `SciMLBase.derivative_discontinuity!(::SSAIntegrator, ::Bool)`
  so SciMLBase v3's callback machinery (which calls the new name) dispatches
  correctly.
- The generic `u_modified!(integrator, true/false)` call sites in
  `variable_rate.jl` / `aggregators/ssajump.jl` / `aggregators/coevolve.jl`
  continue to resolve via the SciMLBase v3 `@deprecate u_modified!(i, bool)
  derivative_discontinuity!(i, bool)` — the function still exists on v3,
  it just forwards to the renamed name (scheduled removal 2028 per the
  SciMLBase comment). No runtime breakage; may emit deprecation warnings
  that can be cleaned up in a follow-up if desired.

Motivated by OrdinaryDiffEq.jl#3488 (v7 release branch) where the MTK /
StochasticDiffEq-monorepo test path pulls JumpProcesses in transitively
(via ModelingToolkitBase and StochasticDiffEqImplicit), and resolution
failed with "Unsatisfiable requirements detected for package
JumpProcesses … restricted by compatibility requirements with DiffEqBase
[2b5f629d] to versions: uninstalled" once `lib/DiffEqBase` v7.0.0 was
fixed into the environment.

Test deps (`StochasticDiffEq = "6.82"`) intentionally left alone — the
monorepo's StochasticDiffEq v6.102.0 satisfies it, and StochasticDiffEq
is only a test dep on JumpProcesses (so the cap doesn't propagate to
downstream consumers).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Comment thread Project.toml Outdated
ChrisRackauckas added a commit to SciML/ModelingToolkit.jl that referenced this pull request Apr 22, 2026
Widens compat on both ModelingToolkit.jl (top-level) and
lib/ModelingToolkitBase:

ModelingToolkit 11.21.1 → 11.22.0:
- DiffEqBase: "6.210.0" → "6.210.0, 7"
- OrdinaryDiffEq: "6.82.0" → "6.82.0, 7"
- OrdinaryDiffEqCore: "1.34.0, 2, 3" → "1.34.0, 2, 3, 4"
- SciMLBase: "2.144.0" → "2.144.0, 3"

ModelingToolkitBase 1.30.1 → 1.31.0:
- DiffEqBase: "6.210.0" → "6.210.0, 7"
- RecursiveArrayTools: "3.26" → "3.26, 4"
- SciMLBase: "2.149.0" → "2.149.0, 3"

(DiffEqCallbacks compat on MTKBase was already "2.16, 3, 4" — no change
needed for the DiffEqCallbacks v4 line. ImplicitDiscreteSolve compat is
"0.1.2, 1" and the monorepo's lib/ImplicitDiscreteSolve v1.11.0 satisfies
it, no change needed. JumpProcesses v9.26.0 — per the in-flight
SciML/JumpProcesses.jl#580 compat bump — satisfies the existing "9.23.0"
floor.)

Source grepped clean across `src/` and `ext/` (and `lib/ModelingToolkitBase/src`)
for every symbol removed in the DiffEqBase v7 / SciMLBase v3 breaking notes:
`u_modified!`, `has_destats`, `.destats`, `concrete_solve`, `fastpow`,
`RECOMPILE_BY_DEFAULT`, `DEStats`, `QuadratureProblem`,
`tuples()`/`intervals()`, standalone `DEAlgorithm`/`DEProblem`/`DESolution`.
MTK uses the non-removed forms throughout (`AbstractSciMLProblem`,
`AbstractDEProblem`, `ODEProblem`, etc.).

Motivated by OrdinaryDiffEq.jl#3488 (v7 release branch). Even with
DiffEqCallbacks / DiffEqNoiseProcess / the problem libraries / JumpProcesses
compat widened, MTK and MTKBase were still pinning `DiffEqBase = "6.210.0"`
and `SciMLBase = "2.x"`, which kept the `test (ModelingToolkit, …)`
groups blocked at resolve time.

KNOWN FOLLOWUP (not fixed by this PR): ModelingToolkitTearing
(at JuliaComputing/StateSelection.jl, `lib/ModelingToolkitTearing`) pins
`SciMLBase = "2.108"` and must be widened too before the MTK chain fully
resolves against the v7 stack. That PR has to be opened against the
JuliaComputing repo.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas ChrisRackauckas merged commit d71eb16 into SciML:master Apr 22, 2026
11 of 12 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.

2 participants