Repository navigation
Align weak-reference comparison and ownership controls - #9710
Draft
youknowdot wants to merge 1 commit into
Draft
youknowdot wants to merge 1 commit into
youknowdot wants to merge 1 commit into
Conversation
Assisted-by: OpenAI Codex:model version not exposed
Contributor
|
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Align weak-reference and proxy controls with Python 3.15 in three Rust files (+101/-92).
Validation
Compared against pinned CPython d220409a13b77de7a6c30abe16ea90db01528edc weakrefobject.c, cellobject.c and weakrefobject.h. The external CPython oracle passes 149 assertions plus 20 additional exact-repr assertions covering raw results, exact operations, both proxy types, dead operands, repr callback bypass, reentrant hash cache outcomes, and callback/finalizer order.
Independent source/lifetime review passed on the final patch. An independent external oracle passed another 172 assertions, including direct proxy-slot dispatch, nested hash error/cache outcomes and last-owner finalizer visibility. Final threaded cargo check passed (1m03s) and all-target Clippy passed (1m34s), with exactly the 12 unchanged baseline diagnostics. Normal commit hooks passed without bypass. No Python tests, repository test logic, markers, Lib files or workflows are changed.
Limits and integration
Native RustPython execution remains unperformed because the required safety guard is not verified. External reference assertions and source review do not establish a native runtime pass; hosted CI remains necessary. Cross-thread hash critical-section equivalence and concurrent stress behavior are not established by this single-threaded compatibility work.
The pinned CPython runtime leaks earlier upgraded operands when a later proxy is dead, and can corrupt a pending hash exception during finalizer reentry. Those upstream anomalies are deliberately not reproduced: Rust retains safe cleanup and the original error. Traceback-owned operand lifetimes can separately delay finalizers.
Standalone surrogate module/qualname fidelity remains limited by the current shared helper; full lossless names require #9700. Constructor parsing remains unchanged. The patch preserves #9699's reversed-method area and composes with #9700's qualified-name return type change using the existing WTF-8 helper rather than a second formatter. Payload validation/ownership infrastructure from #8963/#8944/#8939 is not duplicated.