gh-106320: Remove private _PyInterpreterState functions (#106325)

Remove private _PyThreadState and _PyInterpreterState C API
functions: move them to the internal C API (pycore_pystate.h and
pycore_interp.h). Don't export most of these functions anymore, but
still export functions used by tests.

Remove _PyThreadState_Prealloc() and _PyThreadState_Init() from the C
API, but keep it in the stable API.
This commit is contained in:
Victor Stinner 2023-07-02 03:39:38 +02:00 committed by GitHub
parent feb51f3a64
commit 8571b271e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 86 additions and 70 deletions

View file

@ -33,6 +33,7 @@
#include "pycore_compile.h"
#include "pycore_intrinsics.h"
#include "pycore_long.h" // _PyLong_GetZero()
#include "pycore_pystate.h" // _Py_GetConfig()
#include "pycore_symtable.h" // PySTEntryObject, _PyFuture_FromAST()
#include "opcode_metadata.h" // _PyOpcode_opcode_metadata, _PyOpcode_num_popped/pushed

View file

@ -1,7 +1,8 @@
/* Python interpreter main program for frozen scripts */
#include "Python.h"
#include "pycore_runtime.h" // _PyRuntime_Initialize()
#include "pycore_pystate.h" // _Py_GetConfig()
#include "pycore_runtime.h" // _PyRuntime_Initialize()
#include <locale.h>
#ifdef MS_WINDOWS

View file

@ -1166,7 +1166,7 @@ PyInterpreterState_GetDict(PyInterpreterState *interp)
The GIL must be held.
*/
PyInterpreterState *
PyInterpreterState*
PyInterpreterState_Get(void)
{
PyThreadState *tstate = current_fast_get(&_PyRuntime);
@ -1408,7 +1408,7 @@ _PyThreadState_New(PyInterpreterState *interp)
}
// We keep this for stable ABI compabibility.
PyThreadState *
PyAPI_FUNC(PyThreadState*)
_PyThreadState_Prealloc(PyInterpreterState *interp)
{
return _PyThreadState_New(interp);
@ -1416,7 +1416,7 @@ _PyThreadState_Prealloc(PyInterpreterState *interp)
// We keep this around for (accidental) stable ABI compatibility.
// Realistically, no extensions are using it.
void
PyAPI_FUNC(void)
_PyThreadState_Init(PyThreadState *tstate)
{
Py_FatalError("_PyThreadState_Init() is for internal use only");