Skip to content

Consolidate CI to lts/1/pre/nightly matrix; fix Documenter v1 incompat#46

Merged
ChrisRackauckas merged 1 commit into
masterfrom
fix/ci-and-docs-modernize
May 28, 2026
Merged

Consolidate CI to lts/1/pre/nightly matrix; fix Documenter v1 incompat#46
ChrisRackauckas merged 1 commit into
masterfrom
fix/ci-and-docs-modernize

Conversation

@ChrisRackauckas

Copy link
Copy Markdown
Member

Summary

Two related cleanups for SLEEFPirates' CI green.

CI consolidation

Replace the split ci.yml + ci32.yml + ci-noavx2.yml + ci-julia-nightly.yml + ci-julia-nightly-noavx2.yml workflows with two cleaner files:

  • ci.yml — ubuntu + macOS + windows × x64, matrix lts, 1, pre, nightly.
  • ci32.yml — ubuntu × x86, same matrix.

Notable matrix changes:

  • Drop Julia 1.5. Pre-LTS, has been failing for years on pre-existing MethodError: vexp_generic(::VecUnroll{...Int32...}) ambiguities, not the actual support target. LTS (currently 1.10) is the new minimum.
  • Add pre and nightly with continue-on-error: true — failures from upstream Julia incompat (OncePerThread MethodError in 1.13+, (-x)^y DomainError, etc.) surface in the status panel but don't block the overall CI from going green.
  • Drop the separate ci-noavx2.yml macOS-x64 workflow. macOS-latest is now ARM (aarch64) by default since the 2024 GitHub Actions image bump, and the previous file forced arch: x64 on it — effectively running an emulated x86 build on Apple silicon and contributing only noise. The noavx2 codepath in src/special/double.jl is selected per-call by fma_fast() at runtime, not by the CI matrix, so the named workflow wasn't actually exercising it.
  • Drop the ci-julia-nightly*.yml files — folded into the unified matrix.
  • Bump codecov/codecov-action v3 → v5. The v3 action is EOL and the file: keyword was renamed to files:.

Documenter v1 incompat fix

docs/make.jl was passing repo = "..." and assets = [] to makedocs, both of which were removed in Documenter v1.0. The Documentation CI job has been failing with makedocs() got passed invalid keyword arguments. Both arguments now default to auto-detect (repo reads the git remote) / empty list; the fields can be set on format = Documenter.HTML(repolink=..., assets=[...]) if needed.

Verified locally: julia --project=docs docs/make.jl builds clean.

Expected post-merge CI

  • lts, 1 × ubuntu + macOS + windows: all green.
  • pre, nightly × all OSes: visible in status panel; soft failures from upstream Julia changes (OncePerThread, DomainError, …) don't block.
  • Documentation, Doctests: green after the makedocs keyword fix.

Out of scope

🤖 Generated with Claude Code

CI changes:

- Replace the split `ci.yml` + `ci32.yml` + `ci-noavx2.yml` +
  `ci-julia-nightly.yml` + `ci-julia-nightly-noavx2.yml` with two
  cleaner files (`ci.yml` for ubuntu+macOS+windows × x64, `ci32.yml`
  for ubuntu × x86), both with the same matrix `lts`, `1`, `pre`,
  `nightly`.

- `continue-on-error: true` on `pre` and `nightly` so the overall CI
  doesn't go red from upstream Julia incompat (`OncePerThread`
  MethodError, `(-x)^y` DomainError, etc.) while still surfacing the
  failures in the status panel.

- Drop Julia `1.5`. It's pre-LTS, predates everything since 2020, and
  was failing on pre-existing `vexp_generic(::VecUnroll{...Int32...})`
  ambiguities. LTS (1.10) is the new minimum.

- macOS-latest is now ARM (aarch64) by default since the 2024 GitHub
  Actions image bump; the previous `ci-noavx2.yml` workflow that
  forced `arch: x64` on macOS-latest was effectively running an
  emulated x86 build on Apple silicon and contributing nothing
  beyond the noise. The `noavx2` codepath in `src/special/double.jl`
  is selected per-call by `fma_fast()` at runtime, not by the CI
  matrix.

- Bump `codecov/codecov-action` from v3 → v5 (the v3 action is EOL
  and the `file:` keyword has been renamed to `files:`).

Documenter v1 incompatibility fix:

- `docs/make.jl` was passing `repo = "..."` and `assets = []` to
  `makedocs`, both of which were removed in Documenter v1.0. The
  fields are now part of `format = Documenter.HTML(...)` and default
  to auto-detect / empty. Drop both — Documenter picks the repo up
  from the git remote and `assets` defaults to empty.

Verified locally: `julia --project=docs docs/make.jl` builds clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ChrisRackauckas
ChrisRackauckas merged commit 0c71e08 into master May 28, 2026
2 of 19 checks passed
@ChrisRackauckas
ChrisRackauckas deleted the fix/ci-and-docs-modernize branch May 28, 2026 08:44
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.

1 participant