Bump compat for OrdinaryDiffEq v7 / SciMLBase v3 ecosystem#1466
Conversation
|
|
||
| # Solves and checks values of solution (do this before integrator mutation test | ||
| # since integrator mutation affects shared parameter state). | ||
| sol = solve(prob, Tsit5(); maxiters = 10, verbose = false) |
There was a problem hiding this comment.
Is verobes = false now the default for solve?
There was a problem hiding this comment.
No, it doesn't use booleans at all.
|
Please remove format related changes from this PR so we can see a clean diff of what is being changed. Format related changes should be restricted to standalone PRs that do not change any code. |
| du[2] = 0.0 | ||
| du[3] = 0.0 | ||
| du[4] = 0.0 | ||
| return du[4] = 0.0 |
There was a problem hiding this comment.
This and the three subsequent added returns are not correct. If a return is added it should be to return nothing.
There was a problem hiding this comment.
Those return additions came from the Runic-formatting commit in the earlier version of this branch; the rebase flattened that churn out. The current branch adds no return statements anywhere — the only change in hybrid_models.jl now is dropping verbose = false (diff is just those two lines). So this should be resolved; please re-check on 402e15d.
|
The rest is just unlocking the downstream repos. |
|
Why does this require a breaking release and dropping older version support? Is it from |
|
That's just to force the tests forward to ensure nothing is held back. It can be dropped when merging, and would make all go green except the extensions (which seems broken on master?). If you want to merge and continue the extensions separate it can just get pulled back to merge, otherwise it's safe to keep the forced bumps so the tests don't cheat when re-bumping from downstream. |
I'm fine either way with regards to merging, but would prefer we keep releases backwards compatible and avoid a breaking release. I'm not sure what the issue is with extensions. They worked when we last released and we haven't really changed anything here. Did the StructuralIdentifiability issue ever get fixed? |
|
Reverted the forced-bump tightening commit per discussion — restored the lower bounds (legacy major ranges + Catalyst stays at v16.1.1) so this is a non-breaking release. Compat is back to:
Same lower bounds restored in |
The new ecosystem release changed the ensemble `prob_func` signature from `(prob, i, repeat)` to `(prob, ctx::EnsembleContext)` (no deprecation shim). Update FlowDE.jl's three `_prob_func` definitions to accept either signature: detect whether the second arg is an Integer (v1/v2) or an EnsembleContext (v3) and extract the trajectory index accordingly. `output_func` was already using a 2-arg signature `(sol, i)` whose unused `i` is benignly replaced by the context object on v3, so no change there beyond renaming the throwaway parameter. Compat: - SciMLBase: "^1, ^2" → "^1, ^2, 3" Verified locally: BifurcationKit precompiles and loads against SciMLBase v3.9.1, RecursiveArrayTools v4.x, DiffEqBase v7.x. Context: this unblocks Catalyst v17's Extensions tests (SciML/Catalyst.jl#1466) and any other downstream user that wants BifurcationKit alongside the v7 ecosystem. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
2fcadf2 to
13478ef
Compare
Rebased onto current
|
| Package | Resolved | Package | Resolved | |
|---|---|---|---|---|
| SciMLBase | 3.16.0 | OrdinaryDiffEqCore | 4.3.0 | |
| DiffEqBase | 7.5.3 | OrdinaryDiffEq{Tsit5,BDF,Default,Rosenbrock,Verner,NLSolve} | 2.x | |
| RecursiveArrayTools | 4.3.0 | StochasticDiffEq | 7.0.0 | |
| ModelingToolkitBase | 1.41.0 | JumpProcesses | 9.29.0 |
MTKBase, JumpProcesses, DiffEqCallbacks, NonlinearSolve, SteadyStateDiffEq, Symbolics, etc. already permit SciMLBase v3 / OrdinaryDiffEq v7, so the compat relaxations here are sufficient on their own — no upstream PR is required to unblock CI.
Local test results (all green)
Ran each CI group against the resolved v7/v3 environment (Pkg.test-equivalent sandbox: package [deps] + test [targets]):
| Group | Julia 1.10 (lts) | Julia 1.12 ("1") |
|---|---|---|
| Modeling | ✅ | — |
| Simulation | ✅ | ✅ |
| Hybrid | ✅ | ✅ |
| Misc | ✅ | — |
| Spatial | ✅ | ✅ |
Migration-affected groups (Simulation, Hybrid, Spatial) verified on both channels; Modeling/Misc verified on lts. Zero failures; the only Broken entries are pre-existing @test_brokens. The three migrations all exercise correctly:
SciMLBase.unwrapped_finrebuild_spat_internals!(v7 wrapsfin aFunctionWrappersWrapper) — Spatial passes.SymbolicIndexingInterface.setpfor jump callback param updates — Simulation/simulate_jumpspasses.- iterating
EnsembleSolution.u(RAT v4 makes it anAbstractArray) — Simulation/simulate_SDEspasses. - dropping
verbose = false— Hybrid passes.
Formatting
The four changed .jl files are format-neutral: Runic-normalizing both master and this branch leaves exactly the four intended migrations as the only diff. (Whole-file Runic v1.7.0 reports churn on pre-existing, untouched lines — a Runic-version question for master, not this PR — so those untouched lines were deliberately left alone.)
Please ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code
|
There is some discussion here: SciML/OrdinaryDiffEq.jl#3667 (comment) which might affect how we want to do this, will have a look once I have a better idea of that (or next week if that delays) |
Old-major (downgrade) verification + Extensions triageFollowing up to confirm the lower half of the dual compat ranges (the legacy Old majors actually resolve, despite the MTKBase floor
All five groups pass on the old majors (Julia 1.10)
All four migrations are backward-compatible: Extensions Tests failure is pre-existing and orthogonal — not from this PR
Net: this PR is non-breaking on both ends of the compat ranges. The remaining red 🤖 Generated with Claude Code |
There was a problem hiding this comment.
Should these actually have compat entries? I was mimicking other SciML repos in not having them here.
There was a problem hiding this comment.
Good call — removed (force-pushed 402e15d), so test/extensions/Project.toml now matches master. I'd added them reflexively while mirroring the other Project.tomls, but they're inert here: the extensions env can't reach OrdinaryDiffEq v2 anyway (BifurcationKit/HomotopyContinuation/StructuralIdentifiability cap SciMLBase at v2, so the solvers resolve to v1 — Tsit5 1.12.0, Default 1.14.0, Verner 1.14.0). I confirmed the resolved versions are identical with and without the [compat] block.
There was a problem hiding this comment.
Other than the extension Project.toml getting combat entries suddenly this looks fine. I agree the extension test failures are preexisting and due to SI still not having a fix for handling the range parameter types in current MTK that broke in that earlier version.
Relax compat to allow the OrdinaryDiffEq v7 / SciMLBase v3 ecosystem release alongside the existing v1/v2/v6 ranges (non-breaking): DiffEqBase 6.165.0 -> 6.165.0, 7 OrdinaryDiffEqBDF (none) -> 1, 2 OrdinaryDiffEqCore 3.22 -> 3.22, 4 OrdinaryDiffEqDefault (none) -> 1, 2 OrdinaryDiffEqRosenbrock (none) -> 1, 2 OrdinaryDiffEqTsit5 (none) -> 1, 2 OrdinaryDiffEqVerner (none) -> 1, 2 SciMLBase 2.84 -> 2.84, 3 StochasticDiffEq 6.101 -> 6.101, 7 Mirrored in docs/Project.toml (incl. OrdinaryDiffEqNonlinearSolve and OrdinaryDiffEqSDIRK). Source/test migrations required by the major bumps: * Spatial: unwrap the ODEFunction with SciMLBase.unwrapped_f before reaching for the LatticeTransportODEFunction functor, since v7 wraps f in a FunctionWrappersWrapper. * simulate_jumps: use SymbolicIndexingInterface.setp for callback parameter updates instead of integrator.ps[sym] = val. * simulate_SDEs: iterate ensemble_sol.u (RecursiveArrayTools v4 makes EnsembleSolution an AbstractArray, so iterating the solution now yields scalars). * hybrid_models: drop verbose = false (Bool no longer accepted). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
13478ef to
402e15d
Compare
|
Handled. |
| # Solves and checks values of solution (do this before integrator mutation test | ||
| # since integrator mutation affects shared parameter state). | ||
| sol = solve(prob, Tsit5(); maxiters = 10, verbose = false) | ||
| sol = solve(prob, Tsit5(); maxiters = 10) |
There was a problem hiding this comment.
I am still confussed here, verbose = false (or whatever is the new syntax) is not the default, right? I.e. we would need to put whatever is the new thing here?
There was a problem hiding this comment.
verbose = DEVerbosity(SciMLLogging.None())
There was a problem hiding this comment.
That's if you want literally everything off, though it's probably not a good idea to always do that 😅
There was a problem hiding this comment.
To be honest, not sure what the intention is for these tests, I didn't write them
There was a problem hiding this comment.
I don't think it needs verbosity turned off.
|
Well new docs are blocked by this PR still. |
|
Yeah, but don't we want to suet he new syntax in the docs? Or do we just handle that in a follow-up PR? |
|
The new docs won't build until Catalyst lets it. |
TorkelE
left a comment
There was a problem hiding this comment.
Ok, sounds good, happy to merge and handle anything else in follow-ups

Summary
Cascade the major-version compat relaxations required by the OrdinaryDiffEq v7 / SciMLBase v3 ecosystem release:
Compat changes
"1""1, 2""3.22""3.22, 4""1""1, 2""1""1, 2""1"(docs only)"1, 2""1""1, 2""1""1, 2""2.84""2.84, 3""6.101""6.101, 7"Applied to:
Project.toml,docs/Project.toml,test/extensions/Project.toml.Source migrations
Two breaking-change sites were found and fixed:
verbose = falseremoved (test/simulation_and_solving/hybrid_models.jl):In v7,
Boolis no longer accepted for theverbosekwarg — must useODEVerbosity(...). Since these calls were only suppressing output in tests, the kwarg was removed.EnsembleSolution iteration (
test/simulation_and_solving/simulate_SDEs.jl):RAT v4 (
RecursiveArrayTools v4, part of SciMLBase v3) changedEnsembleSolutionto subtypeAbstractArray, sofor sol in ensemble_solnow iterates over scalar elements rather than trajectory solutions. Fixed by iteratingensemble_sol.uinstead.Test plan
OrdinaryDiffEqTsit5 v2,OrdinaryDiffEqRosenbrock v2,OrdinaryDiffEqBDF v2,OrdinaryDiffEqDefault v2,OrdinaryDiffEqVerner v2,StochasticDiffEq v7,SciMLBase v3🤖 Generated with Claude Code