Julia 1.14 compatibility; CI step selection - #1109
Merged
Merged
Conversation
maleadt
force-pushed
the
tb/julia-1.14
branch
from
September 25, 2026 14:39
6d973e3 to
00a44ce
Compare
Adopt GPUCompiler's commit message grammar, where `[only ...]` and `[skip ...]` take a comma-separated list of step tags, e.g. `[only nightly]` or `[skip enzyme, docs]`. To save CI time, draft pull requests only test the newest Julia release and nightly; older releases, Enzyme, the GPU-less environment, documentation and benchmarks run once the pull request is marked ready. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The functions matching `__throw_` include Base's `@noinline` `_throw_boundserror_indices`, new in Julia 1.14. Adding `alwaysinline` next to `noinline` makes the module invalid, which aborted during precompilation. 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. 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 26, 2026 06:28
00a44ce to
ef72e8f
Compare
maleadt
marked this pull request as ready for review
September 26, 2026 06:29
Member
|
Thanks for this! Shall we add something to the docs wrt selective pipeline run in PRs (the first bullet point in the PR comment)? Maybe adding something to Testing in there could be valuable (or elsewhere if appropriate). |
luraess
approved these changes
Sep 26, 2026
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 to precompile:
Attributes 'noinline and alwaysinline' are incompatible! ptr @julia__throw_boundserror_indices_0.[only nightly],[only julia, enzyme],[skip docs, benchmarks]. Tags arejulia,nightly,enzyme,special,docsandbenchmarks;testscovers the first four. To save CI time, draft PRs only test the newest release (1.13) and nightly. Older releases, Enzyme, the GPU-less environment, docs and benchmarks run once the PR is ready. Docs and benchmarks used to run on drafts too.__throw_, which now includes Base's@noinline_throw_boundserror_indices(Fix--trimcompatibility forBoundsErrorJuliaLang/julia#61561). Dropnoinlinewhen addingalwaysinline._throw_boundserror_indices, which 1.14's genericcheckbounds(e.g. for views) calls instead ofthrow_boundserror. Metal.jl and OpenCL.jl already do this.Also needs JuliaGPU/GPUCompiler.jl#956 (write barriers), so this bumps GPUCompiler to 2.9. I couldn't run this locally (no ROCm hardware), so CI is the first real test.