Add a way to ignore JIT stencil digest
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 35.9k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
Feature or enhancement
Proposal:
In Fedora, we use prebuilt JIT stencils on some of the Fedora versions/editions.
When autoconf was updated from 2.72 to 2.73 in Fedora Rawhide, we observed a change in the checksum:
--- /builddir/build/SOURCES/Python-3.15.0a7-x86_64-debug-jit_stencils.h 2026-03-10 00:00:00.000000000 +0000
+++ build/debug/jit_stencils-x86_64-unknown-linux-gnu.h 2026-03-31 21:12:53.391262973 +0000
@@ -1,4 +1,4 @@
-// 5e1dc452d67c20147c4ea13e692c2d3e7b0b47b24f8847354c58988c7ffa02bc
+// c783e3946f774d4d83e8fdcca35678ec77006e1b96b12661fcbd3ee680d10e94
// $ python3.14 /builddir/build/BUILD/python3.14-3.15.0_a7-build/Python-3.15.0a7/Tools/jit/build.py x86_64-redhat-linux-gnu --output-dir . --pyconfig-dir . --cflags= --llvm-version= --debug
The autoconf-generated pyconfig.h file is part of the checksum input:
https://github.com/python/cpython/blob/v3.15.0a8/Tools/jit/_targets.py#L75
My understanding is that the reason for this checksum check is to prevent outdated JIT stencils when Python is re-configured with different options (or when the stencils generation code is updated).
As suspected, the change in checksum was caused by a change in pyconfig.h:
--- pyconfig.h
+++ pyconfig.h
@@ -1882,6 +1882,10 @@
#ifndef _ALL_SOURCE
# define _ALL_SOURCE 1
#endif
+/* Enable extensions on Cosmopolitan Libc. */
+#ifndef _COSMO_SOURCE
+# define _COSMO_SOURCE 1
+#endif
/* Enable general extensions on macOS. */
#ifndef _DARWIN_C_SOURCE
# define _DARWIN_C_SOURCE 1
This is expected, see https://cgit.git.savannah.gnu.org/cgit/autoconf.git/tree/NEWS?h=v2.73#n99
tl;dr When a new autoconf version changes the output of pyconfig.h, the checksum changes as well.
We cannot update the pre-built stencils with the new checksum because that would make the build fail with older autoconf.
Hence, I am proposing we have a way to instruct the Tools/jit/_targets.py tool to ignore checksum mismatch. We would then use this option in Fedora.
For example, ./configure --enable-prebuilt-jit-stencils.
I will open a draft PR for consideration. Thanks.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
What we do in Fedora was previously discussed in https://discuss.python.org/t/building-the-jit-with-pre-built-stencils/91838
Linked PRs
- gh-148647
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với Tools/jit/_targets.py và đề xuất --enable-prebuilt-jit-stencils hiện có, sau đó xem xét PR nháp được liên kết gh-148647. Xác minh checksum bao gồm pyconfig.h như thế nào và xác định hành vi cần xảy ra khi các stencil dựng sẵn đến từ một phiên bản autoconf khác. Được coi là hoàn tất khi Fedora có thể chọn không áp dụng lỗi không khớp mà không làm suy yếu cơ chế bảo vệ mặc định.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- build-system
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 25/100