Commit Graph
17689 Commits
Author SHA1 Message Date
youknowdot 9e18d7be6b Preserve explicit customizations during canonical library migration (#9142)
* Preserve explicit customizations during canonical library migration

Add bounded runtime, call, and doctest preservation plus explicit remaining-marker metadata. Support mapped legacy test-package migrations without losing ordered guards, and exclude cache directories from both migration paths while retaining canonical assets.

Validation: 53 bounded host-Python tooling tests passed. Tests inspect source and temporary files without executing migrated fixtures. Existing copy-library cache protection is unchanged. No Lib or interpreter changes.

Assisted-by: OpenAI Codex:model version unavailable

* Integrate migration preservation into existing updater modules

Keep migration orchestration and guarded package moves in cmd_migrate, and marker/doctest metadata in patch_spec. Reuse AST anchor validation and existing test modules, removing all eleven newly introduced helper, test, and data files.

Require caller-selected doctest metadata instead of embedding syntax-case policy. Reject guarded legacy doctests before package writes. Preserve the prior 53 test scenarios and add seven focused metadata regressions; all 60 bounded host tooling tests passed. No Lib, workflow, or native changes.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 19:54:38 +09:00
youknowdot 0384ddcd70 Align mmap operations and capability reporting with Python 3.15 (#9141)
Separate raw descriptor inspection from owned tracking, update flush and naming behavior, and expose resize only on implemented backends. Migrate canonical mmap tests using update_lib while preserving existing RustPython guards.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 19:53:53 +09:00
youknowdot 16e333bded Align asyncio initialization and future state with Python 3.15 (#9136)
* Align asyncio initialization and future state with Python 3.15

Reject native Future and Task reinitialization, validate task contexts, and restore task registration after failed eager context entry. Generate matching asyncio and concurrent Future sources and tests with update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve the existing pending-task reinitialization regression.

Assisted-by: OpenAI Codex:model version unavailable

* Remove asyncio snippet duplicating canonical reinitialization coverage

Keep the exact-final Lib tests as the reinitialization coverage instead of adding a new snippet for the same contract. Native and library implementation bytes remain unchanged.

Assisted-by: OpenAI Codex:model version unavailable

* Validate both objects in asyncio awaited-by helpers

Match CPython by ignoring non-native Future/Task waiters in add and discard. Keep the existing native reentrant hashing fixture reachable using Future subclasses and use native instances for its membership checks.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 10:02:39 +00:00
youknowdot 498adff3a9 Align JSON array hooks and libraries with Python 3.15 (#9135)
Generate the JSON library and selected tests with update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc, preserving native bootstrap workarounds and test markers. Exclude generated cache directories at the library copy boundary.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 07:32:30 +00:00
youknowdot 8a9d66cfb3 Align OrderedDict views and sync pprint with CPython 3.15 (#9134)
* Align OrderedDict view inheritance and repr with CPython

Use dict view base payloads and inherited descriptors while preserving ordered iteration. Snapshot actual view iterators before rendering element reprs.

Assisted-by: OpenAI Codex:model version unavailable

* Sync pprint and its tests from CPython 3.15.0

Import the related library update using scripts/update_lib migrate from d220409a13b77de7a6c30abe16ea90db01528edc, preserving exact final source bytes.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 07:18:22 +00:00
youknowdot 28f19a476f Document snippet test placement policy (#9137)
Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 15:56:10 +09:00
youknowdot 9c832ee26c Align native datetime conversion with Python 3.15 (#9133)
Prefer index conversion for timestamps, accept float-convertible values, validate ISO timezone components, and apply final local fold detection consistently.

Implementation, source comparison, and bounded validation were assisted by OpenAI Codex.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 15:06:38 +09:00
youknowdot 4d54126c1f Update Unicode name preparation and codecs to Python 3.15 (#9132)
Import stringprep and related codecs from CPython 3.15.0 using scripts/update_lib. Preserve the existing Windows codec test marker.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 15:06:01 +09:00
youknowdot 92e20da822 Fix update_lib marker preservation for inline classes (#9131)
* Preserve inherited test markers in inline class migrations

Expand canonical inline class suites before appending retained inherited overrides, and validate generated syntax. Run focused migration-tool tests in a path-filtered Python-only CI job.

Assisted-by: OpenAI Codex:model version unavailable

* Run migration tool tests through existing CI conditions

Keep Rust build gates unchanged and run focused Python migration tests on Linux for tool-only changes. Remove the separate workflow.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 13:54:46 +09:00
Jeong, YunWonandyouknowdot 79e7c9da27 Support marshal format 6 and frozendict serialization (#9130)
Extract the Python 3.15 final mapping format while preserving current code-object field identities and owned writer references.

Assisted-by: OpenAI Codex:model version unavailable

Co-authored-by: youknowdot <dot@youknowone.org>
2026-10-15 13:53:38 +09:00
youknowdot edb5ac4334 Preserve partial keyword identity through vectorcall (#9127)
* Preserve partial keyword identity through vectorcall

Retain keyword objects in CALL_FUNCTION_EX and snapshot partial state before Python callbacks. Match CPython 3.15 final partial keyword merging without changing Lib or tests.

Assisted-by: OpenAI Codex:model version unavailable

* Register partial vectorcall through pyslot

Use the existing slot macro instead of a class extension hook. Return TypeError for non-string incoming names in the non-vectorcall fallback rather than panicking.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 04:47:09 +00:00
Jeong, YunWon 2e5febce5e Update jiff-tzdb to 0.1.9 (#9129)
jiff-tzdb 0.1.9 bundles tzdb 2026e. It is used through
jiff-tzdb-platform on Windows and wasm targets.

Assisted-by: Claude Code:claude-opus-5-5
2026-10-15 13:40:52 +09:00
youknowdot 3ab5c0c2f2 Align mapping boundaries with Python 3.15 final (#9128)
Support frozen mappings in str.maketrans and native JSON encoding, preserve integer translation keys, and protect mappingproxy dictionaries from unknown reflected comparisons.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 10:31:45 +09:00
codspeed[bot]andCodSpeed Bot ba54cce23a Pin the hash seed in the microbenchmark harness (#9126)
Settings::default() leaves hash_seed = None, so every benchmark process
draws a random str hash secret. That changes globals-dict probe lengths
between runs and makes dict/loop/string microbenchmarks swing by 10-17%
with no code change. Use a fixed seed so results only move when the
code does.

Co-authored-by: CodSpeed Bot <no-reply@codspeed.io>
2026-10-15 10:28:43 +09:00
youknowdot 8b2f9d8f2a Align percent formatting with Python 3.15 final (#9125)
Parse and convert percent fields in order, preserve callback precedence, and align argument-context errors and keyed conversion restrictions. Keep invalid character-length checks ahead of index conversion and cover bounded callback ordering.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 10:28:12 +09:00
youknowdot 2ddba03c39 Support frozen ElementTree attribute mappings (#9124)
* Support frozen ElementTree attribute mappings

Preserve assigned mapping identity while copying constructor attributes, and use checked union ownership through Element operations.

Assisted-by: OpenAI Codex:gpt-6.1-sol

* Sync final ElementTree runtime and companion tests

Import ElementTree.py from CPython d220409a13b77de7a6c30abe16ea90db01528edc through update_lib migrate. Copy six complete canonical tests with update_lib copy-test, preserving all surrounding test markers. This aligns pure-Python and native frozendict diagnostic expectations and covers the runtime import companion changes.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 10:27:39 +09:00
youknowdot 13d0c83753 Align Struct construction and complex formats with Python 3.15 (#9123)
Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 10:26:51 +09:00
youknowdot 32f5ac9c05 Reject invalidated type-cache entries and retain disassembly tracebacks (#9121)
Require matching cache/type versions to be nonzero in both readers, keeping
Acquire load order and the existing sequence-lock checks. Add a deterministic
native regression for cleared versions, mismatches, and valid negative cache
entries, without executing Python or introducing concurrency stress.

Render Python tracebacks when the existing disassembly snapshot helper fails.
The intermittent Windows AttributeError that prompted this investigation has
not been reproduced locally or proven to originate from the cache defect.

AI assistance: OpenAI Codex investigated, implemented, independently
source-reviewed, and performed focused automated validation of this change.
No human manual testing is claimed.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 10:24:48 +09:00
1ndahous3 0363ff4eb6 Support nonblocking pipes on Windows (#9110)
* Support nonblocking pipes on Windows

Assisted-by: Codex:gpt-6

* Remove redundant Windows pipe test coverage

Assisted-by: Codex:gpt-6
2026-10-15 10:24:04 +09:00
Jeong, YunWon 2ba57dae68 Add BUILD_LIST_FROM_ARG opcode behind CompileOpts::build_list_from_arg (#9104)
Add Instruction::BuildListFromArg = 219 (stack effect: pop 1, push 2): pop
the iterator, push an empty list whose capacity is the iterator's length
hint, push the iterator back. A failing length hint is ignored unless it is
SystemExit or KeyboardInterrupt.

With CompileOpts::build_list_from_arg set, a list comprehension with one
generator, no `if` and no `async for` emits it in place of BUILD_LIST 0 on
the non-inlined path and in place of BUILD_LIST 0; SWAP 2 on the inlined
path. The option defaults to false, so default output is unchanged.

Assisted-by: Claude
2026-10-15 10:05:35 +09:00
youknowdotandyouknowdot f9b07b786c Update gzip, tarfile, and shutil from CPython 3.15 (#9112)
* Preserve truncating FileIO mode and sync canonical IO compatibility

Keep truncation metadata in both host backends so writable update streams report wb+. Synchronize the complete final CPython _pyio module and two complete canonical mode test definitions through scripts/update_lib.

Assisted-by: OpenAI Codex: model identifier unavailable

* Update gzip, tarfile, and shutil from CPython 3.15

Regenerate six Lib files using scripts/update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve upstream tests without agent-added marks.

Assisted-by: OpenAI Codex:model version unavailable

* Sync canonical spooled tempfile mode expectation

Copy the complete TestSpooledTemporaryFile.test_properties definition from CPython 3.15.0 final d220409a using scripts/update_lib copy-test. Preserve all surrounding test content and existing markers.

Assisted-by: OpenAI Codex:model version unavailable

---------

Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
2026-10-15 10:03:58 +09:00
youknowdot 0f127b07e9 Add Python 3.15 math APIs using pymath (#9122)
* Add Python 3.15 math APIs using pymath

Pin pymath to merged dd1e9a4cf26d68caf3b549c09476f52e356e16a3
and expose isnormal, issubnormal, signbit, fmax and fmin through thin
wrappers. Share the existing integer functions through math.integer
and _math_integer, matching CPython module identity and metadata.

Migrate test_math.py and test_math_integer.py via scripts/update_lib
from CPython d220409a13b77de7a6c30abe16ea90db01528edc, preserving the
existing Windows remainder marker. Add bounded Python snippet coverage.

AI assistance: OpenAI Codex implemented and source-reviewed this change,
ran update_lib, and performed focused automated validation. No human
manual testing is claimed.

Assisted-by: OpenAI Codex:model version unavailable

* Track integer math tests in library updates

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 10:02:44 +09:00
dependabot[bot] 796f522306 build(deps): bump jiff (#9120)
Bumps the jiff group with 1 update in the / directory: [jiff](https://github.com/BurntSushi/jiff).


Updates `jiff` from 0.2.37 to 0.2.38
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.37...jiff-static-0.2.38)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.38
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jiff
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 09:57:37 +09:00
1ndahous3 05cb67524a Cache SQLite statements and synchronize connection operations (#9109)
* Cache SQLite statements per connection

Assisted-by: Codex:gpt-6

* Keep SQLite connections alive across callbacks

Assisted-by: Codex:gpt-6

* Defer SQLite cleanup and preserve operation errors

Assisted-by: Codex:gpt-6

* Synchronize SQLite results and transaction transitions

Assisted-by: Codex:gpt-6

* Use the calling thread's VM for SQLite callbacks

Assisted-by: Codex:gpt-6
2026-10-15 09:56:14 +09:00
youknowdot 0f9321064d Implement bytearray.take_bytes with stable export length snapshots (#9119)
Keep export counts and logical lengths in one synchronized epoch so bounds checks can precede export rejection without recursively borrowing payload data. Preserve shared buffer ownership and callback lifetimes.

Assisted-by: OpenAI Codex:gpt-6.1-sol
2026-10-15 01:32:08 +09:00
youknowdot 5d5e3faa79 Implement Python 3.15 type alias and variadic metadata (#9113)
* Implement Python 3.15 type alias and variadic metadata

Add TypeAliasType qualified names and writable module metadata, and TypeVarTuple raw bounds and variance. Preserve Unicode names and validate arguments before invoking truthiness callbacks.

AI assistance: OpenAI Codex implemented and source-reviewed this split, prepared regressions, and ran focused automated validation. No human manual testing is claimed.

Assisted-by: OpenAI Codex:model version unavailable

* Sync canonical typing repr tests with Python 3.15 final

Copy six complete test definitions from CPython d220409a13b77de7a6c30abe16ea90db01528edc using scripts/update_lib copy-test with source and destination SHA256 pins. Preserve all surrounding tests and markers; no manual assertion edits or skips.

AI assistance: OpenAI Codex diagnosed old expected representations, performed the official copies and independent provenance review, and ran the six exact tests with the existing candidate release binary. All six pass; full suites were not rerun locally.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-14 16:14:46 +00:00
youknowdot 1b20f6a194 Use 64-bit timestamps for Windows CRT and FILETIME conversions (#9116)
Use the explicit 64-bit CRT ABI regardless of libc time_t width, and preserve 64-bit FILETIME seconds throughout stat producers and consumers. Add bounded Windows regressions for 2040 calendar and stat conversions while retaining existing historical timestamps and error behavior.

AI assistance: OpenAI Codex implemented and independently source-reviewed this split, prepared bounded Python regressions and performed cross-target compile checks. Windows runtime and human manual testing are not claimed.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 00:57:58 +09:00
1ndahous3 c85829b2d0 Reuse unlocked buffers in os.write (#9107)
* Reuse unlocked buffers in os.write

Assisted-by: Codex:gpt-6

* Snapshot buffers without immutable storage

Assisted-by: Codex:gpt-6
2026-10-15 00:56:02 +09:00
youknowdot 6e82636bee Add Python 3.15 encoding normalization helper (#9115)
Extract _codecs._normalize_encoding and delegate encodings.normalize_encoding
to it using the final CPython 3.15 library source. Preserve case and dots,
validate UTF-8 before NUL truncation, and retain wrapper warnings and bytes
conversion. Add bounded regression assertions without changing registry keys.

Lib/encodings/__init__.py was updated via scripts/update_lib migrate from
CPython d220409a13b77de7a6c30abe16ea90db01528edc, with byte-identical output.

AI assistance: OpenAI Codex implemented and source-reviewed this split,
ran update_lib, prepared bounded regressions and performed focused automated
validation. No human manual testing is claimed.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-15 00:53:59 +09:00
1ndahous3 db33af9c3e Validate socket receive sizes and bound truncated results (#9108)
* Validate socket receive sizes and bound truncated results

Assisted-by: Codex:gpt-6

* Fix socket receive checks across platforms

Assisted-by: Codex:gpt-6
2026-10-14 23:56:06 +09:00
dependabot[bot] 1269277af5 build(deps): bump indexmap from 2.14.0 to 2.14.2 (#8993)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.14.0 to 2.14.2.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.14.0...2.14.2)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-version: 2.14.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-14 23:54:07 +09:00
Jeong, YunWonanddot 2a09ee02bd Align compiler and VM bytecode contracts with CPython 3.15 (#9105)
* Align compiler and VM with final CPython 3.15 bytecode

Reconstruct the compiler-only baseline from validated487ae47 on the current main and frozen mapping prerequisitec78d811. Preserve the full source delta while dropping obsolete prerequisite ancestry; detailed old-to-new provenance is retained in the recovery artifact.

Assisted-by: OpenAI Codex: model identifier unavailable

* Fix final script validation, exception cleanup and private cache contracts

Replay reviewed compiler CI repairs 2191a9d, 1f1fe04, a2dacaf on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.

Assisted-by: OpenAI Codex: model identifier unavailable

* Align canonical compiler fixtures and generator frame state

Replay reviewed compiler CI repairs 476bb74 on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.

Assisted-by: OpenAI Codex: model identifier unavailable

* Preserve code-name owners and final warning and constant-fold contracts

Replay reviewed compiler CI repairs 6482adf on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.

Assisted-by: OpenAI Codex: model identifier unavailable

* Skip unavailable monitoring C API tests before tool registration

Replay reviewed compiler CI repairs 246c309 on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.

Assisted-by: OpenAI Codex: model identifier unavailable

* Assert exact final constant-list iterable folding

Replay reviewed compiler CI repairs 7ecedcf on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.

Assisted-by: OpenAI Codex: model identifier unavailable

* Align local monitoring events and exception lifecycle state with final 3.15

Replay reviewed compiler CI repairs ec206b1, 191fe58 on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.

Assisted-by: OpenAI Codex: model identifier unavailable

* Align 3.15 code objects and codegen with CPython

- Store co_consts, co_names, co_localsplusnames, co_localspluskinds,
  co_linetable, co_exceptiontable and co_name as objects on PyCode;
  build co_code and the varnames/cellvars/freevars tuples lazily in
  _co_cached, with co_code deoptimized through deopt_code.
- Move the compiler constant cache (_PyCode_ConstantKey,
  const_cache_insert) to builtins/code/const_cache.rs.
- Write every code field with w_object in marshal and pass the read
  field objects to MarshalBag::make_code through CodeFields.
- Emit RETURN_GENERATOR/POP_TOP in enter_scope and place SETUP_CLEANUP
  after them; drop the generator part of insert_prefix_instructions.
- Add PyCode::first_traceable (_co_firsttraceable) for
  _PyFrame_IsIncomplete and sys.monitoring.
- Follow the CPython DISABLE branches in sys.monitoring, the
  check_matched signature in warnings, the 3.15 % format error
  messages for str and bytes, code_returns_only_none, and the FOR_ITER
  stack analysis.
- Compute IMPORT_NAME flags with in_exception_handler.
- Replace the linetable/exceptiontable byte tests in codegen with
  dis(show_positions=True) insta snapshots in _opcode.
- Remove the opcode metadata verification tooling, byte-exact
  scripts, private cache tests and redundant snippets.
- Restore test_code.py and test_monitoring.py to v3.15.0 plus
  RUSTPYTHON markers.

Assisted-by: Claude Code:claude-opus-5-5

* Remove generator snippet checks covered by Lib/test

Drop extra_tests/snippets/generator_iterator_prefix.py. Its loop,
delegation, async, f_back and never-awaited checks are covered by
test_generators, test_coroutines, test_asyncgen, test_yield_from and
test_monitoring. Move the remaining checks into existing files:
genexpr prefix tracing and monitoring into stdlib_sys.py, and the
caller frame seen from the eager iterator into stdlib_sys_getframe.py.

Assisted-by: Claude Code:claude-opus-5-5

* Emit the generator prefix for top-level await modules

Module code compiled with PyCF_ALLOW_TOP_LEVEL_AWAIT and marked
ste_coroutine now starts with RETURN_GENERATOR; POP_TOP. The prefix and
RESUME emission move into emit_scope_prefix, shared by enter_scope and
the module entry points, as in codegen_enter_scope. Fixes
test_builtin.test_compile_top_level_await.

Assisted-by: Claude Code:claude-opus-5-5

* Allow the c_long cast in _opcode.stack_effect

c_long is i32 on Windows, where clippy reports the cast to i32 as
unnecessary.

Assisted-by: Claude Code:claude-opus-5-5

* Update malachite crates to 0.14.0

pymath requires malachite-bigint ^0, so the example projects, which
have no lock file, resolve it to 0.14.0 while the workspace pinned
0.13.0, and fail to build.

Assisted-by: Claude Code:claude-opus-5-5

---------

Co-authored-by: dot <dot@youknowone.org>
2026-10-14 22:38:42 +09:00
youknowdot b429155ff6 Update Malachite to 0.14 for standalone example builds (#9118)
Align the workspace BigInt dependencies with fresh pymath resolution. Update only the Malachite family and its required wide/safe_arch dependencies.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-14 13:33:19 +00:00
youknowdotandyouknowdot 016ed92f9e Update email from CPython 3.15 (#9114)
Regenerate sixteen Lib files with scripts/update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve inherited test markers without manual Lib edits.

Assisted-by: OpenAI Codex:model version unavailable

Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
2026-10-14 21:46:45 +09:00
youknowdot a85a6cd762 Sync stdlib utilities from CPython 3.15.0 final (#9111)
Regenerate nine utility modules and associated tests with scripts/update_lib
from CPython d220409a13b77de7a6c30abe16ea90db01528edc.
Preserve existing mimetypes fixes by excluding that module from this split.

OpenAI Codex assisted with source audit, update_lib execution, and focused
release validation: 64 tests passed, one existing WASI-only skip.

Assisted-by: OpenAI Codex:model version unavailable
2026-10-14 21:45:57 +09:00
Jeong, YunWon 0816af6543 Update malachite crates to 0.14.0 (#9117)
pymath requires malachite-bigint ^0, so the example projects, which
have no lock file, resolve it to 0.14.0 while the workspace pinned
0.13.0, and fail to build.

Assisted-by: Claude Code:claude-opus-5-5
2026-10-14 20:54:27 +09:00
Leesoo Ahn bc8080a52f Fix pwd.getpwuid raising OSError for unknown uids (#9106)
When a uid does not exist, some NSS backends (systemd-userdb, sssd,
LDAP) make getpwuid_r() return a non-zero errno such as ENOENT. POSIX
expects success with a NULL result instead. That errno was surfacing as
FileNotFoundError and broke test_pwd.test_errors.

Match CPython's pwdmodule.c: raise MemoryError only for ENOMEM, and
treat any other failure as "not found" (KeyError).

Assisted-by: Antigravity:Claude Opus 5.5
2026-10-14 20:40:37 +09:00
28393e932d Implement PEP 814 frozendict (#8951)
* Restore consolidated frozendict implementation on current main

Preserve reverse dictionary iterator fixes and the 3.15 frame imports. Keep library refreshes separate pending the runtime dependency sequencing decision.

Assisted-by: OpenAI Codex:model identifier unavailable

* Support scoped canonical test updates in update_lib

Index conditional test classes and methods without crossing namespaces, reject ambiguous targets, and preserve inherited override indentation. Add hash-pinned whole-test copying that verifies execution context and exact source bytes, with focused Python fixtures.

Assisted-by: OpenAI Codex:model identifier unavailable

* Align frozendict copy support and tests with CPython 3.15

Import exact-final copy.py with update_lib; defer Mapping ABC registration to the later library stage. Generate only proven marker corrections, retain observed debug recursion-limit expected failures, and copy the complete canonical builtin-doc discovery test using hash-pinned update_lib copy-test.

Assisted-by: OpenAI Codex:model identifier unavailable

* Preserve decorator rationale during canonical test copying

Reject differing decorator source blocks even when their ASTs match. Cover inline and multiline marker comments, guarded async methods, and CLI no-write behavior.

Assisted-by: OpenAI Codex:model identifier unavailable

* Finish frozendict with borrowed PyAnyDict views

Use the landed PyRef target model for a transparent dict/frozendict header
view, retaining objects explicitly with PyRef<PyAnyDict>. Keep targets
sealed and preserve mutable-only entry points. Borrow frame globals from
the object header rather than movable reference wrappers.

Unify exact-TypeError key diagnostics with final CPython semantics,
including callback failure propagation and no explicit cause. Keep the
Python regressions in builtin_dict and test reference layout/ownership
in Rust. Preserve existing canonical library updates.

Assisted-by: OpenAI Codex:model identifier unavailable

* Align frozendict with CPython and use CPython 3.15 tests

- Name the target type in unhashable key errors through
  PyDict::update_arg (dict_update_arg), replacing the separate
  PyFrozenDict::merge_into copy of the merge logic.
- Split the | operator into dict_or (_PyDict_Or) and frozendict_or.
- Return the argument from frozendict(frozendict) only when the called
  type is frozendict.
- Call through the vectorcall slot in PyCallable::invoke when there
  are no keyword arguments, instead of special-casing frozendict.
- Add ensure_builtins (_PyEval_EnsureBuiltins) for eval/exec, and
  insert __builtins__ for source strings regardless of globals type.
- Read __warningregistry__ and __name__ from stored globals entries and
  accept only None or str for the module name in setup_context.
- Remove the unused PyFrozenDict::from_object.
- Migrate test_dict.py, mapping_tests.py, test_copy.py and
  test_builtin.py to v3.15.0 with update_lib, and add
  test_import/data/syntax_warnings.py.
- Drop builtin_dict.py frozendict tests covered by those modules,
  keeping the descriptor and namespace integration tests.

Assisted-by: Claude Code:claude-opus-5-5

* Update crates/vm/src/builtins/dict.rs

---------

Co-authored-by: Jeong YunWon <jeong@youknowone.org>
Co-authored-by: Jeong, YunWon <69878+youknowone@users.noreply.github.com>
2026-10-14 16:42:56 +09:00
dependabot[bot] bef501fcd1 build(deps): bump taiki-e/install-action from 2.87.21 to 2.87.26 (#9100)
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.87.21 to 2.87.26.
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/4cef1412cce204788f482e778a0b9187f9626a29...f7e5d7c961414b23f5b25b2da9294395d08513ad)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.87.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-14 09:53:11 +09:00
Jeong, YunWonanddot e61d23b32e Serialize stop-the-world transactions across interpreters (#9094)
* Serialize stop-the-world transactions across interpreters

Coordinate individual stop requests with process-wide collection, retain snapshot owners through rollback, and release transferred ownership after restart.

Assisted-by: OpenAI Codex: model identifier unavailable

* Reject reentrant stop-the-world transactions

Use non-reused logical requester identities to fail before waiting on the same thread, while preserving cross-thread restart and fork ownership.

Assisted-by: OpenAI Codex: model identifier unavailable

---------

Co-authored-by: dot <dot@youknowone.org>
2026-10-14 09:42:31 +09:00
Leesoo Ahn e157f645a2 Fix grp.getgrnam raising OSError for unknown groups (#9101)
Some NSS modules (e.g. sss, systemd) return ENOENT from
getgrnam_r/getgrgid_r for a missing group. Treat any lookup error
as "not found" and raise KeyError, matching CPython. This fixes
test_shutil's test_chown and test_make_archive_owner_group.

Assisted-by: Antigravity:claude-opus-5-5
2026-10-14 09:36:18 +09:00
dependabot[bot] c0c6306233 build(deps): bump github/gh-aw/actions/setup from 0.89.21 to 0.91.3 (#9099)
Bumps [github/gh-aw/actions/setup](https://github.com/github/gh-aw) from 0.89.21 to 0.91.3.
- [Release notes](https://github.com/github/gh-aw/releases)
- [Changelog](https://github.com/github/gh-aw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/gh-aw/compare/c35393777e5604a63721d09512263b1383301d4f...382f4b025fefaa7d6b2492c3608f098340bf6536)

---
updated-dependencies:
- dependency-name: github/gh-aw/actions/setup
  dependency-version: 0.91.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-14 09:35:14 +09:00
dependabot[bot] 29e3531295 build(deps): bump https://github.com/streetsidesoftware/cspell-cli (#9103)
Bumps [https://github.com/streetsidesoftware/cspell-cli](https://github.com/streetsidesoftware/cspell-cli) from v10.2.0 to 10.3.0.
- [Release notes](https://github.com/streetsidesoftware/cspell-cli/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell-cli/compare/v10.2.0...v10.3.0)

---
updated-dependencies:
- dependency-name: https://github.com/streetsidesoftware/cspell-cli
  dependency-version: 10.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-14 09:34:20 +09:00
dependabot[bot] 10b1110608 build(deps): bump https://github.com/astral-sh/ruff-pre-commit (#9102)
Bumps [https://github.com/astral-sh/ruff-pre-commit](https://github.com/astral-sh/ruff-pre-commit) from v0.16.9 to 0.16.10.
- [Release notes](https://github.com/astral-sh/ruff-pre-commit/releases)
- [Commits](https://github.com/astral-sh/ruff-pre-commit/compare/v0.16.9...v0.16.10)

---
updated-dependencies:
- dependency-name: https://github.com/astral-sh/ruff-pre-commit
  dependency-version: 0.16.10
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-14 09:33:48 +09:00
dependabot[bot] 2aacf9dba9 build(deps): bump reviewdog/action-actionlint from 1.77.0 to 1.79.1 (#9098)
Bumps [reviewdog/action-actionlint](https://github.com/reviewdog/action-actionlint) from 1.77.0 to 1.79.1.
- [Release notes](https://github.com/reviewdog/action-actionlint/releases)
- [Commits](https://github.com/reviewdog/action-actionlint/compare/2085657ab2c7f48c58edcc767fba576f63bea76b...1758727be30241166609dad4c97588b6ad411f32)

---
updated-dependencies:
- dependency-name: reviewdog/action-actionlint
  dependency-version: 1.79.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-13 22:54:54 +09:00
dependabot[bot] bbb0f78e97 build(deps): bump j178/prek-action from 3.0.0 to 3.0.1 (#9097)
Bumps [j178/prek-action](https://github.com/j178/prek-action) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/j178/prek-action/releases)
- [Commits](https://github.com/j178/prek-action/compare/4e14d07f9231acabce116ccfca13b13dd9755ece...1382ad72dea72f9d53832f2bcb65b3e87a947204)

---
updated-dependencies:
- dependency-name: j178/prek-action
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-13 22:54:42 +09:00
Jeong, YunWonanddot 723dee027e Initialize PyRef marker in native base conversion (#9096)
Fix the missing field in the new into_base initializer without changing its pointer or ownership transfer.

Assisted-by: OpenAI Codex: model identifier unavailable

Co-authored-by: dot <dot@youknowone.org>
2026-10-13 21:58:28 +09:00
Jeong, YunWonand1ndahous3 0803a55df5 Convert native base references without consulting the Python class (#9090)
PyRef::into_base and Py::to_base cast the pointer directly instead of
going through a class-based downcast. into_base no longer reaches
unreachable_unchecked when the object's MRO omits the native base, and
to_base drops the equivalent debug assertion.

Extracted from #8963.

Assisted-by: Codex:gpt-6
Assisted-by: Claude:claude-opus-5-5

Co-authored-by: 1ndahous3 <9205230+1ndahous3@users.noreply.github.com>
2026-10-13 20:50:13 +09:00
Jiwoo Ahn 7c3c7a73c7 ci: run all passing extra_tests snippets on wasm-wasi via exclude list (#9083)
- Problem: WASM_WASI_SNIPPETS only declared 2 of 244 extra_tests/snippets
  files, so every newly-fixed snippet needed a manual ci.yaml edit to gain
  wasm-wasi coverage
- Fix: loop over extra_tests/snippets/*.py directly and skip only the 57
  files that still fail, hang, or are intentionally-failing
  (WASM_WASI_SNIPPET_EXCLUDE), so fixed and future snippets run automatically
- Verified: built wasm32-wasip1 from current upstream/main, ran all 244
  snippets; the 187 non-excluded files pass 3x repeated runs with no
  flakiness (~48s total, well under the 30-minute job budget); the 57
  excluded files were categorized (missing modules, threading disabled in
  this build, 32-bit overflow, no process support on WASI, wasm call-stack
  limits, socket stub, sandbox path issues, and a couple of individual bugs)

Assisted-by: Claude Code:claude-sonnet-5

Signed-off-by: Jiwoo Ahn <ikwydls1314@gmail.com>
2026-10-13 20:47:53 +09:00
Jeong, YunWonanddot 10cb49430a Detach during blocking Windows multiprocessing socket I/O (#9093)
Snapshot locked send buffers before waiting and preserve the host-captured Winsock error across VM reattachment.

Assisted-by: OpenAI Codex: model identifier unavailable

Co-authored-by: dot <dot@youknowone.org>
2026-10-13 20:47:12 +09:00