Skip to content

Skip AllocCheck tests on prerelease Julia#37

Merged
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:fix-alloccheck-skip-prerelease
Jun 20, 2026
Merged

Skip AllocCheck tests on prerelease Julia#37
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:fix-alloccheck-skip-prerelease

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Problem

The main CI is red on the single check tests / Core (julia pre, macos-latest) (Julia 1.13.0-rc1, aarch64-macOS). All other matrix entries (lts, 1, and pre on ubuntu/windows) are green.

The failure is in test/alloc_tests.jl:

@check_allocs function encountered 1 errors (1 allocations / 0 dynamic dispatches).
Expression: test_surrogate_call(s, x_test) == 1

Root cause

test/alloc_tests.jl was originally added (commit 43917ab) on a dedicated CI job scoped to ubuntu-latest, Julia "1" only, with GROUP=nopre — deliberately excluding prereleases, because AllocCheck builds on GPUCompiler/LLVM compiler internals that are unstable on Julia prereleases.

The CI centralization to the SciMLTesting v1.2 folder-based run_tests() harness (#36) discovers every top-level test/*.jl as part of the Core group and runs it across the full versions × os matrix declared in test/test_groups.toml (["lts", "1", "pre"] × 3 OSes). That dropped the original nopre / single-runner scoping, so alloc_tests.jl now runs on pre (1.13.0-rc1), where @check_allocs reports a spurious allocation on aarch64-macOS.

Fix

Gate the two AllocCheck testsets on isempty(VERSION.prerelease), restoring the original nopre intent. Full AllocCheck coverage is retained on every released Julia.

Local verification

Ran test/alloc_tests.jl with --check-bounds=yes (matching CI):

  • lts (1.10.11): AllocCheck tests run and pass — 3/3 and 1/1
  • 1 / stable (1.12.6): AllocCheck tests run and pass — 3/3 and 1/1
  • pre (1.13.0-rc1): file is a clean no-op, no errors

(The aarch64-specific spurious-alloc failure could not be reproduced directly — no aarch64 hardware available — but on x86_64-linux 1.13.0-rc1 the test passes, matching the green pre, ubuntu-latest CI entry; the gate removes the prerelease channel entirely, which is where the instability lives.)

Runic formatting: clean (no diff).


Please ignore until reviewed by @ChrisRackauckas.

The folder-based SciMLTesting harness (PR SciML#36) runs test/alloc_tests.jl as
part of the Core group across the full version x OS matrix, including the
`pre` channel (currently 1.13.0-rc1). The original alloc test was deliberately
scoped to GROUP=nopre on a single x86_64-linux runner, because AllocCheck builds
on GPUCompiler/LLVM compiler internals that are unstable on Julia prereleases.

On 1.13.0-rc1 / aarch64-macOS, `@check_allocs` reports a spurious 1 allocation
(0 dynamic dispatches) for the surrogate call, failing CI. The same test passes
on lts (1.10), 1 (1.12), and even 1.13.0-rc1 on x86_64-linux. Verified locally:
file is a clean no-op on 1.13.0-rc1, and the AllocCheck tests still run and pass
(3/3, 1/1) on 1.10 and 1.12.

Gate the AllocCheck testsets on `isempty(VERSION.prerelease)`, restoring the
original nopre intent while keeping full coverage on released Julia.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 20, 2026 11:09
@ChrisRackauckas ChrisRackauckas merged commit ddff30e into SciML:main Jun 20, 2026
17 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