Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
gh-106320: Remove private pylifecycle.h functions#106400
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
Remove private pylifecycle.h functions: move them to the internal CAPI ( pycore_atexit.h, pycore_pylifecycle.h and pycore_signal.h). Nolonger export most of these functions.Move _testcapi.test_atexit() to _testinternalcapi.
This broke macOS build for me. In Python/specialize.c there's a use of |
It seems like the macOS CI uses gcc. I suppose that you use clang. And clang is more strict about undefined functions. Maybe the CI should use clang? |
1 similar comment
It seems like the macOS CI uses gcc. I suppose that you use clang. And clang is more strict about undefined functions. Maybe the CI should use clang? |
corona10 commentedJul 5, 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.
@vstinner
|
Aha, maybe@gvanrossum LLVM is more recent. LLVM clang 15 made this change:https://releases.llvm.org/15.0.0/tools/clang/docs/ReleaseNotes.html
|
omniORBpy (which I maintain,https://www.omniorb.net/ ) is using _Py_IsFinalizing to avoid crashes in threads created from C++ during interpreter shutdown, as documented athttps://docs.python.org/3.13/c-api/init.html#c.PyEval_RestoreThread Is there an alternative? |
Would you mind to open a new separated issue to request a public function replacing the removed private function? Thanks in advance. |
Here it is:#108014 Thanks. |
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13See:python/cpython#106400
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13See:python/cpython#106400
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13See:python/cpython#106400
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13See:python/cpython#106400Its implementation has been the same in all supported by uvloop Pythons(3.8+), so the inlining was not conditionalized.
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13See:python/cpython#106400Its implementation has been the same in all supported by uvloop Pythons(3.8+), so the inlining was not conditionalized.
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13See:python/cpython#106400Its implementation has been the same in all supported by uvloop Pythons(3.8+), so the inlining was not conditionalized.
Python 3.13 moved some private C API functions to internal header files.Seepython/cpython#106320 for a general discussion on this (glad to seethat gnureadline was at least listed as an affected PyPI package :-) ).These private functions affect us: - _Py_SetLocaleFromEnv -> pycore_pylifecycle.h (seepython/cpython#106400) - _PyArg_CheckPositional, _PyArg_BadArgument -> pycore_modsupport.h (seepython/cpython#110964)Since we can't include these anymore, patch the relevant declarations intothe module code. The alternative (add the internal headers to this package)is much messier, as we would have to pull in most of those headers.
Uh oh!
There was an error while loading.Please reload this page.
Remove private pylifecycle.h functions: move them to the internal C API ( pycore_atexit.h, pycore_pylifecycle.h and pycore_signal.h). No longer export most of these functions.
Move _testcapi.test_atexit() to _testinternalcapi.