Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
gh-85283: Add PySys_Audit() to the limited C API#108571
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
IMO this function is a poor fit for the limited API: it uses varargs, making it difficult to use from non-C languages. See alsocapi-workgroup/problems#35 |
The C API has multiple functions using varargs:
Right, they cannot be used in programming languages other than C. But well, C remains widely used, and using this function is relevant in C, no? Which alternative do you propose? PySys_Audit() is related to security and it doesn't get the |
Yup, but they all have alternatives that don't use varargs -- you can use There's no such alternative to |
I'm not sure that I can follow your rationale. Because there are programming languages which cannot use a C API with variadic arguments, the These programming languages can already build a tuple and call Are you sure that there are programming languages which are used to write Python extensions and cannot use variadic arguments? In C, variadic arguments are very commonly used, by For me, the advantage of adding Note: If there are programming languages which are used to write Python extensions and cannot use variadic arguments, why not letting them to call I think that C and C++ are still commonly used these days to write C extensions for Python. |
No. Those that can use
It was mentioned by@steve-s incapi-workgroup/problems#35 (comment). Should we dig for the rationale?
Yup, C uses them a lot, but e.g. Rust is doing just fine without vararg functions.
As you mentioned, |
I wrote PR#108965 to add PySys_AuditTuple() to the non-limited C API. Since it's a new API, I would prefer to start by adding it the non-limited C API first, and wait one version to move it the limited C API. Just in case if something goes wrong. |
f1da73b
to8b5bf44
Compareencukou commentedSep 7, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Thank you! |
Sorry, you want to wait for what? |
I would prefer to wait until both |
This function was added in Python 3.8 by the PEP 578 "Python RuntimeAudit Hooks". Add also PySys_AuditTuple() to the limited C API,function added to Python 3.13.Move also non-limited "PerfMap" C API from Include/sysmodule.h toInclude/cpython/sysmodule.h.
Right. I updated my PR to add PySys_Audit() and PySys_AuditTuple() to the limited C API version 3.13 (and so to the stable ABI). |
Merged. Thanks@encukou for telling me about variadic arguments, the additional of the PySys_AuditTuple() function solves this issue. |
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 addedto Python 3.13.Move non-limited "PerfMap" C API from Include/sysmodule.h toInclude/cpython/sysmodule.h.
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 addedto Python 3.13.Move non-limited "PerfMap" C API from Include/sysmodule.h toInclude/cpython/sysmodule.h.
Uh oh!
There was an error while loading.Please reload this page.
This function was added in Python 3.8 by the PEP 578 "Python Runtime Audit Hooks". It is needed to convert some stdlib extensions to the limited C API, like fcntl, resource and syslog.
Move also non-limited "PerfMap" C API from Include/sysmodule.h to Include/cpython/sysmodule.h.
📚 Documentation preview 📚:https://cpython-previews--108571.org.readthedocs.build/