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