Bump RecursiveArrayTools / SciMLBase compat to include v4 / v3#361
Merged
ChrisRackauckas merged 1 commit intoSciML:mainfrom Apr 22, 2026
Merged
Conversation
Widen the weak-dep compat lines so ComponentArrays can be loaded alongside
RAT v4 and SciMLBase v3 (shipping with OrdinaryDiffEq v7):
- RecursiveArrayTools: "3.8" → "3.8, 4"
- SciMLBase: "2" → "2, 3"
Version bump 0.15.36 → 0.15.37.
Both ext shims are source-level compatible with the new majors:
- `ext/ComponentArraysRecursiveArrayToolsExt.jl` defines a single
`Base.Array(VA::AVOA{T, N, <:AbstractVector{<:ComponentVector}})` that
only touches `VA.u` / `getaxes(VA.u[1])` / `reduce(hcat, VA.u)`. None
of those are affected by the RAT v4 `AbstractVectorOfArray <: AbstractArray`
change (which rebinds `sol[i]` / `length(sol)` / `eachindex(sol)` /
`iterate(sol)` / etc. at the top-level AbstractArray interface; the
underlying `.u` field stays a plain `Vector`).
- `ext/ComponentArraysSciMLBaseExt.jl` defines
`SciMLBase.getsyms(sol::AbstractODESolution{T,N,<:AbstractVector{<:ComponentArray}})`
and calls `SciMLBase.has_syms(sol.prob.f)` / `sol.prob.f.syms`. Both
`getsyms` and `has_syms` remain present and exported from SciMLBase v3
(verified against `src/symbolic_utils.jl` / `src/scimlfunctions.jl` on
master). The `f.syms` field is still on `AbstractSciMLFunction`
subtypes; only the `syms` / `paramsyms` / `indepsym` **kwargs** on the
SciMLFunction constructors were removed in v3, not the fields
themselves.
Motivated by SciML/OrdinaryDiffEq.jl#3488: `test (OrdinaryDiffEqDifferentiation_Sparse, 1)`
and other downstream jobs hit "empty intersection" / "no versions left"
resolver errors because ComponentArrays' RAT-v4 cap excludes the version
the monorepo now ships.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Widen the weak-dep compat so ComponentArrays can load alongside the RAT v4 / SciMLBase v3 stack that ships with OrdinaryDiffEq v7:
RecursiveArrayTools: "3.8"→"3.8, 4"SciMLBase: "2"→"2, 3"Version bump 0.15.36 → 0.15.37.
Why this is source-level safe
ext/ComponentArraysRecursiveArrayToolsExt.jlSingle method:
Base.Array(VA::AVOA{T, N, <:AbstractVector{<:ComponentVector}})that only touchesVA.u/getaxes(VA.u[1])/reduce(hcat, VA.u). None of those are affected by the RAT v4AbstractVectorOfArray <: AbstractArraychange — that change rebinds top-levelsol[i]/length(sol)/eachindex(sol)/iterate(sol)semantics, but the underlying.ufield stays a plainVectorand behaves identically.ext/ComponentArraysSciMLBaseExt.jlDefines
SciMLBase.getsyms(sol::AbstractODESolution{T, N, <:AbstractVector{<:ComponentArray}})and callsSciMLBase.has_syms(sol.prob.f)+sol.prob.f.syms. Bothgetsymsandhas_symsremain present on SciMLBase v3 (verified againstsrc/symbolic_utils.jl+src/scimlfunctions.jlon master). Thef.symsfield is still onAbstractSciMLFunctionsubtypes — only thesyms/paramsyms/indepsymkwargs on the SciMLFunction constructors were removed in v3, not the fields themselves.Motivation
On SciML/OrdinaryDiffEq.jl#3488 (the v7 release branch),
test (OrdinaryDiffEqDifferentiation_Sparse, 1)and other downstream jobs hitUnsatisfiable requirements detected/empty intersectionbecause ComponentArrays' RAT-v4 cap excludes the version the monorepo path-sources. This PR unblocks those.Part of the broader v7 compat-widening set alongside the previous batch (DiffEqCallbacks#303, DiffEqNoiseProcess#271, DiffEqProblemLibrary#182, JumpProcesses#580, ModelingToolkit#4467, StateSelection#71, ParameterizedFunctions#151, SciMLSensitivity#1431, Sundials#526, ODEInterfaceDiffEq#95, DiffEqFinancial#68, DiffEqPhysics#107, MethodOfLines#552, Catalyst#1463, LSODA#79, MultiScaleArrays#129).
Co-Authored-By: Chris Rackauckas accounts@chrisrackauckas.com