Skip to content

Commit 3617733

Browse files
authored
feat: add CPython 3.15 beta 1 (#2833)
1 parent 8bdb703 commit 3617733

10 files changed

Lines changed: 147 additions & 51 deletions

File tree

README.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,26 @@ What does it do?
2222

2323
While cibuildwheel itself requires a recent Python version to run (we support the last three releases), it can target the following versions to build wheels:
2424

25-
| | macOS Intel | macOS Apple Silicon | Windows 64bit | Windows 32bit | Windows Arm64 | manylinux<br/>musllinux x86_64 | manylinux<br/>musllinux i686 | manylinux<br/>musllinux aarch64 | manylinux<br/>musllinux ppc64le | manylinux<br/>musllinux s390x | manylinux<br/>musllinux armv7l | Android | iOS | Pyodide |
26-
| ------------------ | ----------- | ------------------- | ------------- | ------------- | -------------- | ------------------------------ | ---------------------------- | ------------------------------- | ------------------------------- | ----------------------------- | ------------------------------ | ------- | --- | -------------- |
27-
| CPython 3.9 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> | N/A | N/A | N/A |
28-
| CPython 3.10 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> | N/A | N/A | N/A |
29-
| CPython 3.11 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> | N/A | N/A | N/A |
30-
| CPython 3.12 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> | N/A | N/A | ✅<sup>3</sup> |
31-
| CPython 3.13 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> ||| ✅<sup>3</sup> |
32-
| CPython 3.14 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> ||| N/A |
33-
| PyPy 3.8 v7.3 || || N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> |<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
34-
| PyPy 3.9 v7.3 |||| N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
35-
| PyPy 3.10 v7.3 |||| N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
36-
| PyPy 3.11 v7.3 |||| N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
37-
| GraalPy 3.11 v24.2 |||| N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
38-
| GraalPy 3.12 v25.0 |||| N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
25+
| | macOS Intel | macOS Apple Silicon | Windows 64bit | Windows 32bit | Windows Arm64 | manylinux<br/>musllinux x86_64 | manylinux<br/>musllinux i686 | manylinux<br/>musllinux aarch64 | manylinux<br/>musllinux ppc64le | manylinux<br/>musllinux s390x | manylinux<br/>musllinux armv7l | Android | iOS | Pyodide |
26+
| ------------------------ | ----------- | ------------------- | ------------- | ------------- | -------------- | ------------------------------ | ---------------------------- | ------------------------------- | ------------------------------- | ----------------------------- | ------------------------------ | ------- | --- | -------------- |
27+
| CPython 3.9 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> | N/A | N/A | N/A |
28+
| CPython 3.10 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> | N/A | N/A | N/A |
29+
| CPython 3.11 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> | N/A | N/A | N/A |
30+
| CPython 3.12 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> | N/A | N/A | ✅<sup>3</sup> |
31+
| CPython 3.13 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> ||| ✅<sup>3</sup> |
32+
| CPython 3.14 ||||| ✅<sup>2</sup> |||||| ✅<sup>4</sup> ||| N/A |
33+
| CPython 3.15<sup>5</sup> | | | || ✅<sup>2</sup> | | | | | | ✅<sup>4</sup> | N/A | N/A | N/A |
34+
| PyPy 3.9 v7.3 |||| N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
35+
| PyPy 3.10 v7.3 |||| N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
36+
| PyPy 3.11 v7.3 |||| N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
37+
| GraalPy 3.11 v24.2 |||| N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
38+
| GraalPy 3.12 v25.0 |||| N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
3939

4040
<sup>**1** PyPy & GraalPy are only supported for manylinux wheels.</sup><br>
4141
<sup>**2** Windows arm64 support is experimental.</sup><br>
4242
<sup>**3** Experimental, not yet supported on PyPI, but can be used directly in web deployment. Use `--platform pyodide` to build.</sup><br>
4343
<sup>**4** manylinux armv7l support is experimental. As there are no RHEL based image for this architecture, it's using an Ubuntu based image instead.</sup><br>
44+
<sup>**5** Python 3.15 requires opt-in using [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable).</sup><br>
4445

4546
- Builds manylinux, musllinux, macOS, and Windows wheels for CPython, PyPy, and GraalPy
4647
- Works on GitHub Actions, Azure Pipelines, CircleCI, and GitLab CI

cibuildwheel/platforms/macos.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ def install_cpython(_tmp: Path, version: str, url: str, free_threading: bool) ->
157157
args = []
158158
if version.startswith("3.14"):
159159
args += ["-applyChoiceChangesXML", str(resources.FREE_THREAD_ENABLE_314.resolve())]
160+
elif version.startswith("3.15"):
161+
args += ["-applyChoiceChangesXML", str(resources.FREE_THREAD_ENABLE_315.resolve())]
160162
call("sudo", "installer", "-pkg", pkg_path, *args, "-target", "/")
161163
pkg_path.unlink()
162164
env = os.environ.copy()

0 commit comments

Comments
 (0)