Add 32-bit CI lane via test_groups.toml (stacked on #97)#98
Merged
ChrisRackauckas merged 2 commits intoJul 12, 2026
Merged
Conversation
… 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
ChrisRackauckas-Claude
force-pushed
the
support-32bit-ci-lane
branch
from
July 12, 2026 11:31
197bcdc to
ec01fbe
Compare
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-Claude
force-pushed
the
support-32bit-ci-lane
branch
from
July 12, 2026 11:52
ec01fbe to
23940be
Compare
ChrisRackauckas
marked this pull request as ready for review
July 12, 2026 12:21
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.
Completes the 32-bit CI setup: declares a
Core 32-bitlane throughtest_groups.tomlinstead of a bespoke job.Stacked on #97 (the
findfirstsortedequalbugfix, 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:SciMLTestingcompat"1"→"1.8, 2".How it works
groupalias (Add arch axis and group alias to root test-group matrix .github#113, v1.24.0) turn the section into one x86 cell that dispatchesGROUP=Core.setup-julia(tests.yml: install i386 runtime libs before setup-julia for 32-bit legs .github#114, v1.24.1) lets the i686 Julia actually run on the 64-bitubuntu-latestrunner.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 runsGROUP=Core, which doesn't touch folder discovery).Downgrade Tests(and a bare localPkg.test()) — will fail until SciMLTesting 2.2.0 is registered. They runGROUP=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
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 / x86cell.Please ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code