Rationale: JIT code often needs access to functions called from the interpreter loop (in ceval.c or bytecodes.c), even if they are technically internal functions. gh-115802 is a good example - it added PyAPI_FUNC to a lot of functions in Include/internal.
Cinder currently relies on a fork of 3.12 with a lot of new functions exposed; some but not all of these have also been exposed in 3.13+. As a start, I would like to send in a PR for the functions we have already needed to expose for cinder (e.g. _PyNumber_InPlacePowerNoMod), but more generally it might be useful to look at all the Py* and _Py* functions used directly in ceval or bytecodes and consider exposing them even if no specific JIT has needed them yet.
Linked PRs
Rationale: JIT code often needs access to functions called from the interpreter loop (in
ceval.corbytecodes.c), even if they are technically internal functions. gh-115802 is a good example - it addedPyAPI_FUNCto a lot of functions inInclude/internal.Cinder currently relies on a fork of 3.12 with a lot of new functions exposed; some but not all of these have also been exposed in 3.13+. As a start, I would like to send in a PR for the functions we have already needed to expose for cinder (e.g.
_PyNumber_InPlacePowerNoMod), but more generally it might be useful to look at all thePy*and_Py*functions used directly in ceval or bytecodes and consider exposing them even if no specific JIT has needed them yet.Linked PRs