Skip to content

Raise OrdinaryDiffEqRosenbrock test compat floor to 1.13.0 - #336

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:downgrade-rosenbrock-floor
Aug 8, 2026
Merged

ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:downgrade-rosenbrock-floor

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

What changed and why

OrdinaryDiffEqRosenbrock versions below 1.13.0 do import OrdinaryDiffEqCore: ..., namify, which only ever worked because OrdinaryDiffEqCore itself had using MacroTools in its module body, making MacroTools' namify reachable as OrdinaryDiffEqCore.namify. OrdinaryDiffEqCore 1.27.0 commented that out, so those Rosenbrock versions no longer precompile against any current Core. The declared floor was 1.8.0, so the Downgrade lane pins exactly the broken combination; this raises the floor to the first Rosenbrock release that imports namify from MacroTools directly.

The lane is red on the unmodified default branch

julia-actions/julia-downgrade-compat@v2 moved to 30b83cf ("Lock old-style test dependency floors through Pkg.test") on 2026-07-31. Before that, Pkg.test re-resolved to newest inside its own sandbox, so this lane was green while never testing the declared floors. Latest Downgrade run on master, failing:

https://github.com/SciML/DiffEqCallbacks.jl/actions/runs/31197927448

Its head_sha is e15c274225d84f43b09a30fc8030a25be7f0b90d, which is exactly the current master HEAD this PR branches from — so the red lane is on the unmodified default branch, not on stale code. The log contains Promoted old-style test dependencies into [deps] for locked Pkg.test (post-change tooling), resolves OrdinaryDiffEqRosenbrock v1.8.0 + OrdinaryDiffEqCore v1.32.0, and then:

ERROR: The following 1 direct dependency failed to precompile:
OrdinaryDiffEqRosenbrock
WARNING: could not import OrdinaryDiffEqCore.namify into OrdinaryDiffEqRosenbrock
ERROR: LoadError: UndefVarError: `namify` not defined

Failing before / passing after (local, Julia 1.10.11 = the lane's lts)

Reproduced by doing to Project.toml exactly what the action does — rewriting the [compat] entry to =<floor> — then GROUP=Core Pkg.test():

OrdinaryDiffEqRosenbrock = "=1.8.0" (the current floor), resolving Rosenbrock v1.8.0 + Core v1.36.0:

ERROR: The following 1 direct dependency failed to precompile:
WARNING: could not import OrdinaryDiffEqCore.namify into OrdinaryDiffEqRosenbrock
ERROR: LoadError: UndefVarError: `namify` not defined
ERROR: LoadError: Some tests did not pass: 0 passed, 0 failed, 1 errored, 0 broken.
exit=1

OrdinaryDiffEqRosenbrock = "=1.13.0" (this PR's floor): the suite passes with no namify occurrences anywhere in the log:

Test Summary:                     | Pass  Total  Time
Core/terminatesteadystate_test.jl |   11     11  6.7s
     Testing DiffEqCallbacks tests passed
after-exit=0

Why 1.13.0 is minimal

Scanning every OrdinaryDiffEqRosenbrock-v1.* tag in the OrdinaryDiffEq.jl monorepo for where namify is imported from, there is exactly one transition:

OrdinaryDiffEqRosenbrock-v1.1.0  | namify, initialize!, perform_step!, get_fsalfirstlast,   (i.e. from OrdinaryDiffEqCore)
OrdinaryDiffEqRosenbrock-v1.13.0 | import MacroTools: namify

and the matching change on the Core side:

OrdinaryDiffEqCore-v1.0.0   | using MacroTools, Adapt;
OrdinaryDiffEqCore-v1.27.0  | # MacroTools and Adapt imported but not directly used in OrdinaryDiffEqCore;  # using MacroTools, Adapt;

Confirmed against installed sources by loading each version against newest Core (1.36.0):

Rosenbrock result
1.8.0 UndefVarError: namify not defined
1.12.0 UndefVarError: namify not defined
1.13.0 loads, Core 1.36.0

1.12.0 is 1.13.0's immediate predecessor and fails, so no lower floor works; the , 2 upper branch is unchanged.

Not verified

Only GROUP=Core on Julia 1.10 was run locally, which is the group and Julia version the Downgrade lane uses. I did not run the other test groups (AD, QA), docs, or the non-downgrade CI matrix locally; the PR's own CI covers those.

Please ignore until reviewed by @ChrisRackauckas.

Rosenbrock below 1.13.0 imports namify from OrdinaryDiffEqCore, which only
resolved while Core had 'using MacroTools'; Core 1.27.0 removed that.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
DataInterpolations 5.0.0 returns a Vector{Any} when an interpolation is
called on a range, which makes test/saving_tests.jl hit a sample MethodError.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI on this PR: the Downgrade lane is green — https://github.com/SciML/DiffEqCallbacks.jl/actions/runs/31258771179/job/93106207248 (Downgrade / Downgrade Tests - Core, conclusion success).

Note this took two floor bumps, both in this PR: the OrdinaryDiffEqRosenbrock bump alone left the lane red on a second, independent too-low floor (DataInterpolations 5.0.0 returning Vector{Any} from an interpolation called on a range, producing MethodError: no method matching sample(::IndependentlyLinearizedSolution{Float64, Float64}, ::Vector{Any}, ::Int64) in test/saving_tests.jl), which the second commit fixes. That is the expected shape of a lane that was never actually exercised.

Please ignore until reviewed by @ChrisRackauckas.

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review August 8, 2026 18:40
@ChrisRackauckas
ChrisRackauckas merged commit 91e4462 into SciML:master Aug 8, 2026
18 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