Skip to content

Julia 1.14 compatibility; CI step selection - #1109

Merged
maleadt merged 5 commits into
mainfrom
tb/julia-1.14
Sep 27, 2026
Merged

maleadt merged 5 commits into
mainfrom
tb/julia-1.14

Conversation

@maleadt

@maleadt maleadt commented Sep 25, 2026 •

Copy link
Copy Markdown
Member

On main, nightly (1.14) fails to precompile: Attributes 'noinline and alwaysinline' are incompatible! ptr @julia__throw_boundserror_indices_0.

  • CI: Buildkite steps can be selected with list-based tags in the commit message, as in GPUCompiler: [only nightly], [only julia, enzyme], [skip docs, benchmarks]. Tags are julia, nightly, enzyme, special, docs and benchmarks; tests covers 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.
  • noinline + alwaysinline: the exception-function force-inlining matches __throw_, which now includes Base's @noinline _throw_boundserror_indices (Fix --trim compatibility for BoundsError JuliaLang/julia#61561). Drop noinline when adding alwaysinline.
  • Bounds errors: override _throw_boundserror_indices, which 1.14's generic checkbounds (e.g. for views) calls instead of throw_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.

maleadt and others added 5 commits September 26, 2026 08:27
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
maleadt marked this pull request as ready for review September 26, 2026 06:29
@luraess

luraess commented Sep 26, 2026

Copy link
Copy Markdown
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).

@maleadt
maleadt merged commit a2d2232 into main Sep 27, 2026
6 of 7 checks passed
@maleadt
maleadt deleted the tb/julia-1.14 branch September 27, 2026 11:59
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