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]

Reply via email to