SciML / SciML/LabelledArrays.jl

Downgrade CI: no Julia-1.10 [compat] floor set that resolves AND passes (DiffEq/SLArray AD test stack co-evolution)

Open
#199 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Julia
Stars
125
Forks
20
Avg merge
6h 3m
Merged PRs (30d)
10

Description

Investigated re-enabling the disabled downgrade workflow (verified locally, Julia 1.10.11, isolated depot). The existing if: false comment is substantively correct: there is no low [compat] floor set that both resolves and passes on Julia 1.10. The SLArrays(48) and LArrays testsets pass; only the DiffEq testset (which AD-differentiates SLArrays through the full OrdinaryDiffEq/SciMLBase/RecursiveArrayTools/NonlinearSolve stack) can't be satisfied.

Resolution-floor bumps that ARE genuinely needed (and correct): ForwardDiff 0.10.3→0.10.13 (StaticArrays 1.0 needs ≥0.10.13), OrdinaryDiffEq 6→6.62.0 (first allowing RAT 3.x), PreallocationTools 0.4→0.4.6 (enlargediffcache!), RecursiveArrayTools 3.1→3.2.0 (_getindex), ChainRulesCore→1.18, ArrayInterface→7.6, PrecompileTools→1.2, MacroTools→0.5.5.

But even then, three genuine blockers remain (none fixable by a floor bump):

  1. StaticArrays pinned at floor 1.0.0 caps SciMLBase ≤3.15.0; RAT 3.1 forces SciMLBase into 2.11–2.15.2 → SciMLBase 2.15.2 calls RecursiveArrayTools._getindex (absent <3.2.0) → UndefVarError: _getindex precompiling SciMLBase.
  2. With RAT 3.2.0, the DiffEq solve fails at runtime: FirstAutodiffJacErrortype SArray has no field y (derivative_wrappers.jl:198, ODE 6.62) — the SLArray labels are lost through the ForwardDiff Jacobian path. RAT 3.2.0 also hits Method overwriting is not permitted on ldiv!(A::T,b) where T<:Union{} (array_partition.jl:431).
  3. Raising StaticArrays above 1.0 (the real intent) cascades: StaticArrays 1.5.0 fails to precompile on Julia 1.10 (UndefVarError: require_one_based_indexing); pinning ~1.4 shifts SciMLBase 2.77 / ODE 6.87 / RAT 3.50 / NonlinearSolve into further precompile errors (AbstractNonlinearTerminationMode not defined). The floors don't compose into a consistent precompilable set on 1.10.

Maintainer options: (a) move the heavy DiffEq/SLArray AD integration test into a group NOT run at downgrade (keep SLArrays/LArrays in downgrade); (b) coordinate a stack-floor raise that's actually consistent+precompilable on 1.10 (non-trivial given StaticArrays 1.5 precompile breakage on 1.10); or (c) leave downgrade disabled. No tests were loosened; no PR opened.

From the SciML downgrade re-enablement pass.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the disabled downgrade workflow and its DiffEq testset, reproducing it on Julia 1.10.11 with an isolated depot. Inspect derivative_wrappers.jl:198 and array_partition.jl:431 alongside the listed dependency floors. Done requires a maintainer-selected resolution—moving the integration test, coordinating compatible floors, or leaving downgrade disabled—with the resulting workflow behavior documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
ci-cd, testing
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.