Bump RecursiveArrayTools and SciMLBase compat to also allow 4 / 3#214
Merged
MilesCranmer merged 1 commit intoApr 22, 2026
Merged
Conversation
`DynamicQuantitiesRecursiveArrayToolsExt` and `DynamicQuantitiesSciMLBaseExt` were added in JuliaPhysics#201 with `RecursiveArrayTools = "3"` / `SciMLBase = "2"` in compat. The SciML ecosystem has since moved to RecursiveArrayTools 4 and SciMLBase 3, which forces Pkg to resolve DynamicQuantities back to v1.11.0 (the last version without the weak-dep constraint) in any environment pulling recent DifferentialEquations. That in turn means neither extension loads and downstream solvers trip over `zero(::Type{<:Quantity})` / `recursive_unitless_bottom_eltype(::Type{<:Quantity})` returning a still-unitful type. The extensions touch only `SciMLBase.value` / `unitfulvalue` and `RecursiveArrayTools.recursive_unitless_(bottom_)eltype` — all stable APIs across these major versions. Verified: `test/test_sciml.jl` passes on a fork that pulls `RecursiveArrayTools v4.2.0` and `SciMLBase v3.3.0`. This lets downstream packages (OrdinaryDiffEq.jl in particular — see SciML/OrdinaryDiffEq.jl#3493) drop their in-tree DQ-wrapper-stripping workarounds once a DQ patch with this bump is released. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Contributor
Benchmark Results (Julia v1.10)Time benchmarks
Memory benchmarks
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #214 +/- ##
=======================================
Coverage 99.15% 99.15%
=======================================
Files 23 23
Lines 1305 1305
=======================================
Hits 1294 1294
Misses 11 11 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Contributor
Benchmark Results (Julia v1)Time benchmarks
Memory benchmarks
|
Contributor
|
Thanks! |
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
DynamicQuantitiesRecursiveArrayToolsExtandDynamicQuantitiesSciMLBaseExtwere introduced in #201 withRecursiveArrayTools = "3"/SciMLBase = "2"in compat. The SciML ecosystem has since moved to RecursiveArrayTools 4 and SciMLBase 3, which forces Pkg to resolve DynamicQuantities back to v1.11.0 (the last version without the weak-dep constraint) in any environment that pulls recent DifferentialEquations / OrdinaryDiffEq. That means neither SciML-facing extension loads, and downstream solvers trip over things likezero(::Type{<:Quantity})andrecursive_unitless_bottom_eltype(::Type{<:Quantity})returning a still-unitful type.Change
The extension code only touches stable public APIs across these major versions:
SciMLBase.value,SciMLBase.unitfulvalue— unchanged surface in SciMLBase 3.RecursiveArrayTools.recursive_unitless_eltype,recursive_unitless_bottom_eltype— unchanged in RAT 4.Verification
Ran
test/test_sciml.jllocally on a fork with:Downstream motivation
This unblocks SciML/OrdinaryDiffEq.jl#3493, which is currently carrying duplicate overrides in
DiffEqBaseDynamicQuantitiesExt.jlforSciMLBase.value,SciMLBase.unitfulvalue,RecursiveArrayTools.recursive_unitless_bottom_eltype, andrecursive_unitless_eltype— exactly the methods this package already defines — purely because Pkg can't pick up the extension-carrying version. Once a patch release with this bump is out, those workarounds can be removed.Test plan
test/test_sciml.jlpasses under RAT 4 + SciMLBase 3