GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||
GeezerVison is showing github.com — gh-85283: Add PySys_Audit() to the limited C API by vstinner · Pull Request #108571 · python/cpython 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 also capi-workgroup/problems#35 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
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 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Yup, but they all have alternatives that don't use varargs -- you can use There's no such alternative to |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
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. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
No. Those that can use
It was mentioned by @steve-s in capi-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, |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
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. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
f1da73b to
8b5bf44
Compare
There was an error while loading. Please reload this page.
|
Thank you! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Sorry, you want to wait for what? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I would prefer to wait until both |
Sorry, something went wrong.
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". 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 to Include/cpython/sysmodule.h.
8b5bf44 to
cf09536
Compare
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). |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Merged. Thanks @encukou for telling me about variadic arguments, the additional of the PySys_AuditTuple() function solves this issue. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
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.
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.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.