Skip to content

Conversation

@andylizf
Copy link
Collaborator

@andylizf andylizf commented Dec 24, 2025

Summary

  • Drop Python 3.9 support and require Python 3.10+
  • Migrate from deprecated macOS 13 to macos-15-intel (free runner)
  • Add macOS 26 (beta) for future compatibility testing
  • Fixes Drop Python 3.9 support #137

Rationale

  1. Python 3.9: Reached end-of-life (October 2025) and the codebase uses PEP 604 union type syntax (str | None) which requires Python 3.10+.
  2. macOS 13: GitHub Actions deprecated macos-13 runner (Dec 2025). Migrated to macos-15-intel which is a free standard runner available until Aug 2027.

See: actions/runner-images#13045

Changes

  • Remove Python 3.9 from CI build matrix
  • Replace macos-13 with macos-15-intel for Intel Mac builds
  • Add macos-26 (beta) for testing future macOS compatibility
  • Update requires-python to >=3.10 in all pyproject.toml files
  • Update classifiers to reflect supported Python versions (3.10-3.13)

Platform Support

Platform Architecture Pre-built wheels
Linux x86_64
Linux arm64
macOS 15+ Intel (x86_64) ✅ via macos-15-intel
macOS 14+ Apple Silicon (arm64)

Note: Intel Mac wheels require macOS 15+ because the macos-15-intel runner builds with macOS 15 system libraries. Users on older Intel Macs (macOS 13-14) can still install from source.

Build Matrix

Runner Architecture Deployment Target Python
ubuntu-22.04 x86_64 - 3.10-3.13
ubuntu-24.04-arm arm64 - 3.10-3.13
macos-14 arm64 14.0 3.10-3.13
macos-15 arm64 15.0 3.10-3.13
macos-15-intel x86_64 15.0 3.10-3.12 ⚠️
macos-26 (beta) arm64 26.0 3.10-3.13

⚠️ Intel Mac + Python 3.13: PyTorch has no wheels for this combination. PyTorch ≤2.4.1 doesn't support Python 3.13, and PyTorch ≥2.5.0 dropped Intel Mac (x86_64) support entirely. Users needing Python 3.13 on Intel Macs can install from source.

Test plan

  • CI passes with Python 3.10+ builds
  • All platforms build successfully
  • macOS 26 beta builds complete (may have expected failures)

Python 3.9 reached end-of-life and the codebase uses PEP 604 union
type syntax (str | None) which requires Python 3.10+.

Changes:
- Remove Python 3.9 from CI build matrix
- Update requires-python to >=3.10 in all pyproject.toml files
- Update classifiers to reflect supported Python versions (3.10-3.13)
GitHub Actions deprecated macos-13 runner (brownout started Sept 2025,
fully retired Dec 2025). See: https://github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down/
Replace deprecated macos-13 with macos-15-large (x86_64 Intel)
to continue supporting Intel Mac users.
Intel Mac wheels (macos-15-large) now target macOS 13.0/13.3 for
backward compatibility, allowing macOS 13/14/15 Intel users to
install pre-built wheels.
Intel Mac users can build from source. This avoids:
- Paid GitHub Actions runners (macos-15-large)
- Complex cross-compilation setup
@andylizf andylizf requested a review from yichuan-w December 24, 2025 01:07
@andylizf andylizf changed the title Drop Python 3.9 support, require Python 3.10+ Drop Python 3.9 and macOS 13/Intel support in CI Dec 24, 2025
Use macos-15-intel (free standard runner) instead of macos-15-large
(paid). This provides Intel Mac wheel support until Aug 2027.

- MACOSX_DEPLOYMENT_TARGET=13.0 for backward compatibility
- Replaces deprecated macos-13 runner
@andylizf andylizf changed the title Drop Python 3.9 and macOS 13/Intel support in CI Drop Python 3.9, migrate macOS 13 to macos-15-intel Dec 24, 2025
Add macos-26 (arm64) runner to the build matrix for testing future
macOS compatibility. This is currently a beta runner that helps ensure
wheels work on upcoming macOS versions.
@andylizf andylizf changed the title Drop Python 3.9, migrate macOS 13 to macos-15-intel Drop Python 3.9 support and modernize macOS runners Dec 24, 2025
The macos-15-intel runner runs macOS 15.7, so Homebrew libraries are
built for macOS 14+. Setting MACOSX_DEPLOYMENT_TARGET=13.0 causes
delocate to fail because system libraries require newer macOS.

Fix by setting deployment target to 15.0 for macos-15-intel, matching
the actual OS version. Intel Mac users will need macOS 15+.
@andylizf andylizf merged commit a2e5f52 into main Dec 25, 2025
26 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.

Drop Python 3.9 support

2 participants