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
3 changes: 2 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
benchmark/*.png filter=lfs diff=lfs merge=lfs -text
benchmark/results/bench_all.csv.gz filter=lfs diff=lfs merge=lfs -text
benchmark/results/*.png filter=lfs diff=lfs merge=lfs -text
benchmark/results/*.csv.gz filter=lfs diff=lfs merge=lfs -text
40 changes: 40 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,17 @@ jobs:
os: ubuntu-latest
- python: "3.14"
os: ubuntu-latest
# Fresh build under a free-threaded interpreter. None of the C
# extensions declare Py_mod_gil yet, so importing one re-enables
# the GIL by default - PYTHON_GIL=0 below keeps it off anyway so
# the suite actually exercises real no-GIL concurrency (their
# thread-safety is what tests/test_free_threading.py checks).
- python: "3.13t"
os: ubuntu-latest
free_threaded: true
- python: "3.14t"
os: ubuntu-latest
free_threaded: true
- python: "3.10"
os: windows-latest
- python: "3.11"
Expand Down Expand Up @@ -75,12 +86,41 @@ jobs:
COVERALLS_PARALLEL: 'true'
COVERALLS_SERVICE_NAME: github
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PYTHON_GIL: ${{ matrix.free_threaded && '0' || '' }}
- name: Report coverage
run: uv run coveralls
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Builds normally under a regular interpreter, then runs the suite through
# a free-threaded one of the same X.Y against that same install. The
# compiled extensions' SOABI won't match the free-threaded interpreter, so
# they simply fail to import (same ImportError path as any unsupported
# platform) - only python_aio ends up available, and unlike the `tests`
# matrix's own free-threaded entries above, nothing gets the chance to
# re-enable the GIL first.
free-threaded-python-only:
needs: lint
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python: ["3.13", "3.14"]
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
python-version: "${{ matrix.python }}"
- run: uv sync --extra develop
- run: uv python install "${{ matrix.python }}t"
- name: Run tests under the free-threaded interpreter against this install
run: |
FREE_THREADED_PYTHON="$(uv python find "${{ matrix.python }}t")"
PYTHONPATH="$(pwd)/.venv/lib/python${{ matrix.python }}/site-packages" "$FREE_THREADED_PYTHON" -m pytest -sv tests
env:
FORCE_COLOR: 1

finish:
needs:
- tests
Expand Down
18 changes: 8 additions & 10 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
contents: write
strategy:
matrix:
python: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314]
python: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314, cp313-cp313t, cp314-cp314t]
steps:
- uses: actions/checkout@v4
- name: Set version from release tag
Expand All @@ -61,7 +61,7 @@ jobs:
contents: write
strategy:
matrix:
python: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314]
python: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314, cp313-cp313t, cp314-cp314t]
steps:
- uses: actions/checkout@v4
- name: Set version from release tag
Expand All @@ -87,7 +87,7 @@ jobs:
contents: write
strategy:
matrix:
python: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314]
python: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314, cp313-cp313t, cp314-cp314t]
steps:
- uses: actions/checkout@v4
- name: Set version from release tag
Expand Down Expand Up @@ -124,7 +124,7 @@ jobs:
contents: write
strategy:
matrix:
python: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314]
python: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314, cp313-cp313t, cp314-cp314t]
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
Expand Down Expand Up @@ -154,17 +154,15 @@ jobs:
contents: write
strategy:
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.13t", "3.14t"]
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
- name: Set version from release tag
run: uv version --frozen "${GITHUB_REF_NAME#v}"
- uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python }}"
- run: pip install build
- run: python -m build --wheel
- name: Set version from release tag
run: uv version --frozen "${GITHUB_REF_NAME#v}"
- run: uv build --wheel
- uses: actions/upload-artifact@v4
with:
name: wheel-macos-${{ matrix.python }}
Expand Down
12 changes: 11 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,22 @@ sdist:
python3.14 -m venv $@
$@/bin/python -m pip install -U pip setuptools build wheel

mac_wheel: .venvs/3.10 .venvs/3.11 .venvs/3.12 .venvs/3.13 .venvs/3.14
.venvs/3.13t: .venvs
python3.13t -m venv $@
$@/bin/python -m pip install -U pip setuptools build wheel

.venvs/3.14t: .venvs
python3.14t -m venv $@
$@/bin/python -m pip install -U pip setuptools build wheel

mac_wheel: .venvs/3.10 .venvs/3.11 .venvs/3.12 .venvs/3.13 .venvs/3.14 .venvs/3.13t .venvs/3.14t
.venvs/3.10/bin/python -m build
.venvs/3.11/bin/python -m build
.venvs/3.12/bin/python -m build
.venvs/3.13/bin/python -m build
.venvs/3.14/bin/python -m build
.venvs/3.13t/bin/python -m build
.venvs/3.14t/bin/python -m build

linux_wheel:
docker run -it --rm \
Expand Down
3 changes: 0 additions & 3 deletions benchmark/chunk_sweep_latency_rand.png

This file was deleted.

3 changes: 0 additions & 3 deletions benchmark/chunk_sweep_latency_seq.png

This file was deleted.

3 changes: 0 additions & 3 deletions benchmark/chunk_sweep_throughput_rand.png

This file was deleted.

3 changes: 0 additions & 3 deletions benchmark/chunk_sweep_throughput_seq.png

This file was deleted.

3 changes: 0 additions & 3 deletions benchmark/concurrency_sweep_latency_rand.png

This file was deleted.

3 changes: 0 additions & 3 deletions benchmark/concurrency_sweep_latency_seq.png

This file was deleted.

3 changes: 0 additions & 3 deletions benchmark/concurrency_sweep_throughput_rand.png

This file was deleted.

3 changes: 0 additions & 3 deletions benchmark/concurrency_sweep_throughput_seq.png

This file was deleted.

3 changes: 0 additions & 3 deletions benchmark/latency_histograms.png

This file was deleted.

Loading
Loading