{{ message }}
Merged
Conversation
Member
berkerpeksag
left a comment
There was a problem hiding this comment.
The copyright part of the PR is being discussed in #4. Rest of the PR looks good to me, thanks!
Member
Author
|
I just added my GitHub username in my bpo details. |
willingc
approved these changes
Feb 13, 2017
* Add a paragraph at the top for users, not builders, of Python. * Use nicer rst url syntax to avoid borking paragraphs in the plain text.
650797e to
e6a6600
Compare
Member
Author
|
OK, removed the date changes. |
berkerpeksag
approved these changes
Feb 13, 2017
Mariatta
referenced
this pull request
in Mariatta/cpython
Feb 13, 2017
Mariatta
referenced
this pull request
in Mariatta/cpython
Feb 13, 2017
Mariatta
added a commit
that referenced
this pull request
Feb 13, 2017
Mariatta
added a commit
that referenced
this pull request
Feb 13, 2017
zware
added a commit
to zware/cpython
that referenced
this pull request
Feb 14, 2017
Includes GH-2, pythonGH-70, pythonGH-73, and pythonGH-21.
jaraco
added a commit
to jaraco/cpython
that referenced
this pull request
Feb 17, 2023
lysnikolaou
referenced
this pull request
in lysnikolaou/cpython
Apr 30, 2024
Fix cursor position for double-width characters
This was referenced Feb 11, 2025
AA-Turner
added a commit
to AA-Turner/cpython
that referenced
this pull request
Apr 22, 2025
SonicField
added a commit
to SonicField/cpython
that referenced
this pull request
Apr 16, 2026
EndInlinedFunction::inline_depth_ defaults to -1 in C++ but calloc gives 0. This was identified as the sole remaining unprotected non-zero default (Pythia python#73, calloc-zero audit D-1776289329). Add hir_c_init_end_inlined() following the same pattern as hir_c_init_deopt (nonce=-1) and hir_c_alloc_instr (bytecode_offset=-1). Any future C factory for EndInlinedFunction must use this init function.
SonicField
added a commit
to SonicField/cpython
that referenced
this pull request
Apr 22, 2026
Adds Lib/test/test_phoenix_jit_inline_except_closure.py as the regression detector for D-1774910012 (28b4ee1, inline exception handler deopt fix). Original C++ fix shipped without a regression test; project memory notes 'only triggers if closure reaches threshold=1000 (currently doesn't in test suite)'. The C port (push 59 emitInlineExceptionMatch) preserves the same invariant. This test pre-exists the port so push 59's dual-arch gate naturally exercises the falsifier. 3 tests covering theologian's 4-step spec + 2 extensions: - test_load_deref_in_except_basic: closure + LOAD_DEREF in except, WARMUP=1100 - test_load_deref_with_pop_except_chain: nested try/except + exc_info chain integrity (sys.exc_info() must be clean between calls) - test_load_deref_after_pop_except: LOAD_DEREF after POP_EXCEPT verifies Py_None placeholder pop semantics + closure cell mutation correctness Baseline: 3/3 PASS on push 58 binary (8b7b935, pre-port C++ implementation). Test now becomes the regression gate for the C port. scripts/gate_phoenix.sh updated to include the new test in PHOENIX_MODULES gate (was 15 tests, now 16). Per pythia python#73 + theologian + supervisor 14:55:41Z: closes the validation gap before push 59 emitInlineExceptionMatch lands.
SonicField
added a commit
to SonicField/cpython
that referenced
this pull request
Apr 22, 2026
Convert HIRBuilder::emitInlineExceptionMatch — the largest, most complex method in the original 7-method remaining set (185-line C++ source with inline bytecode dispatch + 5-block + D-1774910012 invariant). Mirrors C++ HIRBuilder::emitInlineExceptionMatch @ builder.cpp:1329 (pre-conversion). Tier 5 milestone: 70.1%. emitInlineExceptionMatch is the FIRST method shipping with both encoding-clean AND invariant-preserved validation per pythia python#73 (chat 14:39:something) gap closure: D-1774910012 falsifier (3 tests, 595734c) landed pre-port and preserved post-port per testkeeper 8-test gate at chat 15:31:50Z. W25-defer-aware A1 stub-heavy bytecode-parse design (theologian chat 14:48:10Z pre-audit): ZERO new bridges. Pre-audit bridge-count gate per supervisor 14:16:55Z policy (>1 → HALT for Option B reconsideration); this method passed at 0 ≤ 1. 5 phases per pre-audit: P1: getitem CallStatic dispatch (pointer pre-resolved by C++ stub via JITRT_DictGetItem vs PyObject_GetItem) P2: exc_tc setup with depth-trim + LoadConst exc_type + JITRT_MatchAndClearException CallStatic + match_block / deopt_block CondBranch P3: match_tc setup + Py_None placeholder push (D-1774910012 PA) + bytecode dispatch loop (10 cases + default) P4: deopt_tc setup with re-push left/right + Snapshot + Deopt P5: ok block — RefineType in-place SSA-rename 3 separate PhxTranslationContext objects (PB): exc_tc copies from tc.frame match_tc copies from EXC_TC.FRAME (depth-trimmed) deopt_tc copies from TC.FRAME (original, NOT exc_tc) Approach: C++ stub iterates info.except_body bytecodes via BytecodeInstruction.nextInstr() and builds an opcode array with pre-resolved const_obj (LOAD_CONST/RETURN_CONST) and jump_target_block (JUMP_BACKWARD*). C body switches on the array. Sibling C emit functions (hir_builder_emit_swap_c / load_fast_c / store_fast_c / binary_op_c) called directly with extern decls. OpcodeArrayEntry struct mirrored on C++ + C side (5 fields per entry: opcode, oparg, base_offset, const_obj, jump_target_block). C++ static_assert on size sanity check. D-1774910012 invariant (PA pitfall): Py_None placeholder pushed on match_tc.frame.stack BEFORE dispatch loop; POP_EXCEPT case pops the placeholder. Mirrors the inline exception handler deopt fix at 28b4ee1 from 2026-04-01. Failure mode: closure LOAD_DEREF in except blocks → deopt stack mismatch → exc_info chain corruption post-threshold (only triggers post-1000 calls). Preserved via the falsifier in test_phoenix_jit_inline_except_closure.py (push 595734c). Bytecode dispatch loop opcodes (10 handled + default): POP_EXCEPT (pops placeholder per PA), POP_TOP (pops TOS), SWAP, LOAD_FAST/_CHECK/_AND_CLEAR (3 cases), LOAD_CONST, STORE_FAST, BINARY_OP, RETURN_CONST, RETURN_VALUE, JUMP_BACKWARD/_NO_INTERRUPT (2 cases), default → deopt Pitfalls addressed inline (theologian chat 14:48:10Z 8 pitfalls): PA: D-1774910012 Py_None placeholder + POP_EXCEPT pops PB: 3-TC frame-copy origins (each from correct source frame) PC: handler.depth depth-trim while-loop in P2 PD: dispatch loop default → deopt (silent path; supervisor chat 15:30:08Z (b) JIT_DCHECK addition deferred to follow-up commit pending design clarification) PE: emitted_terminator semantics replaced by `goto match_loop_done` pattern in C PF: phx_frame_state_destroy on ALL 3 TCs at function end PG: sibling C emit functions take match_tc explicitly PH: stub-built opcode array with 5 fields per entry JITRT_MatchAndClearException pointer passed from C++ stub via void* (vs C-side direct reference) — avoids C-vs-C++ name mangling at link time. Same pattern as getitem_fn. testkeeper iter cycle: iter 1: 5 errors (extern decl signature mismatches on sibling emit functions + arg counts on LOAD_FAST/STORE_FAST) iter 2: 2 errors (binary_op_c PhxTranslationContext* sig + BCOffset→int conversion) iter 3: 1 link error (JITRT_MatchAndClearException name mangling) iter 4: PASS — JIT_BUILD_EXIT=0, full --clean BUILD_EXIT=0, 8-test gate including D-1774910012 falsifier 8/8 PASS W26 gate-hardening not triggered (clean build path). ZERO new bridges held. Per pythia python#74 (chat 15:29:something): PA invariant validated by falsifier; PB-PH rely on theologian's spec + reviewer inspection. Mutation test per supervisor chat 15:30:08Z (a) is gating push 59 PUSH AUTHORIZED — testkeeper to execute before dual-arch.
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.

Add a paragraph at the top for users, not builders, of Python.
No need to list every year individually. Use a range of years in the copyright.
Use nicer rst url syntax to avoid borking paragraphs in the plain text.