https://github.com/python/cpython/commit/b7d722547bcc9e92dca4837b9fdbe7457788820b
commit: b7d722547bcc9e92dca4837b9fdbe7457788820b
branch: main
author: Kumar Aditya <[email protected]>
committer: kumaraditya303 <[email protected]>
date: 2025-07-16T22:09:08+05:30
summary:
gh-136669: build `_asyncio` as static module (#136670)
`_asyncio` is now built as a static module so that thread states can be
accessed directly via registers and avoids the overhead of function call.
files:
A Misc/NEWS.d/next/Library/2025-07-15-16-37-34.gh-issue-136669.Yexwah.rst
M Modules/Setup.stdlib.in
M Modules/_remote_debugging_module.c
diff --git
a/Misc/NEWS.d/next/Library/2025-07-15-16-37-34.gh-issue-136669.Yexwah.rst
b/Misc/NEWS.d/next/Library/2025-07-15-16-37-34.gh-issue-136669.Yexwah.rst
new file mode 100644
index 00000000000000..0d93397ff35d0b
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-07-15-16-37-34.gh-issue-136669.Yexwah.rst
@@ -0,0 +1 @@
+:mod:`!_asyncio` is now statically linked for improved performance.
diff --git a/Modules/Setup.stdlib.in b/Modules/Setup.stdlib.in
index 3a38a60a152e8c..86c8eb27c0a6c7 100644
--- a/Modules/Setup.stdlib.in
+++ b/Modules/Setup.stdlib.in
@@ -32,7 +32,6 @@
############################################################################
# Modules that should always be present (POSIX and Windows):
@MODULE_ARRAY_TRUE@array arraymodule.c
-@MODULE__ASYNCIO_TRUE@_asyncio _asynciomodule.c
@MODULE__BISECT_TRUE@_bisect _bisectmodule.c
@MODULE__CSV_TRUE@_csv _csv.c
@MODULE__HEAPQ_TRUE@_heapq _heapqmodule.c
@@ -193,3 +192,9 @@
# Limited API template modules; must be built as shared modules.
@MODULE_XXLIMITED_TRUE@xxlimited xxlimited.c
@MODULE_XXLIMITED_35_TRUE@xxlimited_35 xxlimited_35.c
+
+
+# for performance
+*static*
+
+@MODULE__ASYNCIO_TRUE@_asyncio _asynciomodule.c
diff --git a/Modules/_remote_debugging_module.c
b/Modules/_remote_debugging_module.c
index d72031137e0a4e..b50e5e403a1a19 100644
--- a/Modules/_remote_debugging_module.c
+++ b/Modules/_remote_debugging_module.c
@@ -811,7 +811,7 @@ _Py_RemoteDebug_GetAsyncioDebugAddress(proc_handle_t*
handle)
}
#elif defined(__linux__)
// On Linux, search for asyncio debug in executable or DLL
- address = search_linux_map_for_section(handle, "AsyncioDebug",
"_asyncio.cpython");
+ address = search_linux_map_for_section(handle, "AsyncioDebug", "python");
if (address == 0) {
// Error out: 'python' substring covers both executable and DLL
PyObject *exc = PyErr_GetRaisedException();
@@ -820,10 +820,10 @@ _Py_RemoteDebug_GetAsyncioDebugAddress(proc_handle_t*
handle)
}
#elif defined(__APPLE__) && TARGET_OS_OSX
// On macOS, try libpython first, then fall back to python
- address = search_map_for_section(handle, "AsyncioDebug",
"_asyncio.cpython");
+ address = search_map_for_section(handle, "AsyncioDebug", "libpython");
if (address == 0) {
PyErr_Clear();
- address = search_map_for_section(handle, "AsyncioDebug",
"_asyncio.cpython");
+ address = search_map_for_section(handle, "AsyncioDebug", "python");
}
if (address == 0) {
// Error out: 'python' substring covers both executable and DLL
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]