Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -201,14 +201,19 @@ jobs:

# Test Python bindings with coverage
test-python:
name: Test Python Bindings
name: Test Python ${{ matrix.python-version }}
needs: [changes, format]
runs-on: ubuntu-latest
timeout-minutes: 20
if: |
needs.changes.outputs.python == 'true' ||
github.ref == 'refs/heads/main' ||
github.ref == 'refs/heads/develop'
strategy:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']

steps:
- uses: actions/checkout@v6

Expand All @@ -224,7 +229,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: ${{ matrix.python-version }}

- name: Install uv
uses: astral-sh/setup-uv@v7
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: '3.9'

- name: Install maturin
run: pip install maturin
Expand All @@ -176,13 +176,13 @@ jobs:
with:
target: ${{ matrix.platform.target }}
manylinux: ${{ matrix.platform.manylinux }}
args: --release --strip --out wheels -i python3.11
args: --release --strip --out wheels -i python3.9
working-directory: crates/exarch-python

- name: Build wheels
if: ${{ !matrix.platform.manylinux }}
working-directory: crates/exarch-python
run: maturin build --release ${{ matrix.platform.maturin-args }} --strip --out wheels -i python3.11
run: maturin build --release ${{ matrix.platform.maturin-args }} --strip --out wheels -i python3.9

- name: Upload wheels
uses: actions/upload-artifact@v6
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Fixed
- Python bindings now support Python 3.9-3.13 with proper CI testing and abi3 wheels (#55)

### Performance
- **Canonicalization optimization** — `ValidationContext` enables skipping redundant `canonicalize()` syscalls during path validation. Trusted-parent fast path (via `DirCache`) and symlink-free fast path eliminate ~17% CPU overhead in extraction hot path.

Expand Down
2 changes: 1 addition & 1 deletion crates/exarch-python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ dev = [
]

[tool.maturin]
features = ["pyo3/extension-module"]
features = ["pyo3/extension-module", "abi3"]

[tool.pytest.ini_options]
testpaths = ["tests"]
Expand Down