Skip to content

Conversation

@ChrisRackauckas-Claude
Copy link
Contributor

This PR fixes incorrect minimum version bounds for three dependencies that were causing compatibility issues.

Summary of Changes

1. RecursiveArrayTools: 33.37

  • Issue: LinearSolve 3.0 requires RecursiveArrayTools 3.37+
  • Impact: The old bound allowed RecursiveArrayTools 3.0-3.36, which are incompatible with LinearSolve 3.x
  • Testing: Verified RecursiveArrayTools 3.37.1 works correctly with all dependencies

2. SimpleDiffEq: 11.11

  • Issue: LinearSolve 3.x requires SimpleDiffEq 1.11+ for compatibility
  • Impact: SimpleDiffEq 1.0-1.10 are incompatible with LinearSolve 3.x (Reexport version conflicts)
  • Testing: Verified SimpleDiffEq 1.11.1 works correctly with LinearSolve 3.x

3. StaticArrays: 11.9

  • Issue: Julia 1.10 requires StaticArrays 1.9+ for proper compilation
  • Impact: StaticArrays 1.0-1.8 fail to precompile on Julia 1.10 (missing require_one_based_indexing)
  • Usage: DiffEqGPU uses features like StaticVecOrMat, LU, StaticLUMatrix, and arithmetic_closure that are available in 1.9+
  • Testing: Verified StaticArrays 1.9.16 works correctly

Testing Methodology

All changes were verified by:

  1. Installing the minimum versions in a clean Julia environment
  2. Testing that DiffEqGPU loads successfully with all minimum versions
  3. Verifying all required StaticArrays features are available
  4. Running comprehensive smoke tests of DiffEqGPU functionality

Why These Bounds Were Wrong

The previous bounds were likely set based on when features were introduced, but didn't account for:

  • Downstream dependency compatibility constraints (LinearSolve requirements)
  • Julia version compatibility requirements (StaticArrays 1.9+ for Julia 1.10)
  • Transitive dependency conflicts (SimpleDiffEq → Reexport compatibility)

Impact

Users who had older versions of these packages installed would encounter:

  • Failed precompilation with StaticArrays < 1.9 on Julia 1.10
  • Package resolution failures with RecursiveArrayTools < 3.37 when using LinearSolve 3
  • Compatibility errors with SimpleDiffEq < 1.11 when using LinearSolve 3

This PR ensures the minimum versions actually work together.

cc @ChrisRackauckas


🤖 Generated with Claude Code

… StaticArrays

The previous minimum version bounds were too low and caused compatibility issues:

1. **RecursiveArrayTools**: Changed from "3" to "3.37"
   - LinearSolve 3.0 requires RecursiveArrayTools 3.37+
   - The old bound "3" allowed RecursiveArrayTools 3.0-3.36, which are incompatible
   - Tested: RecursiveArrayTools 3.37.1 works correctly with all dependencies

2. **SimpleDiffEq**: Changed from "1" to "1.11"
   - LinearSolve 3.x requires SimpleDiffEq 1.11+ for compatibility
   - SimpleDiffEq 1.0-1.10 are incompatible with LinearSolve 3.x
   - Tested: SimpleDiffEq 1.11.1 works correctly with LinearSolve 3.x

3. **StaticArrays**: Changed from "1" to "1.9"
   - Julia 1.10 requires StaticArrays 1.9+ for proper compilation
   - StaticArrays 1.0-1.8 fail to precompile on Julia 1.10
   - DiffEqGPU uses StaticArrays features (StaticVecOrMat, LU, StaticLUMatrix,
     arithmetic_closure) that are available in 1.9+
   - Tested: StaticArrays 1.9.16 works correctly

All changes were verified by:
- Installing the minimum versions in a clean environment
- Testing that DiffEqGPU loads successfully
- Verifying all required features are available
- Running comprehensive smoke tests

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
@ChrisRackauckas ChrisRackauckas merged commit 2e6a690 into SciML:master Jan 12, 2026
7 of 25 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.

3 participants