Python 3.15のJITが再び軌道に乗りました
概要
- CPython JITが目標より早くパフォーマンス向上を達成
- コミュニティ主導とチームワークが成功要因
- 技術的転換点はトレース記録や参照カウント削減
- インフラ整備と日々のフィードバックの重要性
- 人との交流や運の要素も大きな役割
CPython JITの進捗と成果(2026年3月時点)
- macOS AArch64でJITはインタプリタ比約11-12%高速化
- x86_64 Linuxでも標準インタプリタ比5-6%高速化
- 3.15 alpha JITの数値は幾何平均・暫定値
- パフォーマンス幅は20%低下から100%以上の高速化まで
- free-threading対応は3.15/3.16で目指す
- JIT開発は一時困難だったが、再び軌道に乗る
JITプロジェクトの苦難と転機
- 3.13/3.14 JITはほぼ速度向上なし、むしろ遅かった
- Faster CPythonチームは資金提供者を失い、未来が不透明に
- 主要貢献者(Savannah Ostrowski, Mark Shannon, Diego Russo, Brandt Bucher, Ken Jinなど)が継続
- 運とタイミング、適切な人材が揃ったことが成功の鍵
- 貢献者拡大のため、作業分割と明確な手順書を用意
コミュニティ主導による開発体制強化
- バス係数低減を目指し、各段階で2名以上のアクティブメンバー配置
- **中間処理(middle-end)**の貢献者が2名から4名に増加
- Brandtによる問題分割と「最適化タスクの細分化」
- 新規貢献者が参加しやすい環境整備
- 11名の貢献者がインタプリタ命令の変換作業に参加
- 成果の可視化と達成の祝福がモチベーション向上に寄与
技術的ブレークスルーと幸運
- トレース記録型JITへの転換が大きな効果
- Brandtの提案から始まり、初期は失敗だったが設計変更で成功
- dual dispatch方式でインタプリタの肥大化を回避
- JITコードカバレッジが50%増加し、最適化の効果が倍増
- 参照カウント削減の最適化
- Matt Pageの先行研究を基に、分岐削減で大幅な高速化
- 教育的価値も高く、新規貢献者の学習機会となる
インフラと日常的なフィードバック
- Savannahが実質一人でインフラを担当
- 4台のマシンで日常的なJITパフォーマンス計測
- パフォーマンス回帰の早期発見と最適化効果の可視化
- ARM対応やプロファイラ対応など多様な技術課題にも挑戦
人とのつながりと学び
- PyPy開発者CF Bolz-Tereickとの交流
- Max Bernsteinらとのコンパイラ談話でモチベーション維持
- 他プロジェクト参照による視野拡大と技術力向上
- 知識やアイデアの共有がプロジェクト成功に不可欠
結論:人と運がJITを動かす
- 人の力と幸運がCPython JITの進化を支える
- JIT go brrr(JITが速く動く!)