Skip to content

Commit 5f661f4

Browse files
committed
Add free-threaded CI builds and manylinux builds; update manylinux away from 2014 to 2_28 for much newer compiler.
1 parent 1eca97a commit 5f661f4

File tree

6 files changed

+36
-37
lines changed

6 files changed

+36
-37
lines changed

.github/workflows/tests.yml

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,19 @@ jobs:
2222
runs-on: ${{ matrix.os }}
2323
strategy:
2424
matrix:
25-
python-version: [3.9, "3.10", "3.11", "3.12", "3.13", "3.14"]
25+
python-version:
26+
- "3.10"
27+
- "3.11"
28+
- "3.12"
29+
- "3.13"
30+
- "3.14"
31+
- "3.14t"
32+
2633
# Recall the macOS builds upload built wheels so all supported versions
2734
# need to run on mac.
28-
os: [ubuntu-latest, macos-latest]
35+
os:
36+
- ubuntu-latest
37+
- macos-latest
2938
steps:
3039
- uses: actions/checkout@v5
3140
- name: Set up Python
@@ -170,15 +179,15 @@ jobs:
170179
# We use a regular Python matrix entry to share as much code as possible.
171180
strategy:
172181
matrix:
173-
python-version: [3.9]
182+
python-version:
183+
- "3.14"
174184
image:
175185
- manylinux_2_28_x86_64
176-
- manylinux2014_aarch64
177-
- manylinux2014_ppc64le
178-
- manylinux2014_s390x
179-
- manylinux2014_x86_64
180-
- musllinux_1_1_x86_64
181-
- musllinux_1_1_aarch64
186+
- manylinux_2_28_aarch64
187+
- manylinux_2_28_ppc64le
188+
- manylinux_2_28_s390x
189+
- musllinux_1_2_x86_64
190+
- musllinux_1_2_aarch64
182191
name: ${{ matrix.image }}
183192

184193
steps:

CHANGES.rst

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@
22
Changes
33
=========
44

5-
3.2.5 (unreleased)
5+
3.3.0 (unreleased)
66
==================
77

8-
- Nothing changed yet.
8+
- Drop support for Python 3.9.
9+
- Switch to distributing manylinux_2_28 wheels instead of
10+
manylinux2014 wheels. Likewise, switch from musllinux_1_1 to 1_2.
11+
- Add initial support for free-threaded builds of CPython 3.14. Due to
12+
limitations, we do not distribute binary wheels for free-threaded
13+
CPython on Windows. (Free-threaded CPython 3.13 may work, but is
14+
untested and unsupported.)
915

1016

1117
3.2.4 (2025-08-07)

appveyor.yml

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ environment:
3939

4040
# Fully supported 64-bit versions, with testing. This should be
4141
# all the current (non EOL) versions.
42+
# NOTE: As of 3.14.0, CPython doesn't distribute
43+
# free-threaded builds, so we have no way to create those.
4244
- PYTHON: "C:\\Python314-x64"
4345
PYTHON_VERSION: "3.14.0"
4446
PYTHON_ARCH: "64"
@@ -68,24 +70,6 @@ environment:
6870
PYTHON_EXE: python
6971

7072

71-
- PYTHON: "C:\\Python39-x64"
72-
PYTHON_ARCH: "64"
73-
PYTHON_VERSION: "3.9.x"
74-
PYTHON_EXE: python
75-
76-
77-
78-
# Tested 32-bit versions. A small, hand-picked selection covering
79-
# important variations. No need to include newer versions of
80-
# cpython here, 32-bit x86 windows is on the way out.
81-
82-
- PYTHON: "C:\\Python39"
83-
PYTHON_ARCH: "32"
84-
PYTHON_VERSION: "3.9.x"
85-
PYTHON_EXE: python
86-
87-
88-
8973
# Untested 64-bit versions. We don't expect any variance here from
9074
# the other tested 64-bit versions, OR they are very EOL
9175

@@ -137,6 +121,7 @@ install:
137121
& appveyor\install.ps1;
138122
}
139123

124+
- ps: "ls \"${env:PYTHON}\""
140125
# Prepend newly installed Python to the PATH of this build (this cannot be
141126
# done from inside the powershell script as it would require to restart
142127
# the parent CMD process).

make-manylinux

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ if [ -d /greenlet -a -d /opt/python ]; then
4141
which auditwheel
4242
echo "Installed Python versions"
4343
ls -l /opt/python
44-
for variant in `ls -d /opt/python/cp{314,313,39,310,311,312}*`; do
45-
if [[ "$variant" == *t ]]; then
46-
echo "Skipping no-gil build. The GIL is required."
44+
for variant in /opt/python/cp{314,313,312,311,310}*; do
45+
if [[ "$variant" == *3t ]]; then
46+
echo "Skipping no-gil build for 3.13; only 3.14 is fully supported."
4747
continue
4848
fi
4949
export PATH="$variant/bin:$OPATH"
@@ -52,7 +52,7 @@ if [ -d /greenlet -a -d /opt/python ]; then
5252
python -mpip install -U pip
5353
python -mpip install -U setuptools wheel
5454
python -mpip wheel -v --wheel-dir ./dist .
55-
python -mpip install -U .[test]
55+
python -mpip install -U ".[test]"
5656
python -m unittest discover -v greenlet.tests
5757
PATH="$OPATH" auditwheel repair dist/greenlet*.whl
5858
cp wheelhouse/greenlet*.whl /greenlet/wheelhouse
@@ -67,5 +67,5 @@ fi
6767

6868
# Mount the current directory as /greenlet
6969
# Can't use -i on Travis with arm64, "input device not a tty"
70-
docker run --rm -v "$(pwd):/greenlet" ${DOCKER_IMAGE:-quay.io/pypa/manylinux2014_x86_64} /greenlet/$(basename $0)
70+
docker run --rm -v "$(pwd):/greenlet" ${DOCKER_IMAGE:-quay.io/pypa/manylinux_2_28_x86_64} /greenlet/$(basename $0)
7171
ls -l wheelhouse

setup.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ def get_greenlet_version():
244244
'Programming Language :: Python',
245245
'Programming Language :: Python :: 3',
246246
'Programming Language :: Python :: 3 :: Only',
247-
'Programming Language :: Python :: 3.9',
248247
'Programming Language :: Python :: 3.10',
249248
'Programming Language :: Python :: 3.11',
250249
'Programming Language :: Python :: 3.12',
@@ -264,6 +263,6 @@ def get_greenlet_version():
264263
'setuptools',
265264
],
266265
},
267-
python_requires=">=3.9",
266+
python_requires=">=3.10",
268267
zip_safe=False,
269268
)

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ envlist =
55
[testenv]
66
commands =
77
python -c 'import greenlet._greenlet as G; assert G.GREENLET_USE_STANDARD_THREADING'
8-
python -m unittest discover greenlet.tests
8+
python -m unittest discover -v greenlet.tests
99
sphinx-build -b doctest -d docs/_build/doctrees-{envname} docs docs/_build/doctest-{envname}
1010
sitepackages = False
1111
extras =

0 commit comments

Comments
 (0)