Skip to content

Add 32-bit CI lane via test_groups.toml (stacked on #97)#98

Merged
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:support-32bit-ci-lane
Jul 12, 2026
Merged

Add 32-bit CI lane via test_groups.toml (stacked on #97)#98
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:support-32bit-ci-lane

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Completes the 32-bit CI setup: declares a Core 32-bit lane through test_groups.toml instead of a bespoke job.

Stacked on #97 (the findfirstsortedequal bugfix, which the 32-bit run needs). The diff unique to this PR is just:

  • test/test_groups.toml: a ["Core 32-bit"] group="Core" arch="x86" os=["ubuntu-latest"] versions=["1"] alias section.
  • Project.toml: SciMLTesting compat "1""1.8, 2".

How it works

CI status to expect on this PR

  • Core (julia 1, ubuntu-latest, x86) — should pass. This is the payoff: real-CI proof the 32-bit lane works end-to-end (the job runs GROUP=Core, which doesn't touch folder discovery).
  • ⚠️ Downgrade Tests (and a bare local Pkg.test()) — will fail until SciMLTesting 2.2.0 is registered. They run GROUP=All, and folder discovery only skips the matrix-only alias section in SciMLTesting ≥ 2.2 (SciMLTesting.jl#22). With 2.1.0 (current highest) it still throws "folder missing". Once 2.2.0 is released, CI re-resolves to it and this goes green.

Do not merge until

  1. Support 32-bit platforms and add a 32-bit CI lane via test_groups.toml #97 is merged (parent).
  2. SciMLTesting 2.2.0 is registered (SciMLTesting.jl#22).

I opened this now so the 32-bit job is proven green on real CI against the released v1; the Downgrade red is expected and clears with 2.2.0.

Verified locally: FindFirstFunctions Core suite passes on SciMLTesting 2.1.0 (171915 tests) and on 32-bit i686 Julia 1.11 (0 errors); released v1 generator emits the Core / x86 cell.

Please ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

… broken 32-bit CI job

Follow-up to SciML#95. Two things:

1. Fix a correctness gap SciML#95 shipped. Unlike `findfirstequal`,
   `findfirstsortedequal` had ONLY the `(Int64, DenseVector{Int64})` method
   and no generic fallback. On 32-bit platforms native `Int` is `Int32`, so
   `findfirstsortedequal(::Int32, ::Vector{Int32})` throws MethodError — 8385
   such errors in the suite, and a bare `Pkg.test()` / any `Int`-vector caller
   on 32-bit is broken. Add a generic `searchsortedfirst` + equality post-check
   fallback (mirroring `findfirstequal`), so it works for any sorted vector on
   any platform. Add a test covering the fallback on Int32/Int16/Float32.

2. Remove the `tests-32bit` job SciML#95 added to Tests.yml. Running 32-bit Julia on
   the 64-bit `ubuntu-latest` runner fails at `setup-julia` (the i686 binary
   can't exec without the 32-bit loader, which is not installed before Julia is
   invoked: `spawn .../x86/bin/julia ENOENT`), so that job is red regardless of
   this fix. A proper 32-bit CI lane needs runner/reusable-workflow changes and
   is deferred; Tests.yml goes back to a thin grouped-tests caller.

Minor bump 3.0.3 -> 3.1.0 (new public behavior: `findfirstsortedequal` now
accepts any sorted vector). Verified locally: full Core suite passes on 32-bit
i686 Julia 1.11 (0 errors) and on x64 (171915 tests); GROUP=All passes.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EcQkauMQ4KSytnTpJpXUZu
Declare a `Core 32-bit` matrix-only alias that dispatches the Core body
(group = "Core") on a single x86 Julia cell, so the WORD_SIZE != 64 scalar
fallbacks in src/simd_ir.jl are exercised in CI — replacing SciML#95's hand-added
`tests-32bit` job (removed in the parent commit) with a declarative lane.

This uses the arch axis / group alias in SciML/.github v1 (v1.24.0) and the
i386 runtime-lib install before setup-julia (v1.24.1), so the x86 leg can
actually run on the 64-bit ubuntu runner.

Require `SciMLTesting = "2.2"`: the alias section is skipped by folder discovery
only in SciMLTesting >= 2.2 (SciMLTesting.jl#22), which GROUP=All (the Downgrade
job) and a bare `Pkg.test()` need. FindFirstFunctions runs unchanged on
SciMLTesting 2.x (verified: Core suite passes on 2.1.0).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EcQkauMQ4KSytnTpJpXUZu
@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review July 12, 2026 12:21
@ChrisRackauckas
ChrisRackauckas merged commit ec34cf7 into SciML:main Jul 12, 2026
23 of 24 checks passed
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