Repository navigation
Fix downgrade CI: add GPUArrays compat floor (8.4) and raise ArrayInterface to 7.7 - #42
Merged
ChrisRackauckas merged 2 commits intoJun 20, 2026
Conversation
The downgrade CI (Julia lts) was failing the JLArray error-message tests in test/interface_compatibility_tests.jl: the package threw the cryptic GPUArrays "Scalar indexing is disallowed" ErrorException instead of the friendly ArgumentError its guard is supposed to raise. Root cause: the guard relies on ArrayInterface.fast_scalar_indexing(JLArray) == false, which is only true when ArrayInterface's GPUArraysCore extension is loaded. ArrayInterface 7.1's [compat] caps Adapt at 3.7.2. In the downgrade resolution that forced GPUArrays down to 8.1.3 (pre-8.4, before the GPUArraysCore split), so GPUArraysCore was absent from the manifest, the extension never loaded, fast_scalar_indexing(JLArray) returned true, the guard did not fire, and indexing the JLArray triggered the GPUArrays scalar-indexing error. ArrayInterface 7.7 is the first release whose [compat] allows Adapt 4. Raising the floor lets the downgrade resolver pick GPUArrays 10.3.1 + GPUArraysCore 0.1.6, so the extension loads and fast_scalar_indexing(JLArray) is false again. Verified locally on Julia 1.10 (lts): the previously-failing testset now passes 16/16. Full Pkg.test() also passes on Julia 1.12, which resolves to ArrayInterface 7.25 (unaffected by the raised lower bound). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ng test The downgrade CI resolved GPUArrays to 8.1.3 (pulled transitively via JLArrays 0.1.1), where ArrayInterface.fast_scalar_indexing(::JLArray) returns true. The package's GPU-array guard therefore never fired and scalar indexing proceeded, so GPUArrays raised its own "Scalar indexing is disallowed" ErrorException instead of the package's ArgumentError, failing the JLArray-error-message testset. fast_scalar_indexing first reports false for JLArray at GPUArrays 8.4.0, so floor GPUArrays at 8.4 (covering 8.4, 9, 10, 11). Verified locally on Julia 1.10 with the CI-resolved ArrayInterface 7.7.0 / JLArrays 0.1.1: 8.1.3 reproduces the 8/8 failure, 8.4.0 passes 16/16; full Core suite green. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ChrisRackauckas
marked this pull request as ready for review
June 20, 2026 11:09
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.
Fix downgrade CI failure (
interface_compatibility_tests.jlJLArray testset)The
downgradejob was failing in the JLArray error messages testset (8 passed / 8 failed).Root cause
The package guards against GPU arrays with
ArrayInterface.fast_scalar_indexing(A)and throws a friendlyArgumentError("requires arrays with fast scalar indexing. GPU arrays are not supported"). The test feeds aJLArrayand asserts thatArgumentError.During downgrade resolution,
GPUArraysis pulled in transitively viaJLArrays 0.1.1and resolves to its floor8.1.3. At GPUArrays< 8.4,ArrayInterface.fast_scalar_indexing(::JLArray)returnstrue, so the package guard never fires; the code scalar-indexes the JLArray and GPUArrays raises its ownErrorException("Scalar indexing is disallowed...")instead of the expectedArgumentError.fast_scalar_indexingfirst returnsfalseforJLArrayat GPUArrays 8.4.0.Bisected locally on Julia 1.10 (lts) with the CI-resolved
ArrayInterface 7.7.0/JLArrays 0.1.1:fast_scalar_indexing(JLArray)truetruefalsefalseFix
Add an explicit
GPUArrayscompat floor (8.4, 9, 10, 11) plus the matching[extras]/test-target entries, so downgrade resolution cannot pick the broken< 8.4series. (The earlierArrayInterface7.1 → 7.7 floor bump remains, addressing the original Adapt/ArrayInterface resolution issue.)Local verification (Julia 1.10.11)
interface_compatibility_tests.jl: 8 pass / 8 fail (reproduces CI).GROUP=CorePkg.test()on lts at normal resolution → all green.Please ignore until reviewed by @ChrisRackauckas