CPython JIT 開発、Standards Track PEP の策定待ちとして一時停止
CPython JIT 開発、正式な PEP の策定待ちとして停止
Python Steering Council は、CPython メインブランチにおける実験的な Just-In-Time (JIT) コンパイラの新しい機能、最適化、およびパフォーマンス向上に関する作業の導入を一時停止するよう正式に要請しました。この凍結は、JIT を実験的なステータスから、言語ランタイムのサポート対象となる非実験的な部分へと移行させるための、Standards Track Python Enhancement Proposal (PEP) が作成、議論、および Council によって正式に受理されるまで継続されます。
新しい機能の追加は一時停止されますが、Steering Council は、JIT のバグ修正およびセキュリティ修正は通常通り継続できることを明確にしました。
Standards Track PEP の必要性
現在の JIT 実装は、標準的な提案ではなく「Informational」として指定された PEP 744 の指針に基づき、実験としてメインブランチにマージされました。Steering Council は、JIT コンパイラの複雑さと影響範囲の広さから、コミュニティの合意と正式なコミットメントが必要であり、それは Informational PEP では提供できないものであると指摘しました。
前進するためには、Council は以下の重要な領域に対処する新しい PEP を必要としています。
長期的なメンテナンスと持続可能性
JIT サブシステムは規模が大きく複雑であるため、PEP は長期的な持続可能性のための明確な計画を概説する必要があります。これには、JIT がどのようにメンテナンスされるか、およびそのメンテナンスが JIT に直接関わらないコアコントリビューターに与える具体的な影響が含まれます。
ツールと機能の互換性
提案書は、JIT が既存の CPython の機能やツールとどのように相互作用し、互換性を保証するかを定義する必要があります。懸念される具体的な領域は以下の通りです:
- Free-threading
- Profilers
- Debuggers
成功指標とタイムライン
Council は、プロジェクトに対して、具体的なパフォーマンス目標、プラットフォームのカバー範囲、メモリオーバーヘッドの制限、およびこれらのマイルストーンを達成するためのタイムラインを含む、明確で測定可能なターゲットを期待しています。
エコシステムとの統合
PEP は、JIT と Numba、PyTorch、CinderX といったサードパーティの JIT 実装との関係を明確にする必要があります。Council は、単一の具体的な実装ではなく、複数の実装戦略をサポートできる一般的な JIT インフラストラクチャについて PEP が記述することを提案しました。
タイムラインと不遵守の場合の帰結
Steering Council は、PEP が提出され解決されるまでの6ヶ月間の猶予期間を設定しました。この期間内に Standards Track PEP が受理されない場合、JIT コードは CPython メインブランチから削除されなければならず、今後の開発はメインの Python プロジェクトとは別のリポジトリで行われる必要があります。
コミュニティの反応と技術的な議論
この発表は、エンジニアリングの厳密さと開発の勢い(モメンタム)のバランスに関する、開発者間の大きな議論を巻き起こしました。
凍結を支持する意見
一部のコントリビューターは、この動きを、明確なメンテナンス計画なしに CPython コードベースを過度に複雑化させるのを防ぐために、エンジニアリング標準を適用する必要な措置であると考えています。あるコメントでは、実験的な機能に関する過去の「YOLO GC debacle」のような問題を踏まえ、この動きは妥当であると述べられています。
凍結に反対する意見
批判的な人々は、技術的な進歩の瞬間において開発を停止させることは、プロジェクトの勢いを削ぐ可能性があると主張しています。一部の観察者は、特定の具体的な実装ではなく、一般的な「インフラストラクチャ」を要求することは、JIT の統合を困難にするための「毒薬条項(poison-pill requirement)」として設計されたものであると考えています。
Python のパフォーマンスに関する視点
コミュニティ内での議論は、Python のパフォーマンスに関する哲学的な違いを浮き彫りにしました:
"CPython の売りは、シンプルで、C 拡張モジュールによって十分に速く、コードがアクセスしやすいことでした。時折 50% の のみでコードベースを複雑化させることは、それほどの価値が価値がありません。"
他の開発者は、JIT が最終的にデフォルトのインタープリタを凌駕することを期待しており、Python 2 から Python 3 への移行期に見たような同様の軌跡が見られるだろうと述べています。