2828 python-version : ${{ matrix.python-version }}
2929 - uses : actions/checkout@v4
3030 - name : Install Ruff
31+ # Pinned deliberately: Ruff 0.16.0 enables 413 rules by default, up from 59.
32+ # We don't set `lint.select` in pyproject.toml, so an unpinned upgrade silently
33+ # widened the rule set and surfaced 90 pre-existing findings. Bumping this pin
34+ # means adopting (or explicitly selecting away) the newer defaults first.
35+ # See: https://astral.sh/blog/ruff-v0.16.0
3136 run : |
3237 python -m pip install --upgrade pip
33- pip install ruff
38+ pip install ' ruff==0.15.22'
3439 - name : Lint Python code
3540 run : ruff check ${{ github.workspace }}/pedalboard
3641 - name : Check Python formatting
@@ -545,6 +550,13 @@ jobs:
545550 cc : " ccache clang" ,
546551 cxx : " ccache clang++" ,
547552 }
553+ - {
554+ os : macos-15-intel,
555+ python-version : " 3.15" ,
556+ compiler : " clang" ,
557+ cc : " ccache clang" ,
558+ cxx : " ccache clang++" ,
559+ }
548560 - {
549561 os : ubuntu-24.04,
550562 python-version : " 3.10" ,
@@ -580,6 +592,13 @@ jobs:
580592 cc : " ccache gcc" ,
581593 cxx : " ccache g++" ,
582594 }
595+ - {
596+ os : ubuntu-24.04,
597+ python-version : " 3.15" ,
598+ compiler : " gcc" ,
599+ cc : " ccache gcc" ,
600+ cxx : " ccache g++" ,
601+ }
583602 - {
584603 os : windows-latest,
585604 python-version : " 3.10" ,
@@ -615,12 +634,21 @@ jobs:
615634 cc : " msvc" ,
616635 cxx : " msvc" ,
617636 }
637+ - {
638+ os : windows-latest,
639+ python-version : " 3.15" ,
640+ compiler : " msvc" ,
641+ cc : " msvc" ,
642+ cxx : " msvc" ,
643+ }
618644 name : Test with Python ${{ matrix.python-version }} on ${{ matrix.os }}
619645 steps :
620646 - name : Set up Python ${{ matrix.python-version }}
621647 uses : actions/setup-python@v5
622648 with :
623649 python-version : ${{ matrix.python-version }}
650+ # Required while the newest Python in the matrix is still a release candidate:
651+ allow-prereleases : true
624652 - uses : actions/checkout@v4
625653 with :
626654 submodules : recursive
@@ -750,14 +778,16 @@ jobs:
750778 needs : [prime-asan-build-caches]
751779 strategy :
752780 matrix :
753- python-version : ["3.10", "3.11", "3.12", "3.13", "3.14"]
781+ python-version : ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15" ]
754782 os : ["ubuntu-24.04"]
755783 name : Test with Python ${{ matrix.python-version }} + Address Sanitizer
756784 steps :
757785 - name : Set up Python ${{ matrix.python-version }}
758786 uses : actions/setup-python@v5
759787 with :
760788 python-version : ${{ matrix.python-version }}
789+ # Required while the newest Python in the matrix is still a release candidate:
790+ allow-prereleases : true
761791 - uses : actions/checkout@v4
762792 with :
763793 submodules : recursive
@@ -850,13 +880,16 @@ jobs:
850880 - { os: macos-15-intel, build: cp313-macosx_arm64 }
851881 - { os: macos-15-intel, build: cp314-macosx_arm64 }
852882 - { os: macos-15-intel, build: cp314t-macosx_arm64 }
883+ - { os: macos-15-intel, build: cp315-macosx_arm64 }
884+ - { os: macos-15-intel, build: cp315t-macosx_arm64 }
853885 # - { os: macos-15-intel, build: pp38-macosx_x86_64 }
854886 # - { os: macos-15-intel, build: pp39-macosx_x86_64 }
855887 - { os: windows-latest, build: cp310-win_amd64 }
856888 - { os: windows-latest, build: cp311-win_amd64 }
857889 - { os: windows-latest, build: cp312-win_amd64 }
858890 - { os: windows-latest, build: cp313-win_amd64 }
859891 - { os: windows-latest, build: cp314-win_amd64 }
892+ - { os: windows-latest, build: cp315-win_amd64 }
860893 # - { os: windows-latest, build: cp312-win32 }
861894 - { os: "ubuntu-24.04", build: cp310-manylinux_x86_64 }
862895 - { os: "ubuntu-24.04-arm", build: cp310-manylinux_aarch64 }
@@ -877,6 +910,9 @@ jobs:
877910 - { os: "ubuntu-24.04", build: cp314-manylinux_x86_64 }
878911 - { os: "ubuntu-24.04-arm", build: cp314-manylinux_aarch64 }
879912 - { os: "ubuntu-24.04-arm", build: cp314t-manylinux_aarch64 }
913+ - { os: "ubuntu-24.04", build: cp315-manylinux_x86_64 }
914+ - { os: "ubuntu-24.04-arm", build: cp315-manylinux_aarch64 }
915+ - { os: "ubuntu-24.04-arm", build: cp315t-manylinux_aarch64 }
880916 name : Build wheel for ${{ matrix.build }}
881917 steps :
882918 - uses : actions/checkout@v4
@@ -887,7 +923,9 @@ jobs:
887923 with :
888924 python-version : " 3.13"
889925 - name : Install cibuildwheel
890- run : python -m pip install 'cibuildwheel>=3.0,<4'
926+ # cibuildwheel 4.2.0 is the first release to build CPython 3.15 wheels by
927+ # default (using 3.15.0rc1, which is ABI-compatible with the final release).
928+ run : python -m pip install 'cibuildwheel>=4.2,<5'
891929 - name : Build wheels
892930 run : python -m cibuildwheel --output-dir wheelhouse
893931 env :
0 commit comments