Skip to content

Commit

Permalink
bpo-43795: Remove Py_FrozenMain from the Limited API & Stable ABI (p…
Browse files Browse the repository at this point in the history
…ythonGH-26241)

Py_FrozenMain was added to the Limited C API in [bpo-42591]() (3.10.0a4);
but to fix that issue it would be enough to add it to the regular C API.

The function is undocumented, tests were added very recently ([bpo-44131]()),
and most importantly, it is not present in all builds of Python, as
the linker sometimes omits it as unused.
It should be added back when these issues are fixed.

Note that this does not affect Python's regular C API.
  • Loading branch information
encukou authored May 25, 2021
1 parent 63f17c2 commit d168569
Show file tree
Hide file tree
Showing 7 changed files with 9 additions and 7 deletions.
1 change: 0 additions & 1 deletion Doc/data/stable_abi.dat
Original file line number Diff line number Diff line change
Expand Up @@ -783,7 +783,6 @@ var,Py_FileSystemDefaultEncodeErrors,3.10,
var,Py_FileSystemDefaultEncoding,3.2,
function,Py_Finalize,3.2,
function,Py_FinalizeEx,3.6,
function,Py_FrozenMain,3.10,
function,Py_GenericAlias,3.9,
function,Py_GenericAliasType,3.9,
function,Py_GetBuildInfo,3.2,
Expand Down
4 changes: 4 additions & 0 deletions Doc/whatsnew/3.10.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1927,6 +1927,10 @@ Porting to Python 3.10
instead.
(Contributed by Victor Stinner and Erlend E. Aasland in :issue:`43908`.)
* The undocumented function ``Py_FrozenMain`` has been removed from the
limited API. The function is mainly useful for custom builds of Python.
(Contributed by Petr Viktorin in :issue:`26241`)
Deprecated
----------
Expand Down
4 changes: 4 additions & 0 deletions Include/cpython/pylifecycle.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
# error "this header file must not be included directly"
#endif

/* Py_FrozenMain is kept out of the Limited API until documented and present
in all builds of Python */
PyAPI_FUNC(int) Py_FrozenMain(int argc, char **argv);

/* Only used by applications that embed the interpreter and need to
* override the standard encoding determination mechanism
*/
Expand Down
3 changes: 0 additions & 3 deletions Include/pylifecycle.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@ PyAPI_FUNC(void) _Py_NO_RETURN Py_Exit(int);

/* Bootstrap __main__ (defined in Modules/main.c) */
PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv);

PyAPI_FUNC(int) Py_FrozenMain(int argc, char **argv);

PyAPI_FUNC(int) Py_BytesMain(int argc, char **argv);

/* In pathconfig.c */
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The undocumented function :c:func:`Py_FrozenMain` is removed from the Limited API.
2 changes: 0 additions & 2 deletions Misc/stable_abi.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2079,8 +2079,6 @@ function PyType_GetModule
added 3.10
function PyType_GetModuleState
added 3.10
function Py_FrozenMain
added 3.10
function PyFrame_GetLineNumber
added 3.10
function PyFrame_GetCode
Expand Down
1 change: 0 additions & 1 deletion PC/python3dll.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ EXPORT_FUNC(Py_Exit)
EXPORT_FUNC(Py_FatalError)
EXPORT_FUNC(Py_Finalize)
EXPORT_FUNC(Py_FinalizeEx)
EXPORT_FUNC(Py_FrozenMain)
EXPORT_FUNC(Py_GenericAlias)
EXPORT_FUNC(Py_GenericAliasType)
EXPORT_FUNC(Py_GetArgcArgv)
Expand Down

0 comments on commit d168569

Please sign in to comment.