Skip to content

test/quality/jet.jl: JET report_opt on the allocation-tested hot paths (part J10) - #29

Merged
michakraus merged 4 commits into
mainfrom
test-suites/part-j10
Sep 28, 2026
Merged

michakraus merged 4 commits into
mainfrom
test-suites/part-j10

Conversation

@michakraus

Copy link
Copy Markdown
Member

Part J10 of the plan "Unify the test suites": a JET report_opt file for the hot paths of SimpleSplines.

What changes

  • test/quality/jet.jl, new, in core directly after Aqua (JET 10.1 s in the full run, under the 60 s budget).
  • test/runtests.jl: the @safetestset "JET" line.
  • test/Project.toml: JET in [deps], with no [compat] bound.
  • CHANGELOG.md: an Unreleased paragraph.
  • KNOWN_ISSUES.md, new: K1, Revise EMFILE noise (upstream).

Nothing under src/ changes.

Entry points

The entry points are the functions that a test asserts with @allocated. The file has one line per method and element type that a test passes directly:

  • evaluate_all! at (Vector{Float64}, B, Float64, Int) for a free, a Dirichlet (recombined) and a periodic BSplineBasis
  • evaluate on a 3-D mixed-axis tensor product, (B, Array{Float64,3}, NTuple{3,Float64})
  • evaluate on a 2-D tensor product, (B2, Matrix{ComplexF64}, NTuple{2,Float64}, NTuple{2,Int})
  • basis_integrals at (SplineQuadrature,)
  • l2_projection! at (Vector{Float64}, q, Vector{Float64}) on a uniform periodic quadrature, and at (Vector{ComplexF64}, qc, Vector{ComplexF64}) on a graded one
  • mass_solve! on a CirculantMass (the deflated :project operator has the same type) and on each BandedMass type of the banded testset (one type)

In test/mass.jl, op \ b32 reaches mass_solve! on CirculantMass{Float32} only through \. So Float32 gets no line, as the plan decides.

JET reports nothing on any line on Julia 1.13.1 (JET 0.12.2) or 1.10.12, so no line is @test_broken or @test_skip. Where JET does not work (pre, nightly), the file records one @test_skip that cites aviatesk/JET.jl#681.

Each line catches a Base.inferencebarrier mutant on its path (mutate.jl, all CAUGHT). When the JET @safetestset line is deleted, test-layout.jl --check reports D8.

Tests

Full suite: 65123 pass, 0 fail. Base origin/main: 65113. The difference is the 10 JET lines. Every other file has the same total.

Critic

Rounds: round 1 FAIL (1a PASS, 1b FAIL: no ComplexF64 lines), verify 2 FAIL (the branch recorded its own defects instead of fixing them), verify 3 PASS.

Verdict: PASS, at 53176b7.

clause verdict
one line per entry point and element type its tests use; the deflated circulant type equals the plain one met
the kept circulant line catches mul!(y, op.iplan, Base.inferencebarrier(op.buf)) met (CAUGHT)
the comments are true met
the K1 base evidence cites an origin/main run met
affected suite green: Aqua 11, JET 10, Meshes 62, Boundary conditions 68, Periodic B-spline bases 4586, Clamped and recombined bases 58142, Mass operators 1041, Spline quadrature 340, Tensor products 408, Polar splines 454, Doctests 1

Pre-PR verification

  • Fixed: nothing needed a fix.
  • Unresolved: none.
  • Pre-existing: none found.
  • Checked and clean: test/quality/jet.jl passes 10/10 on Julia 1.13.1 (11 s) and on 1.10.12, the min floor (22 s), and JET ran on both instead of skipping. The layout check, JuliaFormatter, fatou lint and NFC pass. Every comment matches the tests it cites. No method is defined, and src/ has no change. The JET entry has no bound on purpose. The CHANGELOG entry is present.
  • Not checked: the K1 count of 5 blocks (it needs a full-suite log); Julia 1.11, 1.12, pre and nightly.

Unresolved

  • Dead code, in the banded block of test/quality/jet.jl: the loop builds 48 quadratures for one unique type, and the testset label is the full type string. One line would do the same check. The critic judged it not blocking.

Known issues added

  • K1 · Revise prints EMFILE errors in the test log

Advisor decisions

Decided (advisor, 2026-09-28, medium): every J part — the JET-gate @test_skip of clause 4 cites JET's upstream issue in the cross-repository form, as a trailing comment on its line: @test_skip "JET does not work on this Julia version" # aviatesk/JET.jl#681 (the message text is each part's own). No repository issue is filed for the gate: the skip is JET's designed behaviour, whose bound moves with each JET release, so a repository issue could not close. A per-entry-point @test_skip of clause 3 still cites the repository's own JET issue. The form passes D7 of part Z's test-layout.jl (ISSUE = r"#\d+|issues/\d+"); if part Z narrows that pattern, this line is checked again.

Decided (advisor, 2026-09-28, medium): every J part not yet merged (J1, J2, J3, J6, J8, J9, J10, J11, J12; J5 and J7 at their next critic round) — in clause 2, "each element type its tests use" means each element type that a test in test/ outside test/quality/ passes in a direct call to the entry point's method: the method that the @allocated call or the kernel launch reaches, whatever its other arguments or defaulted positional arguments. The @allocated calls choose the entry points, but they do not limit the element types. For each element type beyond those of the @allocated call, the file holds one line, at the concrete argument types of one such test call. Another container, mesh or basis type at the same element type needs no line (the edge "one line per entry point and element type"). An element type that only reaches the entry point through another function (J10: op \ b32 in test/mass.jl:229 reaches mass_solve! on CirculantMass{Float32}) gets no line, and the PR names that path. A new line that JET reports on follows clause 3. The comment of jet.jl states this domain. J10 adds l2_projection! at (Vector{ComplexF64}, typeof(qc), Vector{ComplexF64}), where qc is the GradedMesh periodic quadrature of test/quadrature.jl:220–223, and evaluate at (typeof(B2), Matrix{ComplexF64}, NTuple{2, Float64}, NTuple{2, Int}) from test/basis.jl:388–397. J4 is merged under the narrower reading, and its K3 records the gap; this decision does not reopen J4.

🤖 Generated with Claude Code

michakraus and others added 4 commits September 28, 2026 14:46
… J10)

One JET line per entry point and argument type the allocation tests
use: evaluate_all!, evaluate on a tensor product, basis_integrals,
l2_projection!, mass_solve! on circulant and banded operators. Runs in
core after Aqua, only where JET works. KNOWN_ISSUES.md K1 records the
Revise EMFILE noise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… J10, critic 1b)

Per the section 7 decision on clause 2, each element type a test passes
directly to an entry point's method gets a line. The comment states the
domain. KNOWN_ISSUES.md K2-K4 record the critics' other defects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One circulant mass_solve! line: the deflated operator has the same type.
Correct the bounded-basis comment. K1 cites the origin/main full run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 28, 2026 13:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@michakraus
michakraus merged commit 7dbfb43 into main Sep 28, 2026
10 of 11 checks passed
@michakraus
michakraus deleted the test-suites/part-j10 branch September 28, 2026 14:51
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