Repository navigation
Keep the JET solver-path QA checks live on Julia 1.13 - #373
Merged
ChrisRackauckas merged 2 commits intoSep 13, 2026
Merged
Conversation
On Julia 1.13, JET's opt-mode analyzer misinterprets the optimized IR and reports runtime dispatch on code whose native inference is fully concrete (verified via `Base.return_types` on `init`, `solve`, and the `transformation_if_inf`/`substitute_u`/`remake` frames on both 1.12 and 1.13). JET 0.11.6 emits the false-positive RuntimeDispatchReports seen in the QA job; JET 0.12+ crashes outright on `Base.BottomRF` nodes in the same analysis (aviatesk/JET.jl#863). Marking `broken = VERSION >= v"1.13"` keeps the assertions running and reporting on 1.13 — an expected-broken that flips to unexpected-pass once a fixed JET release lands — instead of silently dropping the checks. The four opt-mode testsets that still pass on 1.13 remain strict. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Devin <noreply@cognition.ai> Agent-Harness: Devin CLI Agent-Model: SWE-2 Max Agent-Session: /home/crackauc/.local/share/devin/cli/summaries/history_d0e0e74010b34bc5.md
ChrisRackauckas-Claude
force-pushed
the
devin/jet-opt-113
branch
from
September 12, 2026 21:46
97faaf0 to
11e6918
Compare
Member
Author
|
CI note: the |
Replace the `broken = VERSION >= v"1.13"` assertions with per-version
checks: the JET opt-mode bounds still run unchanged on Julia < 1.13,
while on 1.13+ the same solver paths are checked with JET's call
analyzer (unoptimized-IR method errors, unaffected by the 1.13 IR
change) plus a native `Base.return_types` assertion that the solve
inferred to `IntegralSolution{Float64}`.
Verified locally: the JET opt-mode testset passes 8/8 on Julia 1.13.0
and 6/6 on Julia 1.12.7.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Devin <noreply@cognition.ai>
Agent-Harness: Devin CLI
Agent-Model: SWE-2 Max
Agent-Session: /home/crackauc/.local/share/devin/cli/summaries/history_049e4e367a5d4d70.md
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
The
JET opt-mode solver pathstestset intest/qa/qa.jlfails on Julia 1.13 forHCubatureJL(expects 0 reports, gets 7) andVEGAS(expects ≤2, gets more). Investigation shows this is a JET-on-1.13 analyzer bug, not an Integrals defect:solve(prob, HCubatureJL())is identical on 1.12.7 and 1.13.0 (code_typed(...; optimize = true)): same inferred return type, and none of the widened types JET reports (e.g.Union{Vector{Float64}, Vector{Int64}, Vector{Real}}) appear anywhere in Base's IR. The widening exists only inside JET's own re-analysis.RuntimeDispatchReports — the same class documented upstream in False-positive runtime dispatch reports on Julia 1.13-rc1 for concrete Base broadcast/view/CartesianIndex code (clean on 1.12) aviatesk/JET.jl#839.typeof_argdoes not support theBase.BottomRFnodes that 1.13's optimizer emits forprod/mapfoldlreductions. Filed upstream as @report_opt crashes on Julia 1.13: typeof_arg does not support Base.BottomRF in optimized IR aviatesk/JET.jl#863 with a reproducer.This PR keeps the checks live on every Julia version instead of marking them broken:
@report_optbounds (0 reports forHCubatureJL, ≤2 forVEGAS) still run.VERSION < v"1.13.0-"): the same solver calls are checked with@report_call— JET's call analyzer over unoptimized IR, which is unaffected by the optimized-IR issue and catches method errors / undefined-variable defects through the whole path — plus a native-inference assertion thatsolveinfers toSciMLBase.IntegralSolution{Float64}.The four opt-mode testsets that still pass on 1.13 (
QuadGKJL,SampledIntegralProblem×2, scalar infinite bounds) are left strict on all versions.Alternatives considered
broken = VERSION >= v"1.13": silences the only coverage on these paths for every 1.13.x release — a real method error or inference regression would go unnoticed until JET is fixed upstream. Rejected in favor of live checks.substitute_u/substitute_vto dodge JET's widening: JET then reports deeper artifacts (it widens HCubature's integration point toUnion{BitVector, Vector}, making the transformed-integrand closureAnyinternally). Not bounded or fixable package-side.Test plan
JET opt-mode solver pathstestset on Julia 1.13.0 + JET 0.11.6: 8/8 pass on the new branch (@report_callclean, return-type assertions hold)Base.code_typedonsolve(prob, HCubatureJL())is identical on 1.12.7 and 1.13.0 — theUnion{Vector{Float64}, Vector{Int64}, Vector{Real}}JET reports is absent from Base IRrunicclean ontest/qa/qa.jl🤖 Generated with Devin (model: SWE-2 Max)
Session: local transcript — /home/crackauc/.local/share/devin/cli/summaries/history_049e4e367a5d4d70.md (no shareable URL for this harness)