From a9242b65d4b57350f0840d1e818fbc38ae2ce243 Mon Sep 17 00:00:00 2001 From: Savannah Ostrowski Date: Thu, 8 Aug 2024 21:43:24 -0700 Subject: [PATCH] PEP 744: Additional updates from discussion thread (#3861) --- .github/CODEOWNERS | 2 +- peps/pep-0744.rst | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 721d70157..bb5213dce 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -622,7 +622,7 @@ peps/pep-0740.rst @dstufft peps/pep-0741.rst @vstinner peps/pep-0742.rst @JelleZijlstra peps/pep-0743.rst @vstinner @encukou -peps/pep-0744.rst @brandtbucher +peps/pep-0744.rst @brandtbucher @savannahostrowski peps/pep-0745.rst @hugovk peps/pep-0746.rst @JelleZijlstra peps/pep-0747.rst @JelleZijlstra diff --git a/peps/pep-0744.rst b/peps/pep-0744.rst index 413ea8fcd..3825b61d8 100644 --- a/peps/pep-0744.rst +++ b/peps/pep-0744.rst @@ -99,10 +99,11 @@ physical hardware registers). Since much of this data varies even between identical runs of a program and the existing optimization pipeline makes heavy use of runtime profiling information, -it doesn't make much sense to compile these traces ahead of time. As has been -demonstrated for many other dynamic languages (`and even Python itself -`__), the most promising approach is to compile the -optimized micro-ops "just in time" for execution. +it doesn't make much sense to compile these traces ahead of time and would be a +substantial redesign of the existing specification and micro-op tracing infrastructure +that has already been implemented. As has been demonstrated for many other dynamic +languages (`and even Python itself `__), the most promising +approach is to compile the optimized micro-ops "just in time" for execution. Rationale ========= @@ -138,8 +139,10 @@ code and 500 lines of runtime C code. Specification ============= -The JIT will become non-experimental once all of the following conditions are -met: +The JIT is currently not part of the default build configuration, and it is +likely to remain that way for the foreseeable future (though official binaries +may include it). That said, the JIT will become non-experimental once all of +the following conditions are met: #. It provides a meaningful performance improvement for at least one popular platform (realistically, on the order of 5%). @@ -525,7 +528,10 @@ likely to be a real concern. Not much effort has been put into optimizing the JIT's memory usage yet, so these numbers likely represent a maximum that will be reduced over time. Improving this is a medium priority, and is being tracked in `GH-116017 -`__. +`__. We may consider +exposing configurable parameters for limiting memory consumption in the +future, but no official APIs will be exposed until the JIT meets the +requirements to be considered non-experimental. Earlier versions of the JIT had a more complicated memory allocation scheme which imposed a number of fragile limitations on the size and layout of the