Implement PEP 793 – PyModExport
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Feature or enhancement
Proposal:
See PEP 793. I'll copy the abstract for reference:
In this PEP, we propose a new entry point for C extension modules, by which one can define a module using an array of
PyModuleDef_Slotstructures without an enclosingPyModuleDefstructure. This allows extension authors to avoid using a statically allocatedPyObject, lifting the most common obstacle to making one compiled library file usable with both regular and free-threaded builds of CPython.To make this viable, we also specify new module slot types to replace
PyModuleDef’s fields, and to allow adding a token similar to thePy_tp_tokenused for type objects.We also add an API for defining modules from slots dynamically.
The existing API (
PyInit_*) is soft-deprecated. (That is: it will continue to work without warnings, and it’ll be fully documented and supported, but we plan to not add any new features to it.)
- Initial implementation (#140556)
- Docs:
- Reference docs (#141197)
- Soft-deprecate
PyInit_*(#141197) - Better explanation of module state (#141197)
- Give an example for tokens (#141197)
- Soft-deprecate
- What's New
-
a notice for(edit: This shouldn't have changed/broken more than usual.)DYNLOADFILEusers?
-
- Porting guide HOWTO
- Document that the export hook runs without GIL in FT builds (see
#141780) (#151661)
- Document that the export hook runs without GIL in FT builds (see
- Tutorial update (#142314)
- Mentions in
PyImport_AppendInittab& friends (#151661) - Make sure references to new API are linked:
-
PyMod_ExecinPyImport_CreateModuleFromInitfuncdocs is linked (#141197) -
PyMODEXPORT_FUNCin blurb for#141672 -
blurb for#141780
-
- Reference docs (#141197)
-
xxlimited.cupdate (#142827)- Remove/replace
_Py_OPAQUE_PYOBJECTinxxlimited.c(by 3.15.0 beta)
- Remove/replace
Optional stretch goals:
- Remove the
PyInitfunction fromLib/test/test_cext/extension.c(https://github.com/python/cpython/pull/141511) - Speed & size improvements
-
importdl: load the DLL once -
boolfor the GIL flag (#141519)
-
- No longer require
spec.nameinPyModule_FromSlotsAndSpec - No longer require static allocation for
Py_mod_methods - Add a
PyModule_GetStateWithToken()function
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
Linked PRs
- gh-140556
- gh-141056
- gh-141197
- gh-141511
- gh-141519
- gh-142583
- gh-142827
- gh-144340
- gh-149397
- gh-149785
- gh-151661
- gh-152064
- gh-157493
- gh-157494
- gh-157539
- gh-157560
See also:
- gh-141672
- gh-142314
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Prüfe den Vorschlag PEP 793 und die noch nicht abgehakten Stretch Goals, insbesondere Lib/test/test_cext/extension.c und den importdl-Punkt. Beginne damit, die verlinkte Implementierungs- und Dokumentationsarbeit zu prüfen, und identifiziere dann ein konkretes verbleibendes Ziel sowie dessen vorhandene Tests oder Einstiegspunkte; als erledigt gilt es, wenn dieses Ziel implementiert und durch die relevante Dokumentation oder Tests abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, python
- Bereich
- backend-api-design
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 20/100