Python 3.10.22が10月1日に公開された。リリースページは、これが3.10の最後のリリースで、3.10系列はこれ以上セキュリティ更新を受けないと明記している。

PEP 619は、2026年10月1日をもって3.10がサポート終了(end-of-life)の段階に入ったと記す。3.10のコードベースは凍結され、バグトラッカーではいかなる種類の課題も受け付けない。

3.10.22には、tarfileの展開フィルターの回避、zipfileでbzip2・LZMAメンバーを展開する際の無制限なメモリ確保、urllibの認証情報の範囲の問題など、CVE付きの修正が入っている。同梱のlibexpatも2.8.5に更新された。

ssl.SSLContext.wrap_bio()は、server_hostnameなどの引数を検証するようになった。3.10では互換性のため、check_hostnameが有効なのにホスト名がない場合はDeprecationWarningを出すだけだ。

3.10.22はソースのみの提供だ。公式バイナリインストーラーがあった最後の3.10は、2023年4月の3.10.11だった。

注意点:上流の終了とディストリビューションのサポートの違い

今回の終了は上流のCPythonの保守に関するものだ。OSディストリビューションや商用ベンダーは独自の方針を持ちうるが、この記事は個別のディストリビューションの方針や契約を確認していない。

インストーラーで入れた環境は、3.10.12以降のソースのみのセキュリティリリースを普段の経路で受け取れていなかった可能性がある。3.10.22を入れても、上流のサポート期間は延びない。

リリースページはサポート中のPythonへのアップグレードを促し、現在の最新の機能リリース系列は3.14だとしている。

最後のパッチとランタイム移行を分けて整理する

3.10を使うサービス、コンテナのベースイメージ、定期実行ジョブの一覧を作ると、2つの作業の範囲が見えてくる。

最後のパッチはすでに出た修正を反映する作業で、ランタイムの移行はこれからのセキュリティ修正を受けるための作業だ。依存関係とネイティブ拡張の動作は、移行先のバージョンで別に表れる。

Python 3.10.22は3.10の最後のセキュリティ修正であり、このパッチを適用しても3.10の上流サポートが再開するわけではない。