Skip to content

fix: add Python 3.9-3.13 CI testing and abi3 wheels#57

Merged
bug-ops merged 1 commit intomainfrom
feature/python-version-matrix-ci
Feb 6, 2026
Merged

fix: add Python 3.9-3.13 CI testing and abi3 wheels#57
bug-ops merged 1 commit intomainfrom
feature/python-version-matrix-ci

Conversation

@bug-ops
Copy link
Owner

@bug-ops bug-ops commented Feb 6, 2026

Problem

Issue #55 reported lack of Python 3.13 support. While pyproject.toml declares compatibility with Python 3.9-3.13 in classifiers, the CI only tested Python 3.11, and release builds only produced wheels for Python 3.11. Users with other Python versions had to build from source.

Solution

This PR adds full Python 3.9-3.13 support using the abi3 stable ABI strategy:

  • Enable abi3 feature in pyproject.toml to activate pyo3/abi3-py39
  • Add version matrix to CI test-python job: ['3.9', '3.10', '3.11', '3.12', '3.13']
  • Update release workflow to build abi3 wheels targeting Python 3.9+

Changes

Modified files (4):

  • .github/workflows/ci.yml: Added Python version matrix to test-python job
  • .github/workflows/release.yml: Changed maturin build from python3.11 to python3.9
  • crates/exarch-python/pyproject.toml: Added "abi3" to maturin features
  • CHANGELOG.md: Added entry under [Unreleased]

Technical Details

abi3 strategy: Instead of building 35 wheels (7 platforms x 5 Python versions), we build 7 universal abi3 wheels (one per platform) compatible with Python 3.9-3.13. The performance overhead of abi3 is negligible for this I/O-bound library.

CI impact:

  • Test jobs: 1 -> 5 (parallel execution, no wall-clock increase)
  • Release jobs: 7 -> 7 (unchanged)
  • Cost: $0 (public repository, unlimited free minutes)

Testing

  • All existing tests pass (624 tests)
  • cargo check/fmt/clippy pass
  • No new tests required (existing tests use Python 3.9-compatible syntax)

Validation Reports

  • Security: PASSED (zero blocking findings)
  • Performance: Zero wall-clock impact, zero cost increase
  • Testing: PASSED (adequate coverage)
  • Code review: APPROVED

Related Issues

Fixes #55
Related: #56 (follow-up for ci-success gate improvement)

Enable abi3 stable ABI in pyproject.toml for universal Python wheels.
Add test-python matrix for versions 3.9-3.13 in CI workflow.
Update release workflow to build abi3 wheels targeting Python 3.9+.

Fixes #55
@github-actions github-actions bot added core Changes to exarch-core ci CI/CD changes docs Documentation python Python bindings labels Feb 6, 2026
@bug-ops bug-ops merged commit 182df9c into main Feb 6, 2026
18 checks passed
@bug-ops bug-ops deleted the feature/python-version-matrix-ci branch February 6, 2026 20:50
@bug-ops bug-ops mentioned this pull request Feb 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD changes core Changes to exarch-core docs Documentation python Python bindings

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Support for Python 3.13 in bindings

1 participant