Uh oh!
There was an error while loading. Please reload this page.
gh-106320: Remove private pylifecycle.h functions - #106400
Conversation
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.
gvanrossum
commented
Jul 4, 2023
This broke macOS build for me. In Python/specialize.c there's a use of |
vstinner
commented
Jul 5, 2023
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? cc @corona10 |
1 similar comment
vstinner
commented
Jul 5, 2023
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? cc @corona10 |
@vstinner cc @ned-deily |
vstinner
commented
Jul 5, 2023
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
|
dgrisby
commented
Jul 28, 2023
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 at https://docs.python.org/3.13/c-api/init.html#c.PyEval_RestoreThread Is there an alternative? |
vstinner
commented
Aug 16, 2023
Would you mind to open a new separated issue to request a public function replacing the removed private function? Thanks in advance. |
dgrisby
commented
Aug 16, 2023
Here it is: #108014 Thanks. |
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13 See: python/cpython#106400
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13 See: python/cpython#106400
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13 See: python/cpython#106400
private _Py_RestoreSignals() has been moved to CPython internals as of Python 3.13 See: python/cpython#106400 Its 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.13 See: python/cpython#106400 Its 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.13 See: python/cpython#106400 Its 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. See python/cpython#106320 for a general discussion on this (glad to see that gnureadline was at least listed as an affected PyPI package :-) ). These private functions affect us: - _Py_SetLocaleFromEnv -> pycore_pylifecycle.h (see python/cpython#106400) - _PyArg_CheckPositional, _PyArg_BadArgument -> pycore_modsupport.h (see python/cpython#110964) Since we can't include these anymore, patch the relevant declarations into the 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.
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.