Background
Currently, the PR build strategy skips Full ARM64 builds to speed up CI. This was based on the assumption that Full ARM64 ≈ Lite ARM64 because Ruby scientific gems (or-tools, torch-rb) are x86_64-only.
However, investigation reveals that Python scientific libraries ARE available on ARM64, which means Full ARM64 contains significantly more content than Lite ARM64.
Current State
Python Scientific Libraries (installed on ALL architectures)
- numpy==2.2.6 ✅
- pandas==2.3.2 ✅
- scipy==1.16.1 ✅
- scikit-learn==1.7.1 ✅
- polars==1.31.0 ✅
- torch==2.8.0+cpu ✅ (ARM64 supported since v1.8.0)
- ortools==9.14.6206 ✅
- numba==0.61.2 ⚠️ (see below)
Ruby Scientific Gems (x86_64 only)
- or-tools:0.16.0 ❌ (requires LibTorch)
- torch-rb ❌ (requires LibTorch)
Numba ARM64 Support
Current version in Dockerfile: numba==0.61.2
ARM64 Support Status:
- ❌ numba < 0.62.0: No official ARM64 wheels
- ✅ numba >= 0.62.1 (released September 2025): Official ARM64 Linux wheels available
- Tier 1 platform support
- Python 3.10, 3.11, 3.12, 3.13 supported
Workflow test currently skips numba on ARM64:
# Only test numba on x86_64 (not available on ARM64)
if [ "${{ matrix.platform }}" = "linux/amd64" ]; then
echo "🔍 Testing Numba (x86_64 only)..."
docker run --rm $IMAGE_TAG python3.13 -c "import numba; print('Numba', numba.__version__)"
fi
Proposed Actions
1. Update numba to 0.62.1+
- Update
Dockerfile to use numba>=0.62.1 for full ARM64 support
- Remove the x86_64-only test restriction in workflow
- Test numba on both architectures
2. Reconsider PR Build Strategy
Since Full ARM64 now contains substantial scientific computing libraries that Lite ARM64 doesn't have:
Option A: Build Full ARM64 in PRs to properly test scientific libraries
- ✅ Better test coverage
- ❌ Slower CI (QEMU emulation on ubuntu-latest)
- 💡 Could use
ubuntu-24.04-arm runner if available
Option B: Keep skipping Full ARM64 in PRs, rely on main branch testing
- ✅ Faster PR CI
- ❌ Potential ARM64-specific issues only caught after merge
- ❌ Not testing significant portion of Full version content
3. Alternative: Add [build-all] tag documentation
Document that developers should use [build-all] in commit messages when:
- Updating scientific library versions
- Making changes that might affect ARM64 builds
- Want full validation before merge
Questions to Resolve
- Should we update numba to 0.62.1+ now or in a separate PR?
- Should PR builds include Full ARM64, or is main-branch-only testing sufficient?
- Do we have access to
ubuntu-24.04-arm runners for faster ARM64 builds?
- Should we verify ortools Python package actually works on ARM64?
Related
Background
Currently, the PR build strategy skips Full ARM64 builds to speed up CI. This was based on the assumption that Full ARM64 ≈ Lite ARM64 because Ruby scientific gems (or-tools, torch-rb) are x86_64-only.
However, investigation reveals that Python scientific libraries ARE available on ARM64, which means Full ARM64 contains significantly more content than Lite ARM64.
Current State
Python Scientific Libraries (installed on ALL architectures)
Ruby Scientific Gems (x86_64 only)
Numba ARM64 Support
Current version in Dockerfile: numba==0.61.2
ARM64 Support Status:
Workflow test currently skips numba on ARM64:
Proposed Actions
1. Update numba to 0.62.1+
Dockerfileto usenumba>=0.62.1for full ARM64 support2. Reconsider PR Build Strategy
Since Full ARM64 now contains substantial scientific computing libraries that Lite ARM64 doesn't have:
Option A: Build Full ARM64 in PRs to properly test scientific libraries
ubuntu-24.04-armrunner if availableOption B: Keep skipping Full ARM64 in PRs, rely on main branch testing
3. Alternative: Add
[build-all]tag documentationDocument that developers should use
[build-all]in commit messages when:Questions to Resolve
ubuntu-24.04-armrunners for faster ARM64 builds?Related