]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-145563: Add thread-safety annotation for PyCapsule C-API (#146612)
authorPieter Eendebak <pieter.eendebak@gmail.com>
Tue, 31 Mar 2026 11:02:35 +0000 (13:02 +0200)
committerGitHub <noreply@github.com>
Tue, 31 Mar 2026 11:02:35 +0000 (16:32 +0530)
Doc/data/threadsafety.dat

index afb053adf5c62b46bbf69acc02caccb0f3e26958..82edd1167ef1282786cf2424ee6a8b0886b9aebb 100644 (file)
@@ -123,4 +123,33 @@ PyByteArray_GET_SIZE:atomic:
 
 # Raw data - no locking; mutating it is unsafe if the bytearray object is shared between threads
 PyByteArray_AsString:compatible:
-PyByteArray_AS_STRING:compatible:
\ No newline at end of file
+PyByteArray_AS_STRING:compatible:
+
+# Capsule objects (Doc/c-api/capsule.rst)
+
+# Type check - read ob_type pointer, always safe
+PyCapsule_CheckExact:atomic:
+
+# Creation - pure allocation, no shared state
+PyCapsule_New:atomic:
+
+# Validation - reads pointer and name fields; safe on distinct objects
+PyCapsule_IsValid:distinct:
+
+# Getters - read struct fields; safe on distinct objects but
+# concurrent access to the same capsule requires external synchronization
+PyCapsule_GetPointer:distinct:
+PyCapsule_GetName:distinct:
+PyCapsule_GetDestructor:distinct:
+PyCapsule_GetContext:distinct:
+
+# Setters - write struct fields; safe on distinct objects but
+# concurrent access to the same capsule requires external synchronization
+PyCapsule_SetPointer:distinct:
+PyCapsule_SetName:distinct:
+PyCapsule_SetDestructor:distinct:
+PyCapsule_SetContext:distinct:
+
+# Import - looks up a capsule from a module attribute and
+# calls PyCapsule_GetPointer; may call arbitrary code
+PyCapsule_Import:compatible: