Repository navigation
Integrate remaining Python 3.15 final runtime and libraries - #8954
youknowdot wants to merge 22 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
don't add duplicated tests from Lib/test
There was a problem hiding this comment.
Aligned this file with the complete snippet already merged in #8947 (43065e7). There is now no snippet diff against current main, and the merged coverage is preserved. The CPython 3.15.0 reference run and commit hooks passed; the mega branch native suite has not been rerun for this test-only alignment.
fb0f7b6 to
85d2fb9
Compare
1aba241 to
16a2ef9
Compare
Merging this PR will improve performance by 15.09%
|
| Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|
| ⚡ | rustpython[frozenset.py] |
413.2 µs | 359 µs | +15.09% |
Tip
Curious why performance improved? Comment @codspeedbot explain why performance improved on this PR, or directly use the CodSpeed MCP with your agent.
Comparing youknowdot:cpython-315-mega-integration (0a84bfc) with main (e7e3dfd)
Footnotes
-
4 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
0d7489c to
e14427a
Compare
Split the Python 3.14-compatible empty native dictionary fast path from #8954. Extend the existing JSON snippet with root, nested, sorting, and nonempty subclass regression coverage. Assisted-by: OpenAI Codex:model identifier unavailable
Use the natural logarithm path for both operands, evaluating x first. Preserve large integer bases and raise ZeroDivisionError for base one while retaining noninteger conversion errors. Split the Python 3.14-compatible behavior from #8954 without its additional __index__ fallback or changes to log2 and log10. Assisted-by: OpenAI Codex:model identifier unavailable
📦 Library DependenciesThe following Lib/ modules were modified. Here are their dependencies: :4: SyntaxWarning: invalid decimal literal dependencies:
dependent tests: (90 tests)
[x] lib: cpython/Lib/wsgiref dependencies:
dependent tests: (1 tests)
[x] lib: cpython/Lib/multiprocessing dependencies:
dependent tests: (14 tests)
[x] lib: cpython/Lib/traceback.py dependencies:
dependent tests: (179 tests)
[x] lib: cpython/Lib/webbrowser.py dependencies:
dependent tests: (9 tests)
[x] test: cpython/Lib/test/test_coroutines.py dependencies: dependent tests: (9 tests) [ ] test: cpython/Lib/test/test_pyrepl (TODO: 19) dependencies: dependent tests: (no tests depend on pyrepl) [x] lib: cpython/Lib/profile.py dependencies:
dependent tests: (1 tests)
[x] lib: cpython/Lib/zoneinfo dependencies:
dependent tests: (2 tests)
[x] lib: cpython/Lib/rlcompleter.py dependencies:
dependent tests: (6 tests)
[x] lib: cpython/Lib/tkinter dependencies:
dependent tests: (7 tests)
[x] lib: cpython/Lib/_pyrepl dependencies:
dependent tests: (10 tests)
[x] lib: cpython/Lib/uuid.py dependencies:
dependent tests: (3 tests)
[x] lib: cpython/Lib/xml dependencies:
dependent tests: (38 tests)
[x] lib: cpython/Lib/asyncio dependencies:
dependent tests: (9 tests)
[x] test: cpython/Lib/test/test_str.py (TODO: 3) dependencies: dependent tests: (no tests depend on str) [x] lib: cpython/Lib/symtable.py dependencies:
dependent tests: (2 tests)
[ ] lib: cpython/Lib/pydoc.py dependencies:
dependent tests: (6 tests)
[x] lib: cpython/Lib/test/libregrtest dependencies:
dependent tests: (no tests depend on regrtest) [x] lib: cpython/Lib/pickletools.py dependencies:
dependent tests: (1 tests)
[ ] lib: cpython/Lib/platform.py dependencies:
dependent tests: (35 tests)
[x] lib: cpython/Lib/pyclbr.py dependencies:
dependent tests: (1 tests)
[x] lib: cpython/Lib/argparse.py dependencies:
dependent tests: (281 tests)
[x] lib: cpython/Lib/getpass.py dependencies:
dependent tests: (2 tests)
[x] test: cpython/Lib/test/test_dict.py (TODO: 1) dependencies: dependent tests: (no tests depend on dict) [x] lib: cpython/Lib/bdb.py dependencies:
dependent tests: (3 tests)
[x] test: cpython/Lib/test/test_opcache.py dependencies: dependent tests: (no tests depend on opcache) [ ] lib: cpython/Lib/test/support dependencies:
dependent tests: (2 tests)
[x] lib: cpython/Lib/ctypes dependencies:
dependent tests: (37 tests)
[x] lib: cpython/Lib/urllib dependencies:
dependent tests: (108 tests)
[x] lib: cpython/Lib/profiling dependencies:
dependent tests: (3 tests)
[x] lib: cpython/Lib/timeit.py dependencies:
dependent tests: (1 tests)
[x] test: cpython/Lib/test/test_unpack.py dependencies: dependent tests: (no tests depend on unpack) [x] lib: cpython/Lib/turtle.py dependencies:
dependent tests: (no tests depend on turtle) [x] lib: cpython/Lib/codeop.py dependencies:
dependent tests: (120 tests)
[x] lib: cpython/Lib/pdb.py dependencies:
dependent tests: (2 tests)
[x] lib: cpython/Lib/concurrent dependencies:
dependent tests: (20 tests)
[ ] test: cpython/Lib/test/test_syntax.py (TODO: 8) dependencies: dependent tests: (no tests depend on syntax) [x] test: cpython/Lib/test/test_external_inspection.py dependencies: dependent tests: (no tests depend on external_inspection) [x] test: cpython/Lib/test/test_class.py (TODO: 2) dependencies: dependent tests: (no tests depend on class) [x] lib: cpython/Lib/modulefinder.py dependencies:
dependent tests: (2 tests)
[x] test: cpython/Lib/test/test_monitoring.py (TODO: 2) dependencies: dependent tests: (no tests depend on monitoring) [x] lib: cpython/Lib/ast.py dependencies:
dependent tests: (168 tests)
[x] lib: cpython/Lib/sqlite3 dependencies:
dependent tests: (2 tests)
[x] test: cpython/Lib/test/test_cmd_line_script.py (TODO: 1) dependencies: dependent tests: (no tests depend on cmd_line_script) [x] lib: cpython/Lib/imaplib.py dependencies:
dependent tests: (1 tests)
[ ] lib: cpython/Lib/unittest dependencies:
dependent tests: (416 tests)
[x] lib: cpython/Lib/http dependencies:
dependent tests: (54 tests)
[x] lib: cpython/Lib/code.py dependencies:
dependent tests: (3 tests) [x] lib: cpython/Lib/mailbox.py dependencies:
dependent tests: (2 tests)
[x] lib: cpython/Lib/collections dependencies:
dependent tests: (366 tests)
[x] lib: cpython/Lib/ftplib.py dependencies:
dependent tests: (40 tests)
[x] lib: cpython/Lib/tomllib dependencies:
dependent tests: (1 tests)
[x] test: cpython/Lib/test/test_remote_pdb.py dependencies: dependent tests: (no tests depend on remote_pdb) [x] lib: cpython/Lib/pickle.py dependencies:
dependent tests: (102 tests)
[x] lib: cpython/Lib/idlelib dependencies:
dependent tests: (1 tests)
[x] test: cpython/Lib/test/test_format.py dependencies: dependent tests: (no tests depend on format) [x] lib: cpython/Lib/keyword.py dependencies:
dependent tests: (284 tests)
[x] lib: cpython/Lib/subprocess.py dependencies:
dependent tests: (95 tests)
[x] test: cpython/Lib/test/test_type_cache.py dependencies: dependent tests: (no tests depend on type_cache) [x] lib: cpython/Lib/pstats.py dependencies:
dependent tests: (5 tests)
[x] lib: cpython/Lib/pkgutil.py dependencies:
dependent tests: (12 tests)
[x] lib: cpython/Lib/difflib.py dependencies:
dependent tests: (269 tests)
[x] test: cpython/Lib/test/test_dtrace.py dependencies: dependent tests: (no tests depend on dtrace) [ ] lib: cpython/Lib/ensurepip dependencies:
dependent tests: (2 tests)
[x] lib: cpython/Lib/cProfile.py dependencies:
dependent tests: (2 tests)
[x] test: cpython/Lib/test/test_builtin.py (TODO: 2) dependencies: dependent tests: (no tests depend on builtin) [x] lib: cpython/Lib/dbm dependencies:
dependent tests: (5 tests)
[x] lib: cpython/Lib/_ios_support.py dependencies:
dependent tests: (31 tests) [x] lib: cpython/Lib/doctest.py dependencies:
dependent tests: (36 tests)
[x] test: cpython/Lib/test/test_frame.py (TODO: 2) dependencies: dependent tests: (no tests depend on frame) [x] test: cpython/Lib/test/test_exceptions.py (TODO: 1) dependencies: dependent tests: (no tests depend on exception) [x] test: cpython/Lib/test/test_extcall.py dependencies: dependent tests: (no tests depend on extcall) [x] test: cpython/Lib/test/test_patma.py dependencies: dependent tests: (no tests depend on patma) [x] lib: cpython/Lib/calendar.py dependencies:
dependent tests: (29 tests)
[ ] test: cpython/Lib/test/test_cmd_line.py (TODO: 18) dependencies: dependent tests: (no tests depend on cmd_line) [x] lib: cpython/Lib/_colorize.py dependencies:
dependent tests: (280 tests)
[x] lib: cpython/Lib/shelve.py dependencies:
dependent tests: (1 tests)
[x] test: cpython/Lib/test/test_android.py dependencies: dependent tests: (no tests depend on android) [x] lib: cpython/Lib/curses dependencies:
dependent tests: (5 tests)
[x] test: cpython/Lib/test/test_complex.py (TODO: 1) dependencies: dependent tests: (no tests depend on complex) [x] test: cpython/Lib/test/test_sys.py (TODO: 4) dependencies: dependent tests: (247 tests)
[x] test: cpython/Lib/test/test_import (TODO: 2) dependencies: dependent tests: (no tests depend on import) [x] test: cpython/Lib/test/test_grammar.py dependencies: dependent tests: (no tests depend on grammar) [x] test: cpython/Lib/test/test_positional_only_arg.py dependencies: dependent tests: (no tests depend on positional_only_arg) [x] test: cpython/Lib/test/test_marshal.py (TODO: 3) dependencies: dependent tests: (33 tests)
[x] lib: cpython/Lib/trace.py dependencies:
dependent tests: (1 tests)
[x] lib: cpython/Lib/operator.py dependencies:
dependent tests: (43 tests)
Legend:
|
3f51062 to
1470e0f
Compare
Rebase the remaining integration onto current main while retaining merged compiler and runtime fixes. Import canonical CPython v3.15.0 library sources through update_lib with preserved RustPython markers and explicit migration deferrals. Include the published dependency-report fix from PR RustPython#8958, partial slot correction from PR RustPython#9127, and update_lib repair with existing-workflow coverage from PR RustPython#9131. Assisted-by: OpenAI Codex:model version unavailable
Keep the mega C export set equal to main under the abi3t-only scope. Defer new monitoring exports and the unneeded legacy PyCFunction_Call entry, remove the new non-Stable Windows export exception, and regenerate existing stable buffer exports. Preserve main tests and Python monitoring fixtures. Read live bytecode configuration and return integer context flags as in CPython final. Assisted-by: OpenAI Codex:model version unavailable
Preserve bound-method reduce error ordering and restrict subprocess integration to supported platforms. Assisted-by: OpenAI Codex:model version unavailable
Accept frozendict operands in defaultdict union. Follow final-component links once and otherwise use the CPython home/name fallback, ignoring creator metadata. Align existing venv assertions with exact-final reference results while preserving nested environments after parent removal. Assisted-by: OpenAI Codex:model version unavailable
Keep native thread, TLS and subprocess checks enabled on supported platforms. Assisted-by: OpenAI Codex:model version unavailable
Match final CPython error formatting and propagate representation failures without losing surrogate text. Assisted-by: OpenAI Codex:model version unavailable
Regenerate the canonical CPython 3.15 test module through update_lib, removing only 18 unconditional expected-failure markers whose tests unexpectedly succeeded on Linux, macOS, and Windows at 0d9119b. Preserve all test bodies, guards, assertions, and remaining markers; six super-only marker wrappers return to canonical inheritance. Assisted-by: OpenAI Codex:model version unavailable
Keep the AsObject trait available in the file execution submodule after main split its imports from the interactive execution scope. Assisted-by: OpenAI Codex:model version unavailable
Refresh canonical test expectations and color control to match the already updated stdlib. Retire two command-line expected failures confirmed as unexpected successes on Linux, macOS, and Windows. Assisted-by: OpenAI Codex:model version unavailable
Use the pinned canonical keyword coverage and deprecated file-property contract while preserving existing RustPython test markers. Assisted-by: OpenAI Codex:model version unavailable
Align list helpers, specialization collection, and syntax expectations with pinned CPython 3.15. Preserve surviving doctest guards and retire only unconditional expected failures proven across all three CI platforms. Assisted-by: OpenAI Codex:model version unavailable
Remove only the three stale raise-from diagnostic guards confirmed against the pinned CPython suite and the current mega runtime. Keep all six remaining doctest guards. Assisted-by: OpenAI Codex:model version unavailable
Match CPython 3.15 default-prefix and undeclared-URI callback semantics while preserving the native TreeBuilder end-ns None event. Assisted-by: OpenAI Codex:model version unavailable
Regenerate both complete test modules from CPython d220409a13b77de7a6c30abe16ea90db01528edc using update_lib. Neither old module carries RustPython guards; preserve canonical coverage without new skips or expected failures. Assisted-by: OpenAI Codex:model version unavailable
Reuse the existing mapping helper after a single keys() call, matching CPython PyMapping_Keys diagnostics and completing the key iterable before value lookup and insertion. Assisted-by: OpenAI Codex:model version unavailable
Add an explicit hash-pinned update_lib transform for the approved Cargo layout exception. Preserve canonical behavior for CPython, installed RustPython and explicit basedir arguments; cover the transform and selection matrix in host tooling tests. Assisted-by: OpenAI Codex:model version unavailable
Assisted-by: OpenAI Codex:model version unavailable
7735157 to
0a84bfc
Compare
Generate the missing live-debugging capability guard through an explicit pinned update_lib transform. Preserve offline debugging support and all other test.support customizations. Narrow the existing frame C-API expected failure to Windows without adding non-Stable ABI exports. Assisted-by: OpenAI Codex:model version unavailable
Keep canonical pinning, byte preservation, exact marker validation, and synthetic capability checks while sharing fixture setup and removing redundant downstream branch permutations. Assisted-by: OpenAI Codex:model version unavailable
Run discovery and result writing only from the script entrypoint. Spawn and forkserver imports as __mp_main__ must not recursively execute the complete test suite or remove the parent result file. Assisted-by: OpenAI Codex: model version unavailable
Disable automatic GC before creating the child cycle so the test measures only whether the parent forced collection can reach child-owned objects. Keep both assertions and the parent collection retry unchanged. Assisted-by: OpenAI Codex:model version unavailable
Current CI repair bundle (2026-10-19)
Current source:
05eb3c3f559b297d1c1830c39da1f19819b519ae, based on maine7e3dfd6ce1374efbb16a90ac5cb7a3599ea54de. This remains a draft with maintainer edits enabled.update_libtransformation makestest.supportdetect a missingis_python_processAPI before using it. Existing API-present behavior and offline remote-debugging functionality remain unchanged; host tests use synthetic modules and perform no live process inspection.test_frame.TestFrameCApi.test_basicexpected-failure marker is narrowed to Windows. Its body is unchanged; prior Linux/macOS hosted unexpected successes establish that those platforms should now count it as a pass. Windows retains its prior marker because the ABI3T export list omits non-StablePyFrame_GetLocals; no export is added.Validation on this exact source: standard workspace tests passed (1,451 passed, 18 ignored), configured CAPI tests passed (128 passed, four ignored), and strict all-target workspace/CAPI Clippy passed with
-D warnings. Normal full-range hooks passed. Updater host validation passed 310 tests and 402 subtests; the generated library changes preserve all unrelated bytes and guards. Source/dependency/protected-file audits passed after separately preserving newly generated bytecode caches. No fresh local Python CAPI integration suite or live remote-process API probe was run; new hosted three-platform CI supplies that integration evidence.New CI is pending. The previous workflow results below describe their exact historical source, not the new repair bundle. The separate previous Periodic regression-data failure is tracked alongside the normal CI workflow; full green is not yet claimed.
Previous rebase and CI repairs (2026-10-18)
Previous source:
0a84bfc031663069439f195fef3d7d585a55d428, rebased onto maine7e3dfd6ce1374efbb16a90ac5cb7a3599ea54de. Landed ctypes, lazy-import, import-timing, bytes-like XML parsing, set fallback, SemLock and regex changes were reconciled and independently reviewed. Draft status and maintainer edits remain enabled.This batch fixes the five accelerated ElementTree namespace failures by following CPython's adapter contract, updates complete
test_extcallandtest_unpack_exfrom the pinned CPython 3.15.0 source, and uses the existing mapping-key collector for dict-display updates (including the BrokenKeys diagnostic and key-iteration ordering). The explicitly approved, opt-inupdate_libpydoc transform recognizes RustPython source-build stdlib paths while preserving installed layouts, CPython and explicit basedirs. The obsolete unencodable-filename expected-failure marker is removed; its canonical platform guard remains.Validation on this exact source:
test_xml_etree,test_xml_etree_c,test_extcall,test_unpack_ex,test_dict,test_pydoc. Candidate counts were 231, 249, 6, 6, 143 and 118 respectively, with existing platform skips and expected failures retained.test_importunencodable-filename case and all three import-time/path-config CLI cases passed.Hosted CI on this exact source has completed. All 22 non-Python jobs passed, including three-platform Rust tests/Clippy, cross-checks, Miri and WASI. The Linux production Python suite passed in full. macOS and Windows production suites now fail only
test_external_inspectionandtest_profiling, both during capability detection because the partial_remote_debuggingmodule lacksis_python_process. The C-API test selection passes on Windows; Linux/macOS fail only becauseTestFrameCApi.test_basicunexpectedly succeeds. The Windows individual case status is not available in the non-verbose log, so its module success is not claimed as a case pass. The remaining repairs are being reviewed; this is not a CI-green claim. No inspector implementation or new skip was added. Earlier validation below is retained as historical provenance for its named source.Summary
Remaining Python 3.15 integration, rebased onto canonical
mainat3f55cf4af040a053892bec26061a1e472cd49b5f, using official CPython v3.15.0, commitd220409a13b77de7a6c30abe16ea90db01528edc.This remains a broad integration draft while native changes and canonical library imports are separated into reviewable PRs. The Python-version transition in #8950 is merged. The merged #9127, #9130 and #9131 changes remain owned by main; its jiff-tzdb update is preserved.
Library provenance
Library changes are generated through
scripts/update_libfrom the pinned final reference, preserving applicable RustPython markers. Remaining unsupported migrations stay deferred; generated opcode metadata retains the current compiler schema.The CI repair migrates the old IO/OS test families into the 17 canonical final package files using the update script's explicit package-migration path. All 15 existing marker conditions/reasons and three inherited-method overrides are preserved. Generated file hashes still match the tool outputs after hooks and rebase. No manual Lib edits or discovery relaxation were used.
CI repairs
__name__-before-builtins lookup order.Current validation (canonical CI repair)
Current source:
7735157610a221d5c2be9ed44c66a04a632cd44f, still based on main3f55cf4af040a053892bec26061a1e472cd49b5f.This 17-file test-only repair uses
scripts/update_liband the same pinned CPython final source. It synchronizes stale doctest, pickletools, pydoc, IMAP, shared list, opcache and syntax tests. It retires 26 source expected-failure markers corresponding to 33 passing test instances common to all three OS jobs at1470e0fe, plus three syntax doctest directives verified against the canonical oracle. Existing live guards remain; no new skips or expected failures were added. One old guarded syntax example is absent from upstream's canonical file.Validation is source-scoped:
1470e0fe; incremental builds produced the same native binary, with separately verified current library sources.e2f58c865, and list, userlist and bytes at7c0cc4e4. Their tested files are unchanged in the current checkpoint.773515761; all six remaining doctest guards were retained. Candidate opcache collected and skipped through its existing canonical CPython-only module guard. Three selected cmd_line cases passed at7c0cc4e4.FORCE_COLOR=1. Pydoc's normal bytecode-writing behavior and cmd_line's normal environment-variable behavior were preserved. Generated child-process caches were hash-recorded and quarantined; final source, dependency and protected-file audits passed.CI is not claimed green. The preceding head's hosted run passed every non-Python job but failed all three Python jobs. The new hosted run is pending. Local canonical pydoc now exposes a real stdlib-path classification failure (
test__get_version): nativesys._stdlib_dirpoints to the source library, while canonical sysconfig/pydoc selects the installed-layout directory. That compatibility decision remains pending. Canonical updates for extcall/unpack_ex, which also add mapping-error and unpacking-grammar coverage, remain pending separate scope review. No native diagnostic patch or new expected-failure masking is included here.Prior native-source validation (latest-main REPL rebase)
Prior native source:
1470e0fe6fec124eb70ce44d83c0ee77e4daf525, based on main3f55cf4af040a053892bec26061a1e472cd49b5f(including #9163 and #9179).Main advanced again after the prior push and caused merge conflicts, preventing normal CI from starting on
3f510628cb. This rebase preserves main's REPL, piped-stdin and exit-handling architecture while reconciling the existing mega compiler warning diagnostics and startup/C-API behavior. Independent source review found no remaining conflict blocker. One compile-only integration error, a missing trait import in the newly separated file-execution submodule, was fixed before publication.Native-source validation at that checkpoint:
-D warnings, same exclusions) and normal full-range hooks passed.The 18 pyexpat expected-failure-marker removals below are preserved byte-for-byte. No additional skips or expected-failure markers were added.
Prior-base validation and CI diagnosis
Historical marker-only source commit:
3f510628cbd00d179899253faf1581de50da9ed8, based on main9f6f771965e93d0405bd2ab7958e084f82484f38(including #9179).The rebase preserves main's compiler source-location architecture, startup path handling, native lifetime/locking fixes and merged lazy-import/interpolation behavior. Already-merged IO/OS migration and OrderedDict changes are no longer duplicated as separate commits. Conflicting library files were regenerated only through
scripts/update_libfrom the pinned CPython final source. No new skip/expected-failure markers were added.On the earlier rebased native source
0d9119bd44bada41db261e465d624f19c820442b(native code was unchanged at marker-only3f510628cb):cargo checkpassed, excluding the separately checked C API and platform-specific wasm/venv-launcher packages.cargo checkpassed with the existing RustPython PyO3 configuration.-D warnings, same workspace exclusions) passed.Hosted CI for the rebased native source is not green. All three Python jobs failed; all other jobs completed successfully. All three hosted Clippy jobs, WASI snippets, Miri, WASM demo and completed cross-checks passed. Linux production failures decreased from 30 to 24 test modules; C-API failures remain
test_frameandtest_monitoring. Compared by failing test descriptions with the original head, the only newly observed failures on both Linux and macOS are the same 18test_pyexpatunexpected successes: existing expected-failure markers now cover passing tests. The same 18 unexpected successes were confirmed on Windows as well. Follow-up3f510628cbregenerates the pinned canonical module throughupdate_lib migrate --patchesto retire exactly these markers: 12 direct decorators and six marker-only inherited-method wrappers. All test bodies, assertions, guards and other markers are unchanged. The generated output was verified byte-for-byte against removing only the selected markers. Normal hooks and the 275-test/267-subtest updater suite passed again. Normal hosted CI for that marker-only follow-up was blocked by the subsequent main merge conflict; the latest-main rebase above resolves it. No CI-green claim is made. Other failures remain tracked rather than hidden by new markers. Passing bounded checks do not establish full compatibility.Historical validation before this rebase
Historical source commit:
f32c093339c3fb501c559b4f4f8c05c806f8845c. The following results are retained as provenance, not proof of the current source.A fresh matching release CLI build passed with no default features and
threading,stdlib,stdio,importlib,host_env; its embedded revision isf32c09333. Strict stdlib all-target Clippy (-D warnings) and all 20 static package-migration tooling tests passed.On that exact binary, with verified library origins and optimization disabled, the approved bounded checks all passed: bound-method exception ordering; discovery of 489 unique test modules including the 12 IO/OS children; frozen-map integration and Element.remove repr exception propagation; executable/symlink paths; cyclic and four-combination nested venv cases including parent deletion; and six individually selected OrderedDict view/pprint cases, with zero skips or expected failures. Each ran under its reviewed timeout/memory/process/output limits. The first attempt's Element.remove failure was preserved, fixed, rebuilt, and the complete approved sequence rerun successfully.
At that historical checkpoint, hosted CI was pending. Its eventual failures are the comparison baseline described above.
Already completed on the integrated predecessor source: strict VM all-target Clippy with the C-API feature, wasm32-wasip1 VM compile, and the exact t-string compiler test. WASI compilation reports existing target-specific warnings; no WASI runtime was run. Normal commit hooks passed. Offline configured Zizmor comparison against the previously published workflow has four unchanged low-severity self-repository findings and no new findings; YAML-anchor warnings occur on both inputs.
The IO/OS check only enumerates canonical tests and proves that test modules were not imported. It does not execute the IO/OS suites. Full regression, concurrency/GC stress, and candidate C-API runtime suites were not run locally.
C-API scope
The abi3t-only correction defers the 20 new non-Limited monitoring C exports and their dedicated new test, plus the unneeded legacy
PyCFunction_Calladdition/test. The latter is historical Stable ABI compatibility, not a non-Stable function. Main's existing tests and Python/internal monitoring fixture path remain. The new WindowsPyFrame_GetLocalscompatibility exception is removed; main's existing implementation remains.At the pre-rebase checkpoint, source export names/kinds equalled its then-current main exactly: 555 symbols. The earlier correction at
1984aac7also passed an actual matching cdylibnmcomparison; that compiled-artifact result is scoped to that earlier build. The Windows definition has 514 generic Stable ABI symbols, including six already-main buffer APIs missing from the stale list. The generator uses the generic Stable ABI manifest: these are scoped no-expansion checks, not full abi3t certification or Windows PE runtime validation.Existing native config_get corrections add no C exports: live write_bytecode observes sys.dont_write_bytecode, and the context flags return integers. Candidate C-API runtime semantics remain unverified.
Remaining limits
This is not complete Python 3.15 compatibility. Hosted CI, deferred library migrations, full suites and platform-specific behavior still need validation. Bounded cases do not establish general concurrency, GC, XML parser or C-API lifetime safety.
AI assistance
Prepared with OpenAI Codex under the requesting maintainer's direction. The runtime does not expose an exact model identifier; commits disclose that limitation.