Julia 1.14 compatibility; CI step selection - #647
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #647 +/- ##
==========================================
+ Coverage 80.63% 80.73% +0.09%
==========================================
Files 55 56 +1
Lines 4034 4060 +26
==========================================
+ Hits 3253 3278 +25
- Misses 781 782 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
maleadt
force-pushed
the
tb/julia-1.14
branch
from
September 26, 2026 06:28
0124206 to
f128cbe
Compare
maleadt
marked this pull request as ready for review
September 27, 2026 10:23
Adopt GPUCompiler's commit message grammar, where `[only ...]` and `[skip ...]` take a comma-separated list of step tags, e.g. `[only nightly]` or `[skip special]`. To save CI time, draft pull requests only test the newest Julia release and nightly; older releases and the validation run once the pull request is marked ready. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Julia 1.14 reports bounds errors from the generic `checkbounds`, as used e.g. when indexing views, through `Base._throw_boundserror_indices` (JuliaLang/julia#61561), bypassing the `throw_boundserror` override. Mirror the override Metal.jl already has. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Julia 1.14 specializes type-valued arguments on `Core.TypeEgal{T}`
(JuliaLang/julia#62001), so a broadcast of a type constructor has
`TypeEgal{T}` as its function type parameter. That isn't matched by
the `Type{T}` in our adaptor rule, which replaces the non-isbits type
with a closure, making such broadcasts fail to compile. Match any
subtype of `Type{T}` instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
LinearAlgebra's `det` of triangular matrices now reduces with `Base.Fix1(convert, T)`, which isn't isbits (JuliaLang/LinearAlgebra.jl#1658). Convert `Fix1` and `Fix2` capturing a type into closures that carry the type as a parameter instead, like we already do for broadcasting types. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
maleadt
force-pushed
the
tb/julia-1.14
branch
from
September 27, 2026 10:23
f128cbe to
b5533fd
Compare
Contributor
|
Your PR requires formatting changes to meet the project's style guidelines. Click here to view the suggested changes.diff --git a/src/compiler/execution.jl b/src/compiler/execution.jl
index 20742c2..a04c44c 100644
--- a/src/compiler/execution.jl
+++ b/src/compiler/execution.jl
@@ -158,15 +158,20 @@ Adapt.adapt_structure(to::KernelAdaptor, r::Base.RefValue{<:Union{DataType,Type}
# case where type is the function being broadcasted
# (on Julia 1.14, the function type parameter is `Core.TypeEgal{T} <: Type{T}`)
Adapt.adapt_structure(to::KernelAdaptor,
- bc::Broadcast.Broadcasted{Style, <:Any, <:Type{T}}) where {Style, T} =
+ bc::Broadcast.Broadcasted{Style, <:Any, <:Type{T}}
+) where {Style, T} =
Broadcast.Broadcasted{Style}((x...) -> T(x...), adapt(to, bc.args), bc.axes)
# functions that capture a type, e.g., `Base.Fix1(convert, T)` as used by LinearAlgebra,
# which isn't a valid kernel argument either
Adapt.adapt_structure(to::KernelAdaptor, f::Base.Fix1{<:Any, <:Type{T}}) where {T} =
- let g = adapt(to, f.f); (x...) -> g(T, x...) end
+let g = adapt(to, f.f)
+ (x...) -> g(T, x...)
+end
Adapt.adapt_structure(to::KernelAdaptor, f::Base.Fix2{<:Any, <:Type{T}}) where {T} =
- let g = adapt(to, f.f); (x...) -> g(x..., T) end
+let g = adapt(to, f.f)
+ (x...) -> g(x..., T)
+end
"""
kernel_convert(x) |
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.
On main, nightly (1.14) fails in
gpuarrays/uniformscaling(a broken module fromjl_genericmemory_copytoin device code) and more.[only X]/[skip X]take comma-separated step tags, as in GPUCompiler:julia,nightly,special, andtestsfor everything. Draft PRs only test the newest release (1.13) and nightly; older releases and the validation run once the PR is ready. Steps share their definition through YAML anchors. This also drops a duplicateif:key from the validation step.checkbounds(e.g. for views) now throws throughBase._throw_boundserror_indices(Fix--trimcompatibility forBoundsErrorJuliaLang/julia#61561), bypassing thethrow_boundserroroverride. Overridden too, as in Metal.jl.Core.TypeEgal{T}(type system: Add TypeEgal kind JuliaLang/julia#62001), which theBroadcasted{…, Type{T}}adaptor rule didn't match, soFloat32.(x)failed to compile. It now matches<:Type{T}.detnow reduces withBase.Fix1(convert, T)(Check that matrix is square indettriangular fast-path JuliaLang/LinearAlgebra.jl#1658), which isn't isbits.Fix1/Fix2capturing a type are converted to closures.The
uniformscalingfailure itself is fixed in SPIRVIntrinsics (consistent overlays, JuliaGPU/OpenCL.jl#505), and the write-barrier failures in JuliaGPU/GPUCompiler.jl#956. With both, the full test suite passes locally on nightly (1.14.0-DEV.3363, Iris Xe). This PR now requires GPUCompiler 2.9. The last commit temporarily points[sources]at the OpenCL.jl branch; it'll be dropped once SPIRVIntrinsics is released.