Skip to content

Commit

Permalink
pythongh-85283: Add PySys_Audit() to the limited C API (python#108571)
Browse files Browse the repository at this point in the history
The PySys_Audit() function was added in Python 3.8 by the PEP 578
"Python Runtime Audit Hooks".

Add also PySys_AuditTuple() to the limited C API, function added
to Python 3.13.

Move non-limited "PerfMap" C API from Include/sysmodule.h to
Include/cpython/sysmodule.h.
  • Loading branch information
vstinner authored and Glyphack committed Jan 27, 2024
1 parent 08b1645 commit 3ec26a2
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 14 deletions.
2 changes: 2 additions & 0 deletions Doc/data/stable_abi.dat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions Doc/whatsnew/3.13.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1059,6 +1059,11 @@ New Features
(version 3.13).
(Contributed by Victor Stinner in :gh:`85283`.)

* Add :c:func:`PySys_Audit` and :c:func:`PySys_AuditTuple` functions to the
limited C API.
(Contributed by Victor Stinner in :gh:`85283`.)


Porting to Python 3.13
----------------------

Expand Down
14 changes: 11 additions & 3 deletions Include/cpython/sysmodule.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ PyAPI_FUNC(int) PySys_Audit(
...);
PyAPI_FUNC(int) PySys_AddAuditHook(Py_AuditHookFunction, void*);

PyAPI_FUNC(int) PySys_AuditTuple(
const char *event,
PyObject *args);
typedef struct {
FILE* perf_map;
PyThread_type_lock map_lock;
} PerfMapState;

PyAPI_FUNC(int) PyUnstable_PerfMapState_Init(void);
PyAPI_FUNC(int) PyUnstable_WritePerfMapEntry(
const void *code_addr,
unsigned int code_size,
const char *entry_name);
PyAPI_FUNC(void) PyUnstable_PerfMapState_Fini(void);
20 changes: 9 additions & 11 deletions Include/sysmodule.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,15 @@ Py_DEPRECATED(3.13) PyAPI_FUNC(void) PySys_ResetWarnOptions(void);

PyAPI_FUNC(PyObject *) PySys_GetXOptions(void);

#if !defined(Py_LIMITED_API)
typedef struct {
FILE* perf_map;
PyThread_type_lock map_lock;
} PerfMapState;

PyAPI_FUNC(int) PyUnstable_PerfMapState_Init(void);

PyAPI_FUNC(int) PyUnstable_WritePerfMapEntry(const void *code_addr, unsigned int code_size, const char *entry_name);

PyAPI_FUNC(void) PyUnstable_PerfMapState_Fini(void);
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030d0000
PyAPI_FUNC(int) PySys_Audit(
const char *event,
const char *argFormat,
...);

PyAPI_FUNC(int) PySys_AuditTuple(
const char *event,
PyObject *args);
#endif

#ifndef Py_LIMITED_API
Expand Down
2 changes: 2 additions & 0 deletions Lib/test/test_stable_abi_ctypes.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Add the :c:func:`PySys_Audit` function to the limited C API. Patch by Victor
Stinner.
4 changes: 4 additions & 0 deletions Misc/stable_abi.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2474,3 +2474,7 @@
added = '3.13'
[function.PyMem_RawFree]
added = '3.13'
[function.PySys_Audit]
added = '3.13'
[function.PySys_AuditTuple]
added = '3.13'
2 changes: 2 additions & 0 deletions PC/python3dll.c

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 3ec26a2

Please sign in to comment.