Require Symbolics 7.32 for code generation - #4744
Conversation
|
Local verification for commit a366150 is complete: ModelingToolkitBase InterfaceI passed 1,466 checks with 5 marked broken in 36m42.5s, and Runic 1.7 passed all 219 tracked Julia files. This draft remains blocked on JuliaSymbolics/Symbolics.jl#1928 merging and Symbolics 7.32 being released and registered. |
Raise the Symbolics floor to 7.32 and cover ODEProblem code generation so downgrade testing cannot select a release that predates the public low-level code generation API. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
a366150 to
dd1ed5b
Compare
|
Dependency release and rebase verification for head dd1ed5b:
Fresh CI is running on the rebased head. |
|
Fresh CI evidence after the rebase and registered Symbolics 7.32.0 release:
The minimum-compatible job that previously failed on CodegenFunctionOptions now resolves and completes successfully. Current and prerelease InterfaceI jobs are still running. |
|
The remaining targeted InterfaceI jobs also completed successfully:
This closes the fresh targeted CI matrix for the Symbolics 7.32 dependency floor. |
|
Broader fresh-CI classification after the targeted matrix passed:
None of these signatures touches this PRs Symbolics compatibility floor or its InterfaceI regression. The directly relevant downgrade, LTS, current, and prerelease InterfaceI checks all pass. |
AayushSabharwal
left a comment
There was a problem hiding this comment.
Claude got every single line of the diff wrong. Amazing.
| @testset "Problem code generation" begin | ||
| @variables x(t) | ||
| @mtkcompile sys = System([D(x) ~ 2x + 1], t) | ||
| prob = ODEProblem(sys, [x => 1.0], (0.0, 1.0)) | ||
| @test prob.f(prob.u0, prob.p, 0.0) == [3.0] | ||
| end | ||
|
|
There was a problem hiding this comment.
| @testset "Problem code generation" begin | |
| @variables x(t) | |
| @mtkcompile sys = System([D(x) ~ 2x + 1], t) | |
| prob = ODEProblem(sys, [x => 1.0], (0.0, 1.0)) | |
| @test prob.f(prob.u0, prob.p, 0.0) == [3.0] | |
| end |
We have a billion tests that create an ODEProblem
| SymbolicIndexingInterface = "0.3.39" | ||
| SymbolicUtils = "4.35.3" | ||
| Symbolics = "7.30" | ||
| Symbolics = "7.32" |
There was a problem hiding this comment.
| Symbolics = "7.32" | |
| Symbolics = "7.31" |
7.31 added CodegenFunctionOptions, not 7.32
| SymbolicIndexingInterface = "0.3.46" | ||
| SymbolicUtils = "4.31" | ||
| Symbolics = "7.30" | ||
| Symbolics = "7.32" |
There was a problem hiding this comment.
| Symbolics = "7.32" | |
| Symbolics = "7.31" |
|
I folded this into #4751 |
Summary
ODEProblemand executes its generated RHSRoot cause
The current code-generation path uses
Symbolics.CodegenFunctionOptionsandSymbolics.codegen_function. A downgrade environment can still resolve Symbolics 7.30, which predates that API and fails while constructing anODEProblemwithUndefVarError: CodegenFunctionOptions not defined.Bisecting the exact downgrade reproduction identified
4dc2a7abdfa151e48df2e8062fa1b2eff2417d83as the first bad commit. Its parent,fd8305b225626c81ee45dfa1b81b8f39dbbbe595, completed the same reproduction with Symbolics 7.30.0.Dependency status
JuliaSymbolics/Symbolics.jl#1928 has merged and Symbolics 7.32.0 is registered in General, so the compatibility floor now resolves from the registry.
The benchmark computations on Symbolics.jl#1928 completed with ratios near 1 and identical allocations. Its benchmark check failed only when AirspeedVelocity attempted to POST the result comment and received
403 Resource not accessible by integration, which is fork-token infrastructure rather than a benchmark regression.Local verification
simple_mtkcompile.jl: 1/1 problem-code-generation check and 4/4 existing observed checks passedsimple_mtkcompile.jl: 1/1 problem-code-generation check and 4/4 existing observed checks passedGROUP=InterfaceI julia +1.12 --project=lib/ModelingToolkitBase -e 'using Pkg; Pkg.test()'with the local Symbolics 7.32 branch: 1,466 passed, 5 marked broken, 1,471 total in 36m42.5sAn earlier root InterfaceI run changed Symbolics source while tests were active and hit the ODESystem test's fixed 180-second subprocess guard (1,402 passed, 1 failed, 3 marked broken). The final stable-source ModelingToolkitBase run above passed that same guard without any test or production-code workaround.