Skip to content

Raise downgrade floors in ModelingToolkitBase (FunctionWrappers/ImplicitDiscreteSolve/OffsetArrays/BipartiteGraphs)#4677

Merged
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:downgrade-fix-fww-ids-floors
Jun 28, 2026
Merged

Raise downgrade floors in ModelingToolkitBase (FunctionWrappers/ImplicitDiscreteSolve/OffsetArrays/BipartiteGraphs)#4677
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:downgrade-fix-fww-ids-floors

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Summary

The Downgrade and DowngradeSublibraries lanes are red on master. Both fail at the minimum-version floors: several lib/ModelingToolkitBase dependencies resolve below the version where the API that ModelingToolkitBase actually uses exists, so precompile dies.

This PR raises four [compat] lower bounds in lib/ModelingToolkitBase/Project.toml to the minimal versions that actually work.

Root causes (each reproduced + fixed locally on Julia 1.10 / lts)

Dep Old floor New floor Why
FunctionWrappers 1.1 1.1.2 FunctionWrappers 1.1.0/1.1.1 produce Module IR does not contain specified entry function when FunctionWrappersWrappers' @compile_workload runs. Isolated: FWW 1.0.0 + FW 1.1.1 → FAIL; FWW 1.0.0 + FW 1.1.2 → OK. The fix is in FunctionWrappers, not FWW.
ImplicitDiscreteSolve 0.1.2, 1, 2 0.1.2, 1, 2.1.2 IDS 2.1.0/2.1.1 reference the two-param OrdinaryDiffEqCore.CommonControllerOptions{T, NLPType} in controller.jl:50 but had a too-loose OrdinaryDiffEqCore compat (4.1.0 - 4), allowing OrdinaryDiffEqCore 4.3.0 where that type has only one parameter → too many parameters for type. IDS 2.1.2 raised its own OrdinaryDiffEqCore floor to 4.4.0 (where the 2nd param exists). This was the Downgrade / InterfaceI failure.
OffsetArrays 1 1.3.0 OffsetArrays.Origin (used in @recompile_invalidations) was added in 1.3.0; the downgrade picked 1.0.1 → UndefVarError: Origin not defined.
BipartiteGraphs 0.1.0 0.1.3 BipartiteGraphs.HyperGraph (used in systems/connectiongraph.jl) was added in 0.1.3; the downgrade picked 0.1.1 → UndefVarError: HyperGraph not defined.

Verification

On Julia 1.10 (lts), ran julia-actions/julia-downgrade-compat's downgrade.jl at the new floors and precompiled:

  • DowngradeSublibraries (lib/ModelingToolkitBase): resolves to FunctionWrappers 1.1.3, OffsetArrays 1.3.0, BipartiteGraphs 0.1.4, ImplicitDiscreteSolve 2.1.2 / OrdinaryDiffEqCore 4.5.0; ModelingToolkitBase precompiles + loads cleanly.
  • InterfaceI (root .): root min-resolution lands on ImplicitDiscreteSolve 2.0.0 (old single-param controller, no error) + OrdinaryDiffEqCore 4.0.0; ModelingToolkitBase precompiles + loads cleanly in the root downgrade graph.

Only lib/ModelingToolkitBase/Project.toml is changed (no Manifest, no source).


Please ignore until reviewed by @ChrisRackauckas.

The Downgrade lanes failed at the min-version floors because several
deps resolved below the version where the API actually used by
ModelingToolkitBase exists:

- FunctionWrappers 1.1.2: 1.1.0/1.1.1 produce "Module IR does not
  contain specified entry function" when precompiling
  FunctionWrappersWrappers' compile workload; fixed in 1.1.2.
- ImplicitDiscreteSolve 2.1.2: 2.1.0/2.1.1 reference the two-parameter
  OrdinaryDiffEqCore.CommonControllerOptions{T, NLPType} in controller.jl
  but allowed OrdinaryDiffEqCore as low as 4.1, where that type has one
  parameter, giving "too many parameters for type". 2.1.2 raised its
  own OrdinaryDiffEqCore floor to 4.4.0.
- OffsetArrays 1.3.0: OffsetArrays.Origin (used in @recompile_invalidations)
  was added in 1.3.0.
- BipartiteGraphs 0.1.3: BipartiteGraphs.HyperGraph (used in
  connectiongraph.jl) was added in 0.1.3.

Verified on Julia 1.10 (lts) by running julia-downgrade-compat's
downgrade.jl at the new floors and precompiling: ModelingToolkitBase
loads cleanly for both the sublibrary downgrade (DowngradeSublibraries)
and the root downgrade graph (InterfaceI).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 28, 2026 20:36
@ChrisRackauckas ChrisRackauckas merged commit 8cb5272 into SciML:master Jun 28, 2026
68 of 89 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