Skip to content

Support SciMLBase v3#93

Merged
ChrisRackauckas merged 1 commit intoSciML:masterfrom
ChrisRackauckas-Claude:sciml-base-v3-compat
Apr 13, 2026
Merged

Support SciMLBase v3#93
ChrisRackauckas merged 1 commit intoSciML:masterfrom
ChrisRackauckas-Claude:sciml-base-v3-compat

Conversation

@ChrisRackauckas-Claude
Copy link
Copy Markdown
Contributor

Summary

Courtesy PR for the SciMLBase v3 release.

  • Extend SciMLBase compat to "1.73, 2, 3.1" (keep existing lower bound and v2 support).
  • Bump version to 3.18.0.
  • Add a SciMLBase.derivative_discontinuity!(::ODEInterfaceIntegrator, ::Bool) overload in src/integrator_utils.jl alongside the existing DiffEqBase.u_modified! method, guarded by @static if isdefined(SciMLBase, :derivative_discontinuity!).

SciMLBase v3 renamed u_modified!derivative_discontinuity! with an @deprecate shim on the old name (src/integrator_interface.jl:242 in SciMLBase). The existing u_modified! overload for ODEInterfaceIntegrator still dispatches for legacy callers, but any caller migrated to the new name would otherwise hit the generic error("method has not been implemented for the integrator") fallback. The isdefined guard keeps the file compiling on SciMLBase v2.

Known limitation

Local tests cannot be run: Pkg.resolve() fails on any env containing SciMLBase 3.1 because OrdinaryDiffEq in the registry still pins RecursiveArrayTools ≤ 3.54. Expect CI to fail at the Pkg.add step until upstream bumps.

Reference pattern

Same @static if isdefined(SciMLBase, :derivative_discontinuity!) shim used in SciML/DiffEqCallbacks.jl#300.

cc @ChrisRackauckas

🤖 Generated with Claude Code

- Extend `SciMLBase` compat to `"1.73, 2, 3.1"` (keep v2 support).
- Bump version to 3.18.0.
- Add a `SciMLBase.derivative_discontinuity!(::ODEInterfaceIntegrator, ::Bool)`
  overload alongside the existing `DiffEqBase.u_modified!` method, guarded
  by `@static if isdefined(SciMLBase, :derivative_discontinuity!)`.

SciMLBase v3 renamed `u_modified!` → `derivative_discontinuity!` with an
`@deprecate` shim on the old name. The existing `u_modified!` overload for
`ODEInterfaceIntegrator` still dispatches for legacy callers, but any
caller that has migrated to the new name would hit the generic
`error("method has not been implemented for the integrator")` fallback —
the new method closes that gap. The `isdefined` guard keeps the file
compiling on SciMLBase v2.

Note: local tests cannot be run — `Pkg.resolve()` fails for any env
containing SciMLBase 3.1 because OrdinaryDiffEq in the registry still
pins `RecursiveArrayTools ≤ 3.54`. CI will reproduce the same resolution
error until upstream bumps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas ChrisRackauckas merged commit 92b1b33 into SciML:master Apr 13, 2026
4 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