Preserve comment spans and count a logical newline once when converting
single-mode multiple-statement diagnostics to character locations.
Assisted-by: OpenAI Codex:model-version-unavailable
Traverse input callbacks, buffer iterators, memo slots and memo proxy owners.
Clear outgoing payload edges through deferred drops and retire successful
reinitialization state outside the state lock. Retain stream and buffers
payload-cycle regressions in the existing pickle snippet.
Assisted-by: OpenAI Codex:model-version-unavailable
* Align duplicate-parameter diagnostics with Python 3.15
Preserve source names and locations in both symbol-table paths, and migrate
the existing canonical codeop expectation through update_lib.
Assisted-by: OpenAI Codex: model version unavailable
* Sync positional-only duplicate-parameter expectations
Migrate the full pinned CPython 3.15.0 test file through update_lib. Its only delta is six existing expected messages, completing the dependent canonical wording coverage.
Assisted-by: OpenAI Codex: model version unavailable
* Mark wrapper descriptors as method descriptors
Match CPython 3.15 wrapper_descriptor flags so existing method lookup
can use the descriptor's direct receiver-prepending dispatch path.
Assisted-by: OpenAI Codex:model-version-unavailable
* Retire fixed wrapper monitoring expected failure
Regenerate test_monitoring from pinned CPython 3.15.0 with the updater, preserving every other adaptation. The METHOD_DESCRIPTOR flag now supplies the canonical receiver in int.__repr__ CALL/C_RETURN events.
Assisted-by: OpenAI Codex:model-version-unavailable
Use inspect's raw own-doc helper on Python 3.15, retaining the old
pydoc helper for earlier versions. Separate artifact generation from
repository publication, with an explicit main-only artifact mode.
Assisted-by: OpenAI Codex:model-version-unavailable
Report the qualified awaitable and returned type when __await__ does not
produce an iterator, preserving the existing coroutine/iterator checks.
Migrate test_coroutines.py from pinned CPython v3.15.0 through update_lib.
Assisted-by: OpenAI Codex:model-version-unavailable
Refresh the IDLE, Tkinter and turtle family through update_lib, including
the direct canonical text-only helper and image fixture dependencies.
Preserve capability/display guards without changing native Tk support.
Assisted-by: OpenAI Codex:model-version-unavailable
Accept the module keyword when building symbol tables and emit only parser
warnings through the existing bounded warning path. Preserve source filenames
and warning-to-SyntaxError conversion without compiling bytecode.
Expose canonical lambda and generator-expression names while retaining
already-bracketed comprehension names. Synchronize symtable and its tests
from pinned CPython 3.15.0 through update_lib, including cell introspection.
Assisted-by: OpenAI Codex:model-version-unavailable
Co-authored-by: youknowdot <dot@youknowone.org>
Bound the initial file read, grow later requests geometrically, use fallible reservation for input buffers, and compare frame bounds without addition overflow.
Assisted-by: Codex:unknown (model version not exposed)
Collect representable constants before replacing append-sequence instructions
with NOPs. A valid LOAD_COMMON_CONSTANT may not have a ConstantData value, so
returning false must leave the helper's instruction sequence unchanged.
Cover list, set and ListToTuple tails with a direct native IR invariant.
No change to normal constant-folding behavior or canonical Lib tests.
Assisted-by: OpenAI Codex:model-version-unavailable
Co-authored-by: youknowdot <dot@youknowone.org>
Hold the existing waiter's lock through the parent's immediate fast-acquire
sample, then release and join it before asserting the recorded outcome.
Do not change the production mutex or its existing fairness setup delay.
Assisted-by: OpenAI Codex:model-version-unavailable
Co-authored-by: youknowdot <dot@youknowone.org>
* Factor shared interpreter stop-the-world guard
Move the existing collector barrier into the VM without changing its stop, restart or ownership behavior, preparing reuse by fork.
Assisted-by: dot:GPT-6.1
* Add interpreter-bound operation section primitive
Prepare attached-only ownership acquisition and detached observer parking with private per-interpreter scope stacks. Lifecycle wiring follows separately; no profiler consumer is enabled by this commit.
Assisted-by: dot:GPT-6.1
* Suspend operation sections at VM lifecycle boundaries
Integrate detach, stop-the-world, shutdown and interpreter-switch boundaries. Reuse the all-interpreter barrier for fork repair and add focused native ownership invariants.
Assisted-by: dot:GPT-6.1
* Replace operation sections with PyMutex critical sections
Add PyMutex with the lock.c protocol: LOCKED/HAS_PARKED bits, a bounded
spin, direct handoff to waiters parked longer than 1 ms, and detaching
while parked.
Rebuild critical sections on PyMutex with the stack kept as a tagged
pointer in ThreadSlot: single and two-mutex sections, recursive
top-most skipping, locking skipped while the world is stopped,
SuspendAll on detach/suspend/shutdown and Resume of the top-most
section on attach. Fork carries the stacks into the replacement slots.
Assisted-by: Claude Code:claude-opus-5-5
* Check attachment around critical-section suspension
Assert that a thread entering a critical section is attached, and
suspend sections in do_suspend only while the slot is still ATTACHED.
Assisted-by: Claude Code:claude-opus-5-5
---------
Co-authored-by: Jeong YunWon <jeong@youknowone.org>
Use the existing WTF-8 representation interface for the base exception and name/path fields, avoiding lossy conversion of legal Python __repr__ results.
AI assistance: OpenAI Codex prepared the correction and validation. Model version is not exposed in this session.
Assisted-by: Codex:unknown (model version not exposed)
Keep Python-visible epoll descriptors in a raw host wrapper, preserving fromfd aliasing and explicit close errors without OwnedFd drop aborts. Use native epoll event layout behind a transparent host-only type and align positive timeout overflow with CPython milliseconds.
Assisted-by: OpenAI Codex:model-version-unavailable
Preserve WTF-8 dotted paths in protocol 4/5 global loading so private-name round trips also support surrogate-containing names.
Assisted-by: Codex:unknown (model version not exposed)
Extract the independent Python 3.15 ImportError representation change from the upgrade work. Preserve BaseException positional arguments and include explicitly present name/path attributes for ImportError and ModuleNotFoundError.
AI assistance: OpenAI Codex prepared the extraction and validation. Model version is not exposed in this session.
Assisted-by: Codex:unknown (model version not exposed)
* Use the RustPython Ruff fork 0.17.1 from git and place EOF errors by kind
- The ruff crates come from the RustPython/ruff `rustpython-0.17.1`
branch at 93967836c8 instead of the 0.16.10 crates.io release.
- `EofToken.known_location` is replaced by `EofErrorLocation`
(Tokenizer, Token, StartingFromToken), chosen from the parse error kind.
The keyword scan in `clause_keyword` is removed, since the parser now
reports a forced `:` as `ExpectedForcedToken`.
- An empty import at EOF ends at the end of the line read, and an empty
import before a newline is an empty range at the newline.
Assisted-by: Claude Code:claude-opus-5-5
* Report the obsolete `<>` from the parser outside Barry mode
- Bump the RustPython/ruff fork to 9290a88495, where the parser reports an
adjacent `<` and `>` in a comparison as "invalid syntax. Maybe you meant
'!=' instead of '<>'?" over both tokens.
- Outside Barry mode, `BarrySource` no longer searches the source text for
`<>`, so the parser's error is reported unchanged. A `<>` that starts a
statement is reported at the `<` only, and `<<>` at the `>`.
Assisted-by: Claude Code:claude-opus-5-5
* Align signal wakeup error handling with Python 3.15
Assisted-by: OpenAI Codex:model version unavailable
* Preserve CRT error state during signal wakeup writes
Assisted-by: OpenAI Codex:model version unavailable
* Represent nullable Windows CRT parameter handlers safely
Assisted-by: OpenAI Codex:model version unavailable
* Rework signal wakeup error delivery to follow signalmodule.c
- Report pending wakeup write/send errors after Python signal handlers
and VM pending calls, and re-arm the eval breaker when a handler or
pending call raises.
- Save and restore errno once in run_signal around trip_signal instead
of inside each write path; stop preserving _doserrno.
- Add crt_fd::write_noraise and use it for the Unix and Windows wakeup
writes, sharing the single-write helper with _write.
- Keep pending wakeup errors across fork.
- Revert the suppress_iph handler type change and the unrelated quote
change in test_signal.
Assisted-by: Claude Code:claude-opus-5-5
* Represent nullable Windows CRT parameter handlers as Option
_set_thread_local_invalid_parameter_handler takes and returns a nullable
function pointer; declare it as Option<InvalidParamHandler> so a NULL
previous handler is restored as None.
Assisted-by: Claude Code:claude-opus-5-5
---------
Co-authored-by: Jeong YunWon <jeong@youknowone.org>
Normalize inherited exception formatting once so structured results and terminal details share uncolored traceback strings, even when colors are forced. Add synthetic ordinary and subtest failure/error coverage without changing existing assertions.
Implementation and focused validation were AI-assisted with OpenAI Codex.
Assisted-by: OpenAI Codex: model version unavailable
EnumerateArgs bound the iterable as PyIter, so argument binding called
__iter__ before start was converted and before surplus positional
arguments were rejected. An exception from __iter__ then replaced the
TypeError CPython raises for a bad start or a third argument.
Bind the iterable as an object and call get_iter() in py_new, after
start is converted, which is the order of CPython's enum_new_impl.
Assisted-by: Claude Code:claude-opus-5-5
CPython keeps a Neumaier compensation term while sum() accumulates an
exact float or complex, and reaches that path from an exact int start
too. RustPython added items one by one, so sum([0.1] * 10) returned
0.9999999999999999 instead of 1.0.
Port the int, float and complex fast paths of builtin_sum_impl, each
falling back to plain addition at the first item it does not handle.
Assisted-by: Claude Code:claude-opus-5-5
* Preserve regression collector outcomes and canonical process context
Record complete test identities, subtest diagnostics and fixture outcomes while keeping unittest event counts separate from once-per-case JSON totals. Reuse canonical process setup and avoid an unnecessary library-path override.
Assisted-by: OpenAI Codex: model version unavailable
* Fix regression runner subtest formatting and qualified discovery
Assisted-by: OpenAI Codex: model version unavailable
* Make runner traceback assertions independent of forced colors
Assisted-by: OpenAI Codex: model version unavailable
* Keep dev VM frames compact for stdlib imports
Carry the established integration VM optimization override into the regression runner split. Retain debug assertions, stack guards and Python recursion limits.
Assisted-by: OpenAI Codex: model version unavailable
* Report fatal explicit-home encodings initialization failures
Retain explicit standard-library initialization errors for the command-line host, preserving default embedding fallback and the original exception cause.
Assisted-by: OpenAI Codex: model version unavailable
* Enable canonical fatal startup path configuration coverage
Retire the verified expected failure through update_lib, preserving the explicit local path-environment adaptation and all other markers.
Assisted-by: OpenAI Codex: model version unavailable