Skip to content

Commit ec34cf7

Browse files
ChrisRackauckas-ClaudeChrisRackauckasclaude
authored
Add 32-bit CI lane via test_groups.toml (stacked on #97) (#98)
* Add generic findfirstsortedequal fallback (fixes 32-bit) and drop the broken 32-bit CI job Follow-up to #95. Two things: 1. Fix a correctness gap #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 #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 * Add the 32-bit CI lane via test_groups.toml 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 #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 --------- Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 6bd7486 commit ec34cf7

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
99
[compat]
1010
PrecompileTools = "1.0.1"
1111
SafeTestsets = "0.1"
12-
SciMLTesting = "1"
12+
SciMLTesting = "2.2"
1313
StableRNGs = "1"
1414
Test = "1.10"
1515
julia = "1.10"

test/test_groups.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,15 @@
66
versions = ["1", "lts", "pre"]
77
os = ["ubuntu-latest", "macos-latest", "windows-latest"]
88

9+
# 32-bit lane: a matrix-only alias that dispatches the Core body (GROUP=Core) on
10+
# a single x86 Julia, so the WORD_SIZE != 64 scalar fallbacks in src/simd_ir.jl
11+
# are exercised in CI. The `arch = "x86"` cell needs SciML/.github v1's i386-libs
12+
# step (setup-julia) and the alias skip in SciMLTesting >= 2.2 (folder discovery).
13+
["Core 32-bit"]
14+
group = "Core"
15+
versions = ["1"]
16+
os = ["ubuntu-latest"]
17+
arch = "x86"
18+
919
[QA]
1020
versions = ["lts", "1"]

0 commit comments

Comments
 (0)