- CPythonの**JITコンパイラがmacOS AArch64で11~12%、x86_64 Linuxで5~6%**の高速化を達成し、目標を前倒しで達成
- 3.13~3.14ではJITがインタープリタより遅かったが、コミュニティ主導の開発と構造改善により性能が大幅に向上
- **トレース記録(trace recording)方式と参照カウント除去(reference count elimination)**のような実験的な試みが主要な転換点
- Savannah Ostrowski, Mark Shannon, Diego Russo, Brandt Bucher などの主要貢献者と多数の新規参加者が協力
- 今回の成果は、コミュニティ主導の開発と協業文化がオープンソースの性能改善に実質的な効果を生み出せることを示している
CPython JITの性能向上の現状
- macOS AArch64で11~12%、x86_64 Linuxで**5~6%**の高速化を記録
- 測定値は幾何平均ベースで、一部のベンチマークでは20%遅い状態から100%以上高速まで幅がある
- なおfree-threading対応は未完成で、3.15/3.16での実現を目標としている
- 3.13~3.14のJITはインタープリタより遅かったが、今回のバージョンで意味のある速度向上を達成
コミュニティ中心のJIT開発
- 2025年のFaster CPythonチームの主要スポンサー停止後、コミュニティ主導の開発体制へ移行
- 目標: 3.15で5%向上、3.16で10%向上およびfree-threading対応
- バス係数の低減のため、各段階(フロントエンド、ミドルエンド、バックエンド)に2人以上のメンテナーを確保
- 複雑な問題を細分化して新規貢献者の参加を促進
- Brandt Bucherが**「mega-issues」**を通じて作業単位を分割
- 11人の貢献者がインタープリタ命令をJIT最適化に適した形へ変換
- 貢献を後押しし成果を共有する文化が継続的な参加に寄与
- 結果としてx86_64 Linuxでの性能が1% → 3~4%向上
主要な技術的転換点
トレース記録(trace recording)
- CPythonコアスプリントでトレーシングベースのフロントエンドへ移行
- 当初は6%遅かったが、dual dispatch構造の導入で性能を改善
- インタープリタのサイズ増加を最小限に抑えつつ、基本インタープリタの速度を維持
- トレース記録の導入によりJITコードカバレッジが50%増加し、その後の最適化効率も向上
参照カウント除去(reference count elimination)
- Matt Pageのバイトコード最適化作業から着想
- 参照カウント減少時に発生する**分岐(branch)**を除去して性能を改善
- 単一の分岐除去だけでも累積コスト削減の効果を確認
- 並列化しやすく、JIT構造を学ぶための課題として新規貢献者の教育にも活用
インフラとチーム構成
- Savannah Ostrowskiが4台のマシンでJIT性能測定インフラを運用
- 毎日のJIT実行結果により**性能回帰(regression)**を早期に検知
- Diego RussoはARMハードウェア向けJITとプロファイラ互換性の改善を担当
- Brandt Bucherはマシンコードバックエンドの基盤を構築し、新規貢献者の参入障壁を低減
協業と知識交流
- CF Bolz-TereickからPyPyに関する助言を受け、JIT設計への理解を向上
- Max Bernstein などコンパイラ専門家との交流を通じて、継続的な動機付けと技術的成長を確保
- PyPyコードの分析経験がCPython JITの品質向上に貢献
結論
- Python 3.15のJITは、コミュニティ協力、技術的実験、インフラ改善が結び付いた成果
- 人、運、そして協業文化がオープンソースの性能革新の中核的な原動力であることを証明
まだコメントはありません。