スレッド自由時代を宣言—Python Steering Councilの決定
(discuss.python.org)ナ・ドンヒ氏の尽力により、フリースレッディングはついに実験タグを外れ、公式サポートとなります。
Python Steering Council(SC)は PEP 779 を承認し、Python 3.14 のフリースレッディング(free-threaded)ビルドから 「experimental」タグを削除することを決定しました。この決定は、Phase II の期間中に次の課題を満たすことを条件として下されました。
-
C API/ABI 互換性および Stable C API の整備
- 既存の API/ABI 互換性を壊す変更は、必ず C API ワーキンググループと事前合意すること
- Python 3.15 までにフリースレッディング専用の Stable C API を定義・提供すること
-
新たな実験的プロジェクト基準
- CPython 内部の新規実験プロジェクトは、フリースレッディングビルドと互換性を持ち、これを前提に開発すること
- GIL とフリースレッディングの並行維持に伴う複雑さを最小化すること
-
性能・メモリのガードレール
- 目標: GIL ビルド比で性能低下 10 % 以内
- 最大 15 % の性能低下 / 15 % のメモリ増加までは SC の事前合意が必要(メモリ上限は 20 %)
-
文書化要件
- Python ユーザー: 標準ライブラリ API の保証と変更点の明確化
- Python・C API 開発者: シグナル・スレッド安全性など、並行性保証の文書化
- CPython 開発者: 実装時の考慮事項の文書化
- すべての資料を集約した公式の「フリースレッディング・ランディングページ」を提供
-
高水準並行プリミティブの準備
concurrentパッケージを中心に、ユーザーが内部実装を知らなくても活用できる高水準の並行ツールを提案・検討
-
ベンチマーク要件
- 性能・メモリ・正確性に関する主張を
pyperformanceベースの再現可能なテストで検証 - 実際のワークロードを反映した追加ベンチマークへの貢献を奨励
- 性能・メモリ・正確性に関する主張を
SC はプロジェクトの進捗状況に確信を示し、Python コミュニティがフリースレッディングビルドを正式サポートの選択肢として積極的に広報することを推奨しています。3.14 beta 3 で「experimental」タグは正式に削除される予定であり、Phase III(フリースレッディングをデフォルトまたは唯一のビルドへ移行する段階)については今後議論されます。
3件のコメント
スレッド独立万歳!
やったー!
わお…!