cpython/Lib
Pablo Galindo Salgado 42b25ad4d3
gh-91048: Refactor and optimize remote debugging module (#134652)
Completely refactor Modules/_remote_debugging_module.c with improved
code organization, replacing scattered reference counting and error
handling with centralized goto error paths. This cleanup improves
maintainability and reduces code duplication throughout the module while
preserving the same external API.

Implement memory page caching optimization in Python/remote_debug.h to
avoid repeated reads of the same memory regions during debugging
operations. The cache stores previously read memory pages and reuses
them for subsequent reads, significantly reducing system calls and
improving performance.

Add code object caching mechanism with a new code_object_generation
field in the interpreter state that tracks when code object caches need
invalidation. This allows efficient reuse of parsed code object metadata
and eliminates redundant processing of the same code objects across
debugging sessions.

Optimize memory operations by replacing multiple individual structure
copies with single bulk reads for the same data structures. This reduces
the number of memory operations and system calls required to gather
debugging information from the target process.

Update Makefile.pre.in to include Python/remote_debug.h in the headers
list, ensuring that changes to the remote debugging header force proper
recompilation of dependent modules and maintain build consistency across
the codebase.

Also, make the module compatible with the free threading build as an extra :)

Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
2025-05-25 20:19:29 +00:00
..
__phello__
_pyrepl GH-130328: Speedup pasting in legacy console on Windows (gh-133728) 2025-05-25 15:17:43 +02:00
asyncio gh-91048: Refactor and optimize remote debugging module (#134652) 2025-05-25 20:19:29 +00:00
collections Fix outdated reference link in collections module (gh-130349) 2025-02-20 23:58:58 +00:00
compression gh-132983: Style improvements for compression.zstd (#133547) 2025-05-14 12:08:27 +00:00
concurrent gh-132775: Use _PyObject_GetXIData (With Fallback) (gh-134440) 2025-05-22 06:50:06 -06:00
ctypes gh-131747: ctypes: Deprecate _pack_ implicitly setting _layout_ = 'ms' (GH-133205) 2025-05-05 15:32:06 +02:00
curses gh-133575: eliminate legacy checks in Lib/curses/__init__.py (#133576) 2025-05-07 20:28:32 +02:00
dbm gh-120417: Remove unused imports in the stdlib (#120420) 2024-06-12 20:56:42 +02:00
email gh-133306: Use \z instead of \Z in regular expressions in the stdlib (GH-133337) 2025-05-03 17:58:49 +03:00
encodings gh-62824: Add alias for iso-8859-8-i which is the same as iso-8859-8 (gh-134306) 2025-05-20 15:14:02 +02:00
ensurepip gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
html gh-86155: Fix data loss after unclosed script or style tag in HTMLParser (GH-22658) 2025-05-10 17:36:06 +00:00
http gh-134168: fix http.server CLI support for IPv6 and --directory when serving over HTTPS (#134169) 2025-05-24 12:19:20 +00:00
idlelib gh-133306: Use \z instead of \Z in regular expressions in the stdlib (GH-133337) 2025-05-03 17:58:49 +03:00
importlib gh-115942: Add locked to several multiprocessing locks (#115944) 2025-04-08 11:14:12 +03:00
json gh-133346: Make theming support in _colorize extensible (GH-133347) 2025-05-05 23:45:25 +02:00
logging gh-134360 Add processName attribute to logging.Formatter docstring (GH-134371) 2025-05-21 05:49:06 +01:00
multiprocessing gh-80334: fix multiprocessing.freeze_support for other spawn platforms (GH-134462) 2025-05-24 03:50:19 +00:00
pathlib GH-128520: pathlib ABCs: add JoinablePath.__vfspath__() (#133437) 2025-05-12 19:00:36 +01:00
pydoc_data Python 3.14.0b1 2025-05-06 18:33:52 +03:00
re gh-133306: Support \z as a synonym for \Z in regular expressions (GH-133314) 2025-05-03 07:54:33 +00:00
site-packages
sqlite3 gh-133447: Add basic color to sqlite3 CLI (#133461) 2025-05-10 07:59:01 +00:00
string gh-134082: modernize string.Formatter class docstring (#134125) 2025-05-18 10:10:54 +02:00
sysconfig gh-133779: Revert Windows generation of pyconfig.h and go back to a static header. (GH-133966) 2025-05-19 11:35:22 +01:00
test gh-91048: Refactor and optimize remote debugging module (#134652) 2025-05-25 20:19:29 +00:00
tkinter gh-130482: Add ability to specify name for tkinter.OptionMenu and tkinter.ttk.OptionMenu (GH-130502) 2025-05-02 14:38:50 +03:00
tomllib gh-133117: Enable stricter mypy checks for tomllib (#133206) 2025-05-03 16:57:09 +03:00
turtledemo gh-128062: Fix the font size and shortcut display of the turtledemo menu (#128063) 2024-12-19 15:24:47 -05:00
unittest gh-134565: Use ExceptionGroup to handle multiple errors in unittest.doModuleCleanups() (GH-134566) 2025-05-23 21:07:49 +03:00
urllib GH-123599: url2pathname(): don't call gethostbyname() by default (#132610) 2025-05-05 17:03:42 +00:00
venv gh-119535: 3.15 minus π (#134037) 2025-05-15 02:39:42 -07:00
wsgiref gh-133810: remove http.server.CGIHTTPRequestHandler and --cgi flag (#133811) 2025-05-17 09:58:16 +02:00
xml gh-131938: Update exception message for Element.remove() when an element is not found (#131972) 2025-04-04 15:04:07 +00:00
xmlrpc gh-120485: Add an override of allow_reuse_port on classes subclassing socketserver.TCPServer (GH-120488) 2024-06-16 13:15:03 +01:00
zipfile gh-72680: Fix false positives when using zipfile.is_zipfile() (GH-134250) 2025-05-20 18:32:41 -07:00
zoneinfo gh-114713: Revert gh-114731 (#133330) 2025-05-03 07:47:08 +00:00
__future__.py
__hello__.py
_aix_support.py
_android_support.py Fix typo in Lib/_android_support.py (#127699) 2024-12-06 19:50:58 +02:00
_apple_support.py gh-126925: Modify how iOS test results are gathered (#127592) 2024-12-09 13:28:57 +08:00
_ast_unparse.py gh-133581: Improve AST unparsing of t-strings (#133635) 2025-05-08 06:13:57 -07:00
_collections_abc.py gh-132491: Rename annotationlib.value_to_string to type_repr (#132492) 2025-04-15 20:10:53 +00:00
_colorize.py gh-133346: Make theming support in _colorize extensible (GH-133347) 2025-05-05 23:45:25 +02:00
_compat_pickle.py gh-133810: remove http.server.CGIHTTPRequestHandler and --cgi flag (#133811) 2025-05-17 09:58:16 +02:00
_ios_support.py gh-119253: use ImportError in _ios_support (#119254) 2024-05-20 16:39:30 -04:00
_markupbase.py _markupbase.py: Use a permalink for the analysis of MS-Word extensions (GH-129017) 2025-02-06 11:40:43 +01:00
_opcode_metadata.py GH-134282: Always borrow references LOAD_CONST (GH-134284) 2025-05-20 11:24:11 -04:00
_osx_support.py
_py_abc.py
_py_warnings.py gh-133306: Use \z instead of \Z in regular expressions in the stdlib (GH-133337) 2025-05-03 17:58:49 +03:00
_pydatetime.py gh-126883: Add check that timezone fields are in range for datetime.fromisoformat (#127242) 2025-05-19 14:07:11 -04:00
_pydecimal.py gh-133306: Use \z instead of \Z in regular expressions in the stdlib (GH-133337) 2025-05-03 17:58:49 +03:00
_pyio.py gh-62184: Remove _pyio import of _io.FileIO (gh-134192) 2025-05-21 17:29:18 +02:00
_pylong.py Fix typos in comments and test code (#122846) 2024-08-11 21:16:41 -07:00
_sitebuiltins.py
_strptime.py gh-122781: Allow empty offset for %z in strptime (#132922) 2025-05-20 16:39:58 +00:00
_threading_local.py gh-107006: Move threading.local docstring to docs (#131840) 2025-05-05 15:00:15 +03:00
_weakrefset.py gh-89967: make WeakKeyDictionary and WeakValueDictionary thread safe (#125325) 2024-10-13 21:05:05 +05:30
abc.py
annotationlib.py gh-133684: Fix get_annotations() where PEP 563 is involved (#133795) 2025-05-25 08:40:58 -07:00
antigravity.py
argparse.py gh-134109: Fix showing comments in pydoc output for argparse (GH-134110) 2025-05-16 23:29:14 +03:00
ast.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
base64.py gh-118761: substitute re import in base64.b16decode for a more efficient alternative (#128736) 2025-01-14 13:25:33 +00:00
bdb.py gh-132536: Do not disable PY_THROW event in bdb (#132537) 2025-04-15 18:31:52 -04:00
bisect.py
bz2.py gh-132983: Introduce compression package and move _compression module (GH-133018) 2025-04-27 14:41:30 -07:00
calendar.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
cmd.py gh-133363: Fix Cmd completion for lines beginning with ! (#133364) 2025-05-03 22:50:37 -04:00
code.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
codecs.py gh-133036: Deprecate codecs.open (#133038) 2025-04-30 10:11:09 +09:00
codeop.py gh-132449: Improve syntax error messages for keywords with typos (#132450) 2025-04-22 11:01:55 +02:00
colorsys.py gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) 2024-07-19 08:06:02 +00:00
compileall.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
configparser.py gh-130941: Fix configparser parsing values with allow_no_value and interpolation set (GH-130949) 2025-04-16 12:39:11 +02:00
contextlib.py
contextvars.py gh-126451: Register contextvars.Context to collections.abc.Mapping (#126452) 2024-11-07 01:12:45 +03:00
copy.py gh-128118: Speed up copy.copy with fast lookup for atomic and container types (#128119) 2024-12-30 18:18:42 +01:00
copyreg.py gh-132882: Fix copying of unions with members that do not support __or__ (#132883) 2025-04-24 16:49:09 +00:00
cProfile.py gh-132737: Support profiling modules that require __main___ (#132738) 2025-04-24 14:41:01 -04:00
csv.py gh-118761: Improve import time for csv (#128858) 2025-01-18 11:45:18 +01:00
dataclasses.py gh-82129: Improve annotations for make_dataclass() (#133406) 2025-05-05 08:21:32 -07:00
datetime.py gh-123843: Remove broken links to the Zope DateTimeWiki (#123846) 2024-09-08 22:39:23 -04:00
decimal.py gh-123339: Fix cases of inconsistency of __module__ and __firstlineno__ in classes (GH-123613) 2024-09-28 20:51:49 +03:00
difflib.py gh-130167: Improve `difflib.IS_LINE_JUNK` performance by using string methods (#130170) 2025-05-01 04:11:36 +00:00
dis.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
doctest.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
enum.py gh-132684: [Enum] only call _missing_ in __contains__ for Flags (GH-132790) 2025-04-24 23:13:54 -07:00
filecmp.py gh-122400: Handle ValueError in filecmp (GH-122401) 2024-07-30 08:50:30 +00:00
fileinput.py Use bool in fileinput.input() docstring and tests for the inplace argument (GH-111998) 2024-01-27 23:47:55 +02:00
fnmatch.py gh-133306: Use \z instead of \Z in fnmatch.translate() and glob.translate() (GH-133338) 2025-05-03 17:58:21 +03:00
fractions.py gh-72902: improve Fraction constructor speed for typical inputs (GH-134320) 2025-05-20 12:47:27 +03:00
ftplib.py Remove almost all unpaired backticks in docstrings (#119231) 2024-05-22 12:35:18 -04:00
functools.py gh-125028: Prohibit placeholders in partial keywords (GH-126062) 2025-05-08 10:53:53 +03:00
genericpath.py gh-117114: Make os.path.isdevdrive available on all platforms (GH-117115) 2024-03-25 22:55:11 +00:00
getopt.py gh-126946: Improve error message in getopt.do_longs based on existing comment (GH-126871) 2024-11-26 10:54:02 +02:00
getpass.py gh-77065: Use putwch instead of putch in getpass.win_getpass (#134058) 2025-05-15 15:14:31 +00:00
gettext.py gettext: Remove outdated "TODO" comment (#130890) 2025-03-06 23:41:03 +00:00
glob.py GH-128520: pathlib ABCs: add JoinablePath.__vfspath__() (#133437) 2025-05-12 19:00:36 +01:00
graphlib.py gh-130914: Make graphlib.TopologicalSorter.prepare() idempotent (#131317) 2025-03-18 16:28:00 -05:00
gzip.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
hashlib.py gh-122179: Fix hashlib.file_digest and non-blocking I/O (GH-122183) 2025-04-21 14:15:05 -07:00
heapq.py gh-110067: Make max heap methods public and add missing ones (GH-130725) 2025-05-05 17:52:49 +02:00
hmac.py gh-132388: Increase test coverage for HMAC (#132389) 2025-04-12 17:43:11 +00:00
imaplib.py gh-55454: Add IMAP4 IDLE support to imaplib (#122542) 2025-02-06 19:15:11 -08:00
inspect.py gh-132493: Remove __annotations__ usage in inspect._signature_is_functionlike (#133415) 2025-05-09 18:42:53 -07:00
io.py gh-132952: Speed up startup by importing _io instead of io (#132957) 2025-04-28 08:38:56 -07:00
ipaddress.py gh-128840: Limit the number of parts in IPv6 address parsing (GH-128841) 2025-05-24 02:57:13 +00:00
keyword.py
linecache.py gh-133253: making linecache thread-safe (#133305) 2025-05-09 12:15:16 +05:30
locale.py gh-118761: Always lazy import re in locale (#129860) 2025-03-27 15:47:08 +02:00
lzma.py gh-132983: Introduce compression package and move _compression module (GH-133018) 2025-04-27 14:41:30 -07:00
mailbox.py gh-117467: Add preserving of mailbox owner on flush (GH-117510) 2024-04-04 13:32:53 +03:00
mimetypes.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
modulefinder.py gh-114099 - Add iOS framework loading machinery. (GH-116454) 2024-03-19 08:36:19 -04:00
netrc.py
ntpath.py gh-76023: Make os.path.realpath to ignore WinError 1005 in non-strict mode (GH-128328) 2025-05-19 09:33:15 +00:00
nturl2path.py GH-125866: Deprecate nturl2path module (#131432) 2025-03-19 19:33:01 +00:00
numbers.py
opcode.py gh-131738: optimize builtin any/all/tuple calls with a generator expression arg (#131737) 2025-03-28 10:35:20 +00:00
operator.py gh-115808: Add `is_none and is_not_none to operator` (#115814) 2024-08-10 20:16:34 +01:00
optparse.py gh-118761: Redudce the import time of `optparse` (#128899) 2025-01-20 00:03:19 +00:00
os.py gh-127541: Update os.walk example (GH-127765) 2025-03-28 23:25:13 -07:00
pdb.py gh-134546: ensure remote pdb script is readable (#134552) 2025-05-23 23:07:39 -04:00
pickle.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
pickletools.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
pkgutil.py gh-131152, pkgutil: Remove unused imports (#131149) 2025-03-12 15:03:36 +01:00
platform.py gh-133604: remove deprecated java_ver function (#133888) 2025-05-16 16:17:54 +02:00
plistlib.py gh-111803: Support loading more deeply nested lists in binary plist format (GH-114024) 2024-01-13 15:26:55 +02:00
poplib.py gh-130637: Add validation for numeric response data in stat() method (#130646) 2025-03-02 08:05:40 -05:00
posixpath.py GH-118289: Fix handling of non-directories in posixpath.realpath() (#120127) 2024-11-13 22:59:32 +00:00
pprint.py gh-90117: handle dict and mapping views in pprint (#30135) 2025-05-20 12:30:00 -07:00
profile.py gh-118673: Remove shebang and executable bits from stdlib modules. (#119658) 2024-05-29 12:43:19 -04:00
pstats.py gh-118761: Improve import time for pstats and zipfile (#128981) 2025-01-23 14:49:36 +00:00
pty.py gh-124405: Fix NameError in openpty (#124406) 2024-09-24 20:06:39 +02:00
py_compile.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
pyclbr.py
pydoc.py gh-125225: Fix column misalignment in help('topics') output (gh-125226) 2025-05-19 16:10:17 +02:00
queue.py gh-117531: Unblock getters after non-immediate queue shutdown (#117532) 2024-04-10 08:01:42 -07:00
quopri.py gh-118673: Remove shebang and executable bits from stdlib modules. (#119658) 2024-05-29 12:43:19 -04:00
random.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
reprlib.py gh-132493: Avoid eager evaluation of annotations in @reprlib.recursive_repr() (#133411) 2025-05-05 19:20:11 -07:00
rlcompleter.py gh-113978: Ignore warnings on text completion inside REPL (#113979) 2024-05-21 18:28:21 +02:00
runpy.py gh-99437: runpy: decode path-like objects before setting globals 2024-01-15 16:58:50 +00:00
sched.py gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) 2024-07-19 08:06:02 +00:00
secrets.py
selectors.py
shelve.py
shlex.py gh-118761: Optimise import time for `shlex` (#132036) 2025-04-24 16:10:46 +01:00
shutil.py gh-132983: Add the compression.zstd pacakge and tests (#133365) 2025-05-06 01:38:08 +01:00
signal.py
site.py gh-128066: Properly handle history file writes for RO fs on PyREPL (gh-134380) 2025-05-20 21:47:57 +02:00
smtplib.py gh-118673: Remove shebang and executable bits from stdlib modules. (#119658) 2024-05-29 12:43:19 -04:00
socket.py gh-127840: Revert "gh-127840: pass flags and address from send_fds (GH-127841)" (#134482) 2025-05-22 03:38:44 +00:00
socketserver.py gh-80184: Set getattr(socket, "SOMAXCONN", 5) as the default queue size for TCPServer (GH-134249) 2025-05-19 19:28:09 +00:00
sre_compile.py
sre_constants.py
sre_parse.py
ssl.py gh-133623: Add ssl.HAS_PSK_TLS13 to detect external TLS 1.3 PSK support (#133624) 2025-05-09 09:09:09 +02:00
stat.py gh-120417: Remove unused imports in the stdlib (#120420) 2024-06-12 20:56:42 +02:00
statistics.py gh-132893: Minor edits to the statistics module PR (gh-133106) 2025-04-28 23:05:37 -05:00
stringprep.py
struct.py gh-120417: Add #noqa to used imports in the stdlib (#120421) 2024-06-13 16:14:50 +02:00
subprocess.py gh-133089: Use original timeout value for TimeoutExpired when the func subprocess.run is called with a timeout (GH-133103) 2025-05-05 01:15:31 +00:00
symtable.py gh-119698: deprecate `symtable.Class.get_methods` (#121902) 2024-07-22 07:04:17 -07:00
tabnanny.py gh-120495: Fix incorrect exception handling in Tab Nanny (#120498) 2024-06-15 05:04:14 -06:00
tarfile.py gh-133890: Handle UnicodeEncodeError in tarfile (GH-134147) 2025-05-18 22:21:06 +03:00
tempfile.py gh-132124: improve safety nets for creating AF_UNIX socket files (GH-134085) 2025-05-21 10:10:31 -07:00
textwrap.py gh-133306: Use \z instead of \Z in regular expressions in the stdlib (GH-133337) 2025-05-03 17:58:49 +03:00
this.py
threading.py gh-134323: Fix the new threading.RLock.locked method (#134368) 2025-05-22 13:48:24 +00:00
timeit.py gh-131178: Update help message for timeit CLI (#131326) 2025-03-30 14:19:38 +03:00
token.py gh-131507: Add support for syntax highlighting in PyREPL (GH-133247) 2025-05-02 20:22:31 +02:00
tokenize.py gh-134582: Fix t-strings untokenize() roundtrip removing space between braces (#134603) 2025-05-25 17:23:38 +01:00
trace.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
traceback.py gh-133346: Make theming support in _colorize extensible (GH-133347) 2025-05-05 23:45:25 +02:00
tracemalloc.py
tty.py gh-114328: tty cbreak mode should not alter ICRNL (#114335) 2024-01-21 15:25:52 -08:00
turtle.py gh-126349: Add 'fill', 'poly', and 'no_animation' context managers to turtle (#126350) 2025-01-18 11:27:22 +01:00
types.py gh-133372: remove out of date todos from types module about generator wrapper (#134563) 2025-05-23 05:19:41 +00:00
typing.py gh-133960: Improve typing.evaluate_forward_ref (#133961) 2025-05-25 17:26:39 +00:00
uuid.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
warnings.py gh-128384: Use a context variable for warnings.catch_warnings (gh-130010) 2025-04-09 16:18:54 -07:00
wave.py gh-133873: remove deprecated mark interface for wave.Wave_{read,write} objects (#133874) 2025-05-15 14:52:07 +00:00
weakref.py gh-89967: make WeakKeyDictionary and WeakValueDictionary thread safe (#125325) 2024-10-13 21:05:05 +05:30
webbrowser.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
zipapp.py gh-130645: Add color to stdlib argparse CLIs (gh-133380) 2025-05-05 19:46:46 +02:00
zipimport.py gh-125746: Delay deprecated zipimport.zipimporter.load_module removal time to 3.15 (#125748) 2025-02-11 23:59:09 +00:00