Skip to content

Commit 9ef1b50

Browse files
authored
sync FFI definitions in ceval.h as of Python 3.14 (#5590)
* sync FFI definitions in ceval.h as of Python 3.14 * newsfragments
1 parent 4061f20 commit 9ef1b50

File tree

4 files changed

+27
-8
lines changed

4 files changed

+27
-8
lines changed

newsfragments/5590.added.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add FFI definitions `PyEval_GetFrameBuiltins`, `PyEval_GetFrameGlobals` and `PyEval_GetFrameLocals` on Python 3.13 and up.

newsfragments/5590.changed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Deprecate FFI definitions `PyEval_AcquireLock` and `PyEval_ReleaseLock`.

newsfragments/5590.removed.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Remove FFI definition `PyEval_GetCallStats` (removed from CPython in Python 3.7).
2+
Remove FFI definitions `PyEval_AcquireLock` and `PyEval_ReleaseLock` on Python 3.13 and up.

pyo3-ffi/src/ceval.rs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,43 +62,54 @@ extern "C" {
6262
pub fn PyEval_GetGlobals() -> *mut PyObject;
6363
#[cfg_attr(PyPy, link_name = "PyPyEval_GetLocals")]
6464
pub fn PyEval_GetLocals() -> *mut PyObject;
65+
#[cfg_attr(PyPy, link_name = "PyPyEval_GetFrame")]
6566
pub fn PyEval_GetFrame() -> *mut crate::PyFrameObject;
67+
68+
#[cfg(Py_3_13)]
69+
#[cfg_attr(PyPy, link_name = "PyPyEval_GetFrameBuiltins")]
70+
pub fn PyEval_GetFrameBuiltins() -> *mut PyObject;
71+
#[cfg(Py_3_13)]
72+
#[cfg_attr(PyPy, link_name = "PyPyEval_GetFrameGlobals")]
73+
pub fn PyEval_GetFrameGlobals() -> *mut PyObject;
74+
#[cfg(Py_3_13)]
75+
#[cfg_attr(PyPy, link_name = "PyPyEval_GetFrameLocals")]
76+
pub fn PyEval_GetFrameLocals() -> *mut PyObject;
77+
6678
#[cfg_attr(PyPy, link_name = "PyPy_AddPendingCall")]
6779
pub fn Py_AddPendingCall(
6880
func: Option<extern "C" fn(arg1: *mut c_void) -> c_int>,
6981
arg: *mut c_void,
7082
) -> c_int;
7183
#[cfg_attr(PyPy, link_name = "PyPy_MakePendingCalls")]
7284
pub fn Py_MakePendingCalls() -> c_int;
85+
7386
#[cfg_attr(PyPy, link_name = "PyPy_SetRecursionLimit")]
7487
pub fn Py_SetRecursionLimit(arg1: c_int);
7588
#[cfg_attr(PyPy, link_name = "PyPy_GetRecursionLimit")]
7689
pub fn Py_GetRecursionLimit() -> c_int;
77-
fn _Py_CheckRecursiveCall(_where: *mut c_char) -> c_int;
78-
}
7990

80-
extern "C" {
8191
#[cfg(Py_3_9)]
8292
#[cfg_attr(PyPy, link_name = "PyPy_EnterRecursiveCall")]
8393
pub fn Py_EnterRecursiveCall(arg1: *const c_char) -> c_int;
8494
#[cfg(Py_3_9)]
8595
#[cfg_attr(PyPy, link_name = "PyPy_LeaveRecursiveCall")]
8696
pub fn Py_LeaveRecursiveCall();
87-
}
8897

89-
extern "C" {
98+
#[cfg_attr(PyPy, link_name = "PyPyEval_GetFuncName")]
9099
pub fn PyEval_GetFuncName(arg1: *mut PyObject) -> *const c_char;
100+
#[cfg_attr(PyPy, link_name = "PyPyEval_GetFuncDesc")]
91101
pub fn PyEval_GetFuncDesc(arg1: *mut PyObject) -> *const c_char;
92-
pub fn PyEval_GetCallStats(arg1: *mut PyObject) -> *mut PyObject;
102+
103+
#[cfg_attr(PyPy, link_name = "PyPyEval_EvalFrame")]
93104
pub fn PyEval_EvalFrame(arg1: *mut crate::PyFrameObject) -> *mut PyObject;
105+
#[cfg_attr(PyPy, link_name = "PyPyEval_EvalFrameEx")]
94106
pub fn PyEval_EvalFrameEx(f: *mut crate::PyFrameObject, exc: c_int) -> *mut PyObject;
107+
95108
#[cfg_attr(PyPy, link_name = "PyPyEval_SaveThread")]
96109
pub fn PyEval_SaveThread() -> *mut PyThreadState;
97110
#[cfg_attr(PyPy, link_name = "PyPyEval_RestoreThread")]
98111
pub fn PyEval_RestoreThread(arg1: *mut PyThreadState);
99-
}
100112

101-
extern "C" {
102113
#[cfg(not(Py_3_13))]
103114
#[cfg_attr(PyPy, link_name = "PyPyEval_ThreadsInitialized")]
104115
#[cfg_attr(
@@ -116,7 +127,11 @@ extern "C" {
116127
)
117128
)]
118129
pub fn PyEval_InitThreads();
130+
#[cfg(not(Py_3_13))]
131+
#[deprecated(note = "Deprecated in Python 3.2")]
119132
pub fn PyEval_AcquireLock();
133+
#[cfg(not(Py_3_13))]
134+
#[deprecated(note = "Deprecated in Python 3.2")]
120135
pub fn PyEval_ReleaseLock();
121136
#[cfg_attr(PyPy, link_name = "PyPyEval_AcquireThread")]
122137
pub fn PyEval_AcquireThread(tstate: *mut PyThreadState);

0 commit comments

Comments
 (0)