File tree Expand file tree Collapse file tree 4 files changed +138
-11
lines changed
Expand file tree Collapse file tree 4 files changed +138
-11
lines changed Original file line number Diff line number Diff line change @@ -41,6 +41,11 @@ Version History
4141 13.10 through 18.04, Fedora 19 to 28, and RHEL/Centos 7. However, in
4242 practice most platforms don't container newer glibc symbols and are still
4343 ABI compatible with ``manylinux2014 `` and glibc 2.17.
44+ * We now require cffi >= 2.0.0b on Python 3.14. <3.14 still requires 1.17.
45+ (#274)
46+ * The cffi backend is now automatically disabled for free-threaded builds
47+ on Python <3.14, as cffi didn't implement free-threaded support until
48+ the 2.0 release. (#274)
4449
45500.24.0 (released 2025-08-17)
4651============================
Original file line number Diff line number Diff line change @@ -24,7 +24,8 @@ dependencies = []
2424
2525[project .optional-dependencies ]
2626cffi = [
27- ' cffi>=1.17 ; python_version >= "3.13" and platform_python_implementation != "PyPy"' ,
27+ " cffi~=1.17; platform_python_implementation != 'PyPy' and python_version < '3.14'" ,
28+ " cffi>=2.0.0b; platform_python_implementation != 'PyPy' and python_version >= '3.14'" ,
2829]
2930
3031[project .urls ]
@@ -33,15 +34,17 @@ Documentation = "https://python-zstandard.readthedocs.io/en/latest/"
3334
3435[build-system ]
3536requires = [
36- " cffi>=1.17.0 ; platform_python_implementation != 'PyPy'" ,
37+ " cffi~=1.17; platform_python_implementation != 'PyPy' and python_version < '3.14'" ,
38+ " cffi>=2.0.0b; platform_python_implementation != 'PyPy' and python_version >= '3.14'" ,
3739 " packaging" ,
3840 " setuptools>=77.0.0" ,
3941]
4042build-backend = " setuptools.build_meta"
4143
4244[dependency-groups ]
4345dev = [
44- " cffi>=1.17.0 ; platform_python_implementation != 'PyPy'" ,
46+ " cffi~=1.17; platform_python_implementation != 'PyPy' and python_version < '3.14'" ,
47+ " cffi>=2.0.0b; platform_python_implementation != 'PyPy' and python_version >= '3.14'" ,
4548 " hypothesis==6.111.0" ,
4649 " mypy>=1.17.1" ,
4750 " pytest>=8.4.1" ,
Original file line number Diff line number Diff line change 1010import os
1111import platform
1212import sys
13+ import sysconfig
1314
1415from setuptools import setup
1516
3031# garbage collection pitfalls.
3132# Require 1.17 everywhere so we don't have to think about supporting older
3233# versions.
33- MINIMUM_CFFI_VERSION = "1.17"
34+ # Require 2.0 for Python 3.14+ to add improved free-threading support
35+ MINIMUM_CFFI_VERSION = "2.0" if sys .version_info [0 :2 ] >= (3 , 14 ) else "1.17"
3436
3537ext_suffix = os .environ .get ("SETUPTOOLS_EXT_SUFFIX" )
3638if ext_suffix :
8991if platform .python_implementation () == "PyPy" :
9092 C_BACKEND = False
9193
94+ # cffi 2.0 only introduced no-GIL support for 3.14+.
95+ if sys .version_info [0 :2 ] < (3 , 14 ) and sysconfig .get_config_var (
96+ "Py_GIL_DISABLED"
97+ ):
98+ print (
99+ "cffi backend requires 3.14+ for nogil Python; disabling cffi" ,
100+ file = sys .stderr ,
101+ )
102+ CFFI_BACKEND = False
103+
92104if "--legacy" in sys .argv :
93105 SUPPORT_LEGACY = True
94106 sys .argv .remove ("--legacy" )
You can’t perform that action at this time.
0 commit comments