• scoder's avatar
    Split the current "CYTHON_COMPILING_IN_LIMITED_API" macro guard (GH-3611) · 70be8d1b
    scoder authored
    * Split the current "CYTHON_COMPILING_IN_LIMITED_API" macro guard into separate feature guards:
    1) using a global module state struct ("CYTHON_USE_MODULE_STATE")
    2) using PyType_FromSpec() for extension types ("CYTHON_USE_TYPE_SPECS")
    3) actual limited-API special casing ("CYTHON_COMPILING_IN_LIMITED_API")
    
    * Start using PyType_FromModuleAndSpec() for creating extension types since that adds the module reference with PEP-573.
    
    * Do not pass the module reference into *shared* extension types since we do not want to keep the module alive just because other modules still refer to the type.
    
    * Mark the Limited-API and module state struct features as experimental.
    
    * Add CI setups for using PyType_FromSpec() for creating extension types.
    
    * Avoid overly complicated code in __Pyx_FetchCommonTypeFromSpec() when we are not compiling against the Limited-API.
    
    * Correctly set up the bases tuple for PyType_FromSpecWithBases() an...
    70be8d1b