PEP 744: Add link to slides and clarification about LLVM dependency (GH-3850)

This commit is contained in:
Savannah Ostrowski 2024-07-03 22:08:25 -07:00 committed by GitHub
parent 2d60997b1c
commit 8c02849924
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 2 deletions

View File

@ -1,6 +1,7 @@
PEP: 744 PEP: 744
Title: JIT Compilation Title: JIT Compilation
Author: Brandt Bucher <brandt@python.org> Author: Brandt Bucher <brandt@python.org>,
Savannah Ostrowski <savannahostrowski@gmail.com>,
Discussions-To: https://discuss.python.org/t/pep-744-jit-compilation/50756 Discussions-To: https://discuss.python.org/t/pep-744-jit-compilation/50756
Status: Draft Status: Draft
Type: Informational Type: Informational
@ -33,7 +34,7 @@ the following resources:
JIT at the 2023 CPython Core Developer Sprint. It includes relevant JIT at the 2023 CPython Core Developer Sprint. It includes relevant
background, a light technical introduction to the "copy-and-patch" technique background, a light technical introduction to the "copy-and-patch" technique
used, and an open discussion of its design amongst the core developers used, and an open discussion of its design amongst the core developers
present. present. Slides for this talk can be found on `GitHub <https://github.com/brandtbucher/brandtbucher/blob/master/2023/10/10/a_jit_compiler_for_cpython.pdf>`__.
- The `open access paper <https://dl.acm.org/doi/10.1145/3485513>`__ originally - The `open access paper <https://dl.acm.org/doi/10.1145/3485513>`__ originally
describing copy-and-patch. describing copy-and-patch.
@ -534,6 +535,12 @@ executable. These issues are no longer present in the current design.
Dependencies Dependencies
------------ ------------
At the time of writing, the JIT has a build-time dependency on LLVM. LLVM
is used to compile individual micro-op instructions into blobs of machine code,
which are then linked together to form the JIT's templates. These templates are
used to build CPython itself. The JIT has no runtime dependency on LLVM and is
therefore not at all exposed as a dependency to end users.
Building the JIT adds between 3 and 60 seconds to the build process, depending Building the JIT adds between 3 and 60 seconds to the build process, depending
on platform. It is only rebuilt whenever the generated files become out-of-date, on platform. It is only rebuilt whenever the generated files become out-of-date,
so only those who are actively developing the main interpreter loop will be so only those who are actively developing the main interpreter loop will be