python / python/cpython

Add a way to ignore JIT stencil digest

オープン
#148,646 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

build interpreter-core topic-JIT type-feature
主要言語
Python
スター
77.2k
フォーク
35.9k
PR マージ指標
PR 指標を取得中

説明

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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず Tools/jit/_targets.py と既存の --enable-prebuilt-jit-stencils 提案を確認し、次にリンク先のドラフト PR gh-148647 を確認します。チェックサムに pyconfig.h がどのように含まれるかを検証し、異なるバージョンの autoconf から生成された prebuilt stencils が使われる場合にどのような動作にすべきかを定義します。Fedora が不一致による失敗をオプトアウトでき、デフォルトの保護を弱めない状態になれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
build-system
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。