Julia 1.14 compatibility; CI step selection - #3299
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3299 +/- ##
===========================================
- Coverage 82.29% 38.43% -43.87%
===========================================
Files 186 187 +1
Lines 18913 18607 -306
===========================================
- Hits 15565 7151 -8414
- Misses 3348 11456 +8108 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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, docs]`, and add a separate `nightly` tag. To save CI time, draft pull requests only test the newest Julia release and nightly; older releases 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 so that the exception was reported without its type and message. 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>
LLVM 21 replaced the `llvm.nvvm.barrier0` family and `barrier.sync` with `barrier.cta` intrinsics, and made `ex2.approx` overloaded. Julia 1.14 uses LLVM 22, where `llvmcall` of the old names fails to resolve and silently compiles into a run-time error, breaking every kernel using `sync_threads`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
LLVM 21 removed the `llvm.nvvm.atomic.load.inc/dec` intrinsics in favor of the corresponding `atomicrmw` operations, so on Julia 1.14 these calls compiled into a run-time error. 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>
Julia 1.14 prepends the syntax version to the arguments of `:module` expressions, so the name and body are now the last two arguments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
maleadt
force-pushed
the
tb/julia-1.14
branch
from
September 26, 2026 06:28
50f8a56 to
c226270
Compare
maleadt
marked this pull request as ready for review
September 26, 2026 06:29
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 from the first kernel using
sync_threadsonward.[only X]/[skip X]take comma-separated step tags, as in GPUCompiler:julia,nightly(new, separate fromjulia),cuda,downstream,special,docs,benchmarks, andtestsfor all test steps. Draft PRs only test the newest release (1.13) and nightly; older releases and everything else run once the PR is ready. Steps share their definition through YAML anchors. The README section is updated; it still listed asubpackagestag that no longer exists.llvm.nvvm.barrier0{,.popc,.and,.or},barrier.sync,ex2.approx.fandatomic.load.{inc,dec}.llvmcallof a removed intrinsic silently compiles into a run-timejl_error, so every kernel usingsync_threadsthrewa error was thrown during kernel execution. On LLVM ≥ 21 we now usebarrier.cta.*, the overloadedex2.approx.f32, andatomicrmw uinc_wrap/udec_wrap. Report llvmcall of unknown intrinsics at compile time GPUCompiler.jl#958 makes such calls a compile-time error in the future.checkbounds(e.g. for views) now throws throughBase._throw_boundserror_indices(Fix--trimcompatibility forBoundsErrorJuliaLang/julia#61561), which bypassed our override and lost the exception type. Overridden too, with a test.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.:moduleexpressions carry the syntax version as a first argument on 1.14.With JuliaGPU/GPUCompiler.jl#956 (write barriers), the full test suite passes locally on nightly (1.14.0-DEV.3363, RTX 5080). That's in GPUCompiler 2.9, which this PR now requires.