* Preserve Unicode in thread unraisable messages
Keep the callable representation as WTF-8 for unraisable hooks and audit callbacks. Preserve the existing String entry point and stderr fallback; this does not claim lossless stderr rendering.
Assisted-by: OpenAI Codex:model unavailable
* Use the WTF-8 string conversion constructor
Use the existing From<&str> implementation to copy the message prefix without changing Unicode semantics.
Assisted-by: OpenAI Codex:model unavailable
* Preserve cross-interpreter marshal error causes
Wrap failures from existing code/function serialization helpers as NotShareableError, matching the CPython 3.15 marshal boundary while retaining the original exception cause. No new test C API or lifecycle behavior.
Assisted-by: OpenAI Codex:model-unavailable
* Enforce syslog interpreter boundaries and sync queue cleanup
Reject subinterpreter openlog/closelog before audit or host mutation, and
reject implicit syslog opening after audit when the process logger is not
already open, matching CPython 3.15 guard placement and error text.
Already-open logging and setlogmask remain unchanged.
Migrate concurrent/interpreters/_queues.py through scripts/update_lib to
CPython d220409a13b77de7a6c30abe16ea90db01528edc, removing unused eager
pickle import and exception targets. Native serialization imports pickle
on demand; module import timing and debug locals may nevertheless differ.
No new fixtures or interpreter lifecycle mechanisms are introduced.
Assisted-by: OpenAI Codex:model version unavailable
Extract the unchanged Reader::open decode body into a private owned-buffer
parse helper and add native representation tests for varints, stack depth,
RLE count bounds, and repeated empty records. Preserve all existing tests.
This adds coverage, not a new production decoder fix. Test code passes
cargo check --tests and strict Clippy --tests, but has not been executed.
OpenAI Codex assisted extraction, review, and compile-only validation.
Assisted-by: OpenAI Codex:model version unavailable
Co-authored-by: Codex <codex@openai.com>
Enable buffer-redux on the workspace rustyline dependency and add its
locked buffer-redux 1.1.0 dependency. Keep existing dependency versions
and checksums, including nix, libc and rustix, unchanged.
RustPython retains a rustyline Editor across interactive prompts. On
Unix, this feature lets a successful readline submission save unread
buffered input for the next read instead of dropping the old reader's
buffer. This is based on the source call chain, not a runtime reproduction.
Assisted-by: OpenAI Codex:model version unavailable
* Document only workspace crates in the cargo doc job
cargo doc ran rustdoc on every dependency as well; in run #91 that was
284 documented crates for a check of this workspace's own docs.
Assisted-by: Claude Code
Claude-Session: https://claude.ai/code/session_01JpHqXiC3mDShqfsPxvr9ey
* Share one target directory between the example projects
Each example project is its own workspace and built into its own target
directory, so the second build recompiled the dependencies the first had
just built. Of the 359 units the frozen_stdlib build needs, 261 are
identical to units of the barebone build.
Assisted-by: Claude Code
Claude-Session: https://claude.ai/code/session_01JpHqXiC3mDShqfsPxvr9ey
* Check both macOS cross targets on one runner
macOS runners have the smallest concurrent-job limit of the hosted
runners. The aarch64-apple-ios and x86_64-apple-darwin checks now run in
one job, with one cargo invocation per feature set that passes both
targets, so they also share the host-side build scripts and proc macros.
The matrix entry lists the targets separated by a space, because the
target is part of the cache key and actions/cache rejects commas.
This renames the two "cargo check (macos-latest, ...)" checks to one.
Assisted-by: Claude Code
Claude-Session: https://claude.ai/code/session_01JpHqXiC3mDShqfsPxvr9ey
---------
Co-authored-by: Claude <noreply@anthropic.com>
Retain direct IR coverage for constant-pool representations, malformed
append-sequence rejection, and vacated instruction-slot metadata reuse.
Reject non-unit terminal append depths at the private folding helper.
Existing production callers already require depth one; this is defensive
contract hardening, not a newly fixed reachable interpreter bug.
Preserve the existing helper structure and all pre-existing tests. The
three added native tests are unchanged from the Python 3.15 upgrade work.
Validation: codegen check and strict Clippy with --tests, a --lib --no-run
build, and exactly three bounded native IR tests (one pass, zero ignored
each). No Python, parser, VM or lifecycle payload was executed. The
symmetric SetAdd guard has no dedicated depth-two assertion.
Assisted-by: OpenAI Codex:model version unavailable
Copy curses frontend sources and canonical curses, DBM, Tcl and DTrace
integration tests from CPython v3.15.0 through update_lib. Preserve
upstream optional-native/resource/configuration gates and canonical file
modes, without adding native implementations or custom skips.
Validate source identity, hooks and default/frozen compile-only checks.
Native runtime integration and probe execution remain unvalidated.
Assisted-by: OpenAI Codex: model version unavailable
Copy the remaining live collector package, related canonical tests, and
Python logo asset from CPython v3.15.0 through update_lib. Keep source
availability distinct from supported live sampling or curses execution.
Exclude the child monitor and its tests: introducing that module would
activate --subprocesses before native child discovery is implemented.
Preserve all upstream resource gates without adding skips or shims.
Assisted-by: OpenAI Codex: model version unavailable
Move the existing conversion helper into the production time module and reuse it from sleep, preserving conversion bodies and internal C-API argument binding.
Assisted-by: OpenAI Codex:model version unavailable
Import test_async.py and test_profiler.py with scripts/update_lib migrate
from CPython 3.15.0 at d220409a13b77de7a6c30abe16ea90db01528edc.
Validate the 37 existing offline async graph and statistics-rendering
tests without changing canonical assertions or markers.
Assisted-by: OpenAI Codex: model version unavailable
Stop automatically labeling OSCCA participants' pull requests with
z-ca-2026 and assigning them, and drop the matching zizmor ignore entry.
Assisted-by: Claude Code:claude-opus-5-5
Import the CLI, entry point, error type, coordinator dependency, and CLI
tests with scripts/update_lib migrate from CPython 3.15.0 at
d220409a13b77de7a6c30abe16ea90db01528edc.
This frontend follows the existing offline collector/codec support. Live
attach, run, and dump remain unsupported and unvalidated.
Assisted-by: OpenAI Codex: model version unavailable
Use decoded logical instructions rather than the preceding raw operand byte. Check referenced constants by None identity and decode common constants without panicking.
Assisted-by: OpenAI Codex:model unavailable
Import the unchanged Python 3.15.0 fixture with the official library updater
and retire the missing-fixture expectedFailure after validating the existing
distance and threshold tests. Preserve all assertions and unrelated markers.
Assisted-by: OpenAI Codex: model version unavailable
* Align offline profiler argument binding with Python 3.15
Accept the canonical keyword names for binary sample writes and native
context exits. Resolve the argument layout before numeric callbacks,
then preserve float-subclass payloads while accepting numeric protocols
for required and optional profile statistics.
AI-assisted source extraction, implementation, and source review with
OpenAI Codex. Runtime validation remains pending.
Assisted-by: OpenAI Codex:model version unavailable
* Restore the offline profiler capability flag
Preserve the original mega branch's zero-valued process_vm_readv
capability export. The native live unwinder remains unsupported; this
restores the public feature query without claiming live inspection support
or changing canonical test helpers.
AI-assisted source preservation and review with OpenAI Codex.
Assisted-by: OpenAI Codex:model version unavailable
* Restore finite-EOF table bounds for offline profiles
Match CPython's EOF-wide table count and decoding windows while retaining
checked offsets, allocation limits, cursor bounds, and replay checks.
This restores the original mega's finite-file contract without changing
canonical tests or the already validated argument-binding implementation.
Assisted-by: OpenAI Codex:model version unavailable
* Preserve symtable warning exceptions and original filenames (#9282)
Keep warning-hook exceptions untouched instead of rewriting SyntaxError
subclasses. Thread the original Python filename through parser warning
emission and fresh warning-as-error SyntaxError construction, preserving
fsdecoded bytes paths and lone surrogates.
Assisted-by: OpenAI Codex:model-version-unavailable
* build(deps): align the Cranelift 0.136 dependency family (#9341)
* build(deps): bump the wasmtime group across 1 directory with 2 updates
Bumps the wasmtime group with 2 updates in the / directory: [cranelift](https://github.com/bytecodealliance/wasmtime) and [cranelift-module](https://github.com/bytecodealliance/wasmtime).
Updates `cranelift` from 0.135.2 to 0.136.3
- [Release notes](https://github.com/bytecodealliance/wasmtime/releases)
- [Changelog](https://github.com/bytecodealliance/wasmtime/blob/main/RELEASES.md)
- [Commits](https://github.com/bytecodealliance/wasmtime/commits)
Updates `cranelift-module` from 0.135.3 to 0.136.3
- [Release notes](https://github.com/bytecodealliance/wasmtime/releases)
- [Changelog](https://github.com/bytecodealliance/wasmtime/blob/main/RELEASES.md)
- [Commits](https://github.com/bytecodealliance/wasmtime/commits)
---
updated-dependencies:
- dependency-name: cranelift
dependency-version: 0.136.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: wasmtime
- dependency-name: cranelift-module
dependency-version: 0.136.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: wasmtime
...
Signed-off-by: dependabot[bot] <support@github.com>
* Align cranelift-jit with the 0.136 dependency family
Update cranelift-jit alongside cranelift and cranelift-module so the JIT shares their LibCall, FuncId, and Module trait identities. Regenerate only the affected dependency lock entries, preserving the original dependency PR changes.
AI assistance covered the dependency diagnosis, alignment, and static review.
Assisted-by: OpenAI Codex:model-version-unavailable
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Support selective canonical function migration
Add hash-pinned function selection to the official Lib migration tool,
preserving canonical source bytes and rejecting ambiguous dependencies.
Assisted-by: OpenAI Codex:model version unavailable
* Detect CPython runtimes for canonical inspection feature checks
Add native runtime-cookie detection and import the exact Python 3.15
inspection helpers and tests through the official Lib migration tool.
Preserve the offline profiler argument and finite-EOF corrections.
Assisted-by: OpenAI Codex:model version unavailable
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Fix rounding and bounds in existing PyTime test helpers
Extract the already-exposed conversion helper prerequisite from the broader #9143 surface without adding new test C-API exports or changing time.sleep.
Assisted-by: Codex:unknown
* Complete PyTime conversion fixtures in _testinternalcapi
Stack the eight consumed conversion APIs on the existing-helper prerequisite in #9317. Keep the arithmetic local to the real fixture consumers; do not expose _testcapi or change sleep/lifecycle behavior.
Assisted-by: Codex:unknown
---------
Co-authored-by: Codex <codex@openai.com>
* Use closing-token locations for interpolated body warnings
Track CPython string-parser fragment anchors separately from escape source offsets. Preserve scoped error-line text and mode-specific final newlines with lazy sparse location indexing.
Assisted-by: OpenAI Codex:model-version-unavailable
* Fix lint checks for interpolated warning diagnostics
Assisted-by: OpenAI Codex (model version unavailable)
* Match CPython interpolated warning phases and fragment diagnostics
Reconstruct body and format-spec decoder fragments, preserve tokenizer/parser action order and pending Single/type-comment errors, and match Unicode protection plus scoped numeric and ordinary-token diagnostics.
Assisted-by: OpenAI Codex:model-version-unavailable
* Use physical final-line locations for ordinary exec warnings
Keep warning and error coordinates consistent across bare CR, CRLF, and LF while retaining file-input synthetic newlines.
Assisted-by: OpenAI Codex:model-version-unavailable
Use the collected lexical warning order for valid Exec/Eval inputs without parser-origin escape events. Keep tokenizer errors terminal and retain mixed-origin, invalid-source, and Single fallback behavior.
Assisted-by: OpenAI Codex:model-version-unavailable
Migrate macro metadata and item handling to syn 3, preserving option diagnostics and doc trimming. Add focused parser and attribute-edit tests.
Assisted-by: OpenAI Codex:model version unavailable
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
* Count positional arguments before converting any
FuncArgs::bind_for rejected surplus positional arguments only after
FromArgs::from_args had converted every declared parameter. A
conversion can run user code (__iter__ for PyIter, __index__ for
ArgIndex), so filter(None, it, 0), hex(x, 1) and pairwise(it, 0) raised
whatever that code raised instead of the TypeError CPython reports
before it touches any argument.
Check the count against FromArgs::arity() before from_args runs. For
that bound to be safe:
- The default arity() has no upper bound, since a manual impl may take
positional arguments itself. KwArgs, (), DirFd, OpenDirFd and csv's
FormatOptions declare the bound they actually have.
- A derived struct adds the upper bound of each flattened field.
- A tuple sums upper bounds with saturating_add.
Assisted-by: Claude Code:claude-opus-5-5
* Note why arity upper bounds saturate
Comment that an unbounded upper bound is usize::MAX, which is why the
tuple and derived arity() sums use saturating_add, and drop the CPython
mention from the positional count check comment.
Assisted-by: Claude Code:claude-opus-5-5
---------
Co-authored-by: Jeong YunWon <jeong@youknowone.org>