diff --git a/newsfragments/5828.added.md b/newsfragments/5828.added.md new file mode 100644 index 00000000000..03de98da18e --- /dev/null +++ b/newsfragments/5828.added.md @@ -0,0 +1 @@ +Added FFI wrappers for the following PyUnstable APIs available in Python 3.14: `PyUnstable_Object_IsUniquelyReferenced`, `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`, `PyUnstable_TryIncref` diff --git a/pyo3-ffi/src/cpython/object.rs b/pyo3-ffi/src/cpython/object.rs index 9230a1f65e8..488347f877a 100644 --- a/pyo3-ffi/src/cpython/object.rs +++ b/pyo3-ffi/src/cpython/object.rs @@ -398,3 +398,23 @@ extern "C" { // skipped PyRefTracer // skipped PyRefTracer_SetTracer // skipped PyRefTracer_GetTracer + +#[cfg(Py_3_14)] +extern "C" { + // skipped PyUnstable_Object_EnableDeferredRefcount + + pub fn PyUnstable_Object_IsUniqueReferencedTemporary(obj: *mut PyObject) -> c_int; + + // skipped PyUnstable_IsImmortal + + pub fn PyUnstable_TryIncRef(obj: *mut PyObject) -> c_int; + + pub fn PyUnstable_EnableTryIncRef(obj: *mut PyObject) -> c_void; + + pub fn PyUnstable_Object_IsUniquelyReferenced(op: *mut PyObject) -> c_int; +} + +#[cfg(Py_3_15)] +extern "C" { + pub fn PyUnstable_SetImmortal(op: *mut PyObject) -> c_int; +}