@@ -20,7 +20,7 @@ explicitly deferred a number of questions about the JIT's long-term status.
2020Since then, the JIT has been re-architected and matured considerably. In Python
21213.15, it delivers a measurable, reproducible speedup over the interpreter
2222(about 4-12% geometric mean performance improvement across measured Tier 1
23- platforms ( see :ref: `Appendix <836-appendix-jit-speedup-2wk >`),
23+ platforms; see :ref: `Appendix <836-appendix-jit-speedup-2wk >`),
2424emits frames that native debuggers can unwind through, and reduces the memory
2525footprint of generated code relative to 3.14. Along the way, we have learned a
2626good deal about what works for a JIT in CPython.
@@ -123,8 +123,8 @@ Python versions, extension compatibility, embedding requirements, deployment
123123constraints, and tooling support.
124124
125125:pep: `744 ` did valuable work explaining the JIT's copy-and-patch approach, made
126- the case for keeping the implementation in CPython ``main `` branch so that it could
127- be maintained by a broader group of volunteers, and sketched some criteria
126+ the case for keeping the implementation in CPython's ``main `` branch so that it
127+ could be maintained by a broader group of volunteers, and sketched some criteria
128128under which the JIT might eventually graduate from an experimental state.
129129However, the original PEP for the JIT left many questions open about
130130guarantees, maintenance commitments, success metrics, timelines, tooling
@@ -146,7 +146,7 @@ As of CPython 3.15, the current JIT compiler is roughly 4-12% faster geometric
146146mean on the pyperformance benchmark suite compared to the interpreter across
147147measured Tier 1 platforms
148148(see :ref: `Appendix <836-appendix-jit-speedup-2wk >`). In order to
149- achieve this, the JIT and supporting infrastructure has undergone a number of
149+ achieve this, the JIT and supporting infrastructure have undergone a number of
150150revisions across the last four major versions of Python:
151151
152152* **3.12: ** Introduction of the CPython bytecode DSL, and refactoring of
@@ -424,7 +424,7 @@ evolves:
424424
425425With all of the above, most optimizations in the JIT can be implemented as
426426local rewrites. This is again, inspired by certain properties of other
427- runtime's intermediate representations. Our goal is to make the JIT more
427+ runtimes' intermediate representations. Our goal is to make the JIT more
428428traditional and teachable, without sacrificing what we can optimize. We do
429429acknowledge that a method JIT requires joining control-flow. However, we
430430believe this is not a large conceptual overhead, as a tracing JIT already
@@ -435,9 +435,9 @@ In terms of what code we need to achieve this frontend, most of the
435435infrastructure required is already present. The main code modifications
436436required are the data structures to represent a control-flow graph, and
437437worklist algorithms to drive the pre-existing optimizer/analysis pass. We can
438- proceed to remove most of the current tracing frontend from the JIT from the
438+ proceed to remove most of the current tracing frontend from the JIT and the
439439interpreter, which will simplify the interpreter's core dispatch mechanism and
440- simplify the main interpreter loop. We believe these are not foreign concepts
440+ the main interpreter loop. We believe these are not foreign concepts
441441to CPython -- the current bytecode compiler in CPython already represents
442442control-flow graphs and has worklist algorithms.
443443
@@ -526,7 +526,7 @@ CPython.
526526First-Class Support for Free-Threading
527527--------------------------------------
528528
529- free -threading is already a part of Python's future, and the current JIT must
529+ Free -threading is already a part of Python's future, and the current JIT must
530530be made free-threading safe as soon as possible to be a viable option for
531531improved performance. This involves making the frontend and middle-end's
532532optimizations free-threading safe (the backend should already be safe). We do
@@ -543,12 +543,12 @@ slight (1-2% geomean) performance hit initially.
543543
544544All future optimizations upon resuming JIT development will be reviewed with
545545free-threading compatibility and performance impact required before merge.
546- Optimizations that rely solely on the GIL build and break on the free threaded
546+ Optimizations that rely solely on the GIL build and break on the free- threaded
547547build will be rejected.
548548
549549Additionally, the JIT may eventually even produce better performance versus the
550550free-threading build than the current GIL build. Early experiments in the JIT
551- suggest free threaded optimization may gain a few more percentage points on
551+ suggest free- threaded optimization may gain a few more percentage points on
552552pyperformance. For example:
553553
554554* Reference counting on the free-threading build is more expensive than on the
0 commit comments