◐ Shell
clean mode source ↗

Renamed whole Mac OS X's to macOS by ergenekonyigit · Pull Request #58 · python/cpython

@ergenekonyigit

methane

methane

methane

ned-deily

frewsxcv

frewsxcv

jaraco pushed a commit that referenced this pull request

Dec 2, 2022
Once a core dev approved it and all CI passed.

mgmacias95 pushed a commit to mgmacias95/cpython that referenced this pull request

Mar 27, 2023

oraluben pushed a commit to oraluben/cpython that referenced this pull request

Jul 12, 2023

AA-Turner pushed a commit to AA-Turner/cpython that referenced this pull request

Apr 10, 2025
* Bugfix: increment `interpolationsidx` in `template_new()`
* Spec fix: don't return empty strings from `templateiter_next()`
---------

Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>

SonicField added a commit to SonicField/cpython that referenced this pull request

Apr 22, 2026
Push 44 W3 follow-up per supervisor 03:07:52Z + theologian 03:07:25Z:
- rc_oracle_self_test.sh: expand from 1 → 4 injection classes (A/B/C/D)
- _rc_oracle_adapter.h: add invariant python#7 (oracle lifespan policy)
  to BRIDGE SPEC TEMPLATE (supersedes W12)

Per supervisor 03:07:52Z W4 vacuous-pass defeat directive:
"single-injection test is the W4 vacuous-pass class".

================================================================
PART 1: 4 INJECTION CLASSES (rc_oracle_self_test.sh)
================================================================

Generalized inject_class helper (sed → rebuild → diff → restore →
rebuild) replaces the hard-coded single-injection block.

Class A — refcount BALANCE under-count:
  Skip FIRST phx_rc_emit_incref via line-comment.
  Failure mode caught: under-count → leak under Py_REF_DEBUG.

Class B — refcount BALANCE over-count:
  Skip FIRST phx_rc_emit_decref via line-comment.
  Failure mode caught: over-count → leak (different mechanism than A).

Class C — refcount SEQUENCE:
  Skip SECOND phx_rc_emit_incref (different call-site than A) via
  line-comment.
  Failure mode caught: HIR position-dependent divergence — same opcode
  family as A but different injection position to test position
  sensitivity.

Class D — TYPE LATTICE:
  Change FIRST HIR_TYPE_OBJECT → HIR_TYPE_NULLPTR via sed.
  Failure mode caught: type-annotation flip — wrong refcount semantics
  for borrowed-vs-owned classification.

Each class:
  1. sed transformation applied
  2. cmp -s verifies source actually changed (catches stale sed pattern)
  3. Rebuild C path
  4. Run scripts/rc_diff_oracle.sh
  5. PASS = non-empty diff (oracle CATCHES the divergence)
     FAIL = empty diff under injection (oracle MISSED → non-functional)
  6. Restore source from backup + rebuild

Default invocation runs all 4 classes sequentially. --class=A|B|C|D
runs single class. trap EXIT ensures restore on script error.

================================================================
PART 2: INVARIANT python#7 (_rc_oracle_adapter.h)
================================================================

Added to BRIDGE SPEC TEMPLATE INVARIANTS PRESERVED section per
theologian + supervisor 03:07:52Z (supersedes earlier W12 framing):

  7. Oracle lifespan: utility decreases as emit methods diverge from
     d81e580 baseline. RETIREMENT TRIGGER: when scripts/
     rc_diff_oracle.sh on CLEAN run produces >30% pre/post divergence
     noise, retire (archive script). ESTIMATED LIFESPAN: 30-50 pushes
     from d81e580 (push 35) → retirement window ~push 65-85.
     Re-evaluate at push 50 (testkeeper clean-diff noise % post).

Also added invariant python#6 inline (oracle scope conflated diff —
already in commit msg of a99db92 but missing from header file).

Falsifier section expanded to enumerate 4 classes (A/B/C/D) with
their distinct failure-mode coverage per Pythia python#58's vacuous-pass
concern.

================================================================
VERIFICATION
================================================================

bash -n scripts/rc_oracle_self_test.sh: SYNTAX OK (260 lines).
diff --cached --stat: 2 files, +142/-48 — only the 2 intended files
(verified explicit-staging discipline per supervisor 02:51:14Z).

Push 44 W3 batch grows to 3 commits:
  a99db92 — W3 Steps 1-4 bundled (scratch lib + dispatcher)
  4f591a1 — W3 Step 5 v1 (single class A)
  THIS COMMIT — W3 Step 5 expansion (4 classes + invariant python#7)
ABBA cap 15 → 18.

SonicField added a commit to SonicField/cpython that referenced this pull request

Apr 22, 2026
Per supervisor 2026-04-22 03:06:55Z + theologian 03:07:12Z + pythia python#58:
push 44 introduces the W3 R4 oracle dispatcher in compiler.cpp behind
#ifdef RC_ORACLE. The push-44 nm production-binary check is one-shot —
need a STANDING gate assertion so future compiler.cpp edits cannot
silently leak RC_ORACLE dispatch into production.

Failure mode caught:
  Any future commit that drops, inverts, or accidentally hard-defines
  the #ifdef RC_ORACLE guard would leak the C++ rc_oracle dispatch path
  (linked from libphoenix_rc_oracle.a) into the production python
  binary. Without this assertion, the leak is invisible until the next
  manual nm audit. Same silent-failure class as the cp-||-true loophole
  (catch python#4, push 38) — accepted bad state silently.

Implementation (5 LOC after BINARY_MATCH (clean) ✓):
  RC_ORACLE_LEAK=$(nm $PYTHON | grep -c 'rc_oracle')
  if [ $RC_ORACLE_LEAK -ne 0 ]; then
      echo BINARY_RC_ORACLE_LEAK_DETECTED ...
      exit 1
  fi
  echo BINARY_RC_ORACLE_OK: production binary clean (0 rc_oracle symbols)

Verbatim wording per gatekeeper item python#15 (03:07:25Z):
  - PASS: 'BINARY_RC_ORACLE_OK: production binary clean (0 rc_oracle symbols)'
  - FAIL: 'BINARY_RC_ORACLE_LEAK_DETECTED' + FATAL + exit 1
  - Mirrors BINARY_DIRTY discipline (catch silent failure structurally)

Verification (compile-clean pre-commit):
  bash -n scripts/gate_phoenix.sh: SYNTAX OK
  Inserted at line 120 (immediately after BINARY_MATCH block at line 119).

Bundled into push 44 (rather than standalone push 45) because the
dispatcher lands in this push — the leak-check guards it from day 1
instead of leaving a one-push window where item python#15 isn't enforced.

Push 44 batch grows 3 → 4 commits:
  THIS COMMIT  — gate item python#15 (RC_ORACLE leak assertion)
  63568c0   — W3 Step 5 expansion (4 injection classes + invariant python#7)
  4f591a1   — W3 Step 5 v1 (rc_oracle_self_test.sh)
  a99db92   — W3 Steps 1-4 (scratch lib + dispatcher)

ABBA cap usage: 17 → 18 (4 commits this push).