2024年10月1日、Python開発チームは最新のプレビュー版であるPython 3.13.0 release candidate 3 (rc3)を公開しました。

当初はこのタイミングで正式版のリリースが期待されていましたが、直前に発見された重大な問題を修正するために、急遽この「最終候補版」が追加される形となりました。

Python 3.13は、型ヒントの強化や対話型インタープリタの刷新、さらには実験的なJITコンパイラの導入など、今後のPythonの発展を占う重要な機能が数多く盛り込まれています。

本記事では、この最新のrc3リリースの背景と、Python 3.13で導入される主要な新機能について詳しく解説します。

正式版の公開日は2024年10月7日に予定されており、開発者にとって最終確認の重要なフェーズに入っています。

Python 3.13.0rc3リリースの背景

今回のrc3リリースは、当初の計画にはなかった「 unplanned 」なものです。

その主な原因は、アルファ版で導入されたインクリメンタル循環ガベージコレクタに関連する、特定のワークロードにおける顕著なパフォーマンスの低下(回帰)にあります。

開発チームはこの問題を重く受け止め、3.13でのガベージコレクタの変更を一旦取り消し、以前の仕様にロールバックする判断を下しました。

この修正を確実に反映し、かつABI(アプリケーション・バイナリ・インターフェース)の安定性を保証するために、今回のrc3が発行されました。

これにより、Python 3.13.0rc1以降で構築されたバイナリホイールは、今後の正式版でもそのまま動作することが確約されています。

Python 3.13の主要な新機能と変更点

Python 3.13は、パフォーマンスの向上と開発体験の改善に主眼を置いたアップデートが目立ちます。

対話型インタープリタ(REPL)の刷新

標準の対話型インタープリタが大幅に強化されました。

PyPyのインタープリタをベースとした新しいREPLは、マルチライン編集やカラー表示をサポートしています。

また、例外発生時のトレースバックが色分けされるようになり、デバッグ効率が飛躍的に向上しました。

実行パフォーマンスの向上

今回のバージョンでは、将来的な高速化に向けた「実験的」な試みが2つ導入されています。

実験的なJIT(Just-In-Time)コンパイラ

Python 3.13では、コピーアンドパッチ方式のJITコンパイラが試験的に導入されました。

現時点では劇的な速度向上は見込めませんが、インタープリタのオーバーヘッドを削減し、将来のバージョンでさらなるパフォーマンス向上を実現するための強固な基礎となります。

フリー・スレッド・ビルド(GILの無効化)

長年の課題であったGIL(グローバル・インタープリタ・ロック)を無効化して動作させる「フリー・スレッド・ビルドモード」が実験的に提供されます。

これにより、マルチコアCPU環境において、複数のスレッドを真に並列で実行させることが可能になります。

型システムの進化

型ヒントに関する機能も強化されており、より厳密かつ柔軟なコード記述が可能になりました。

typing.TypeIs の導入

従来のtyping.TypeGuardよりも直感的な型絞り込みが可能なtyping.TypeIs(PEP 742)が追加されました。

Python
from typing import TypeIs

def is_str_list(val: list[object]) -> TypeIs[list[str]]:
    # リスト内のすべての要素が文字列であるかを確認
    return all(isinstance(x, str) for x in val)

def process_data(items: list[object]):
    if is_str_list(items):
        # ここでは items は list[str] として扱われる
        print(" ".join(items))

サポートプラットフォームの変更とライブラリの整理

Python 3.13では、動作環境の要件見直しと、古くなった標準ライブラリの削除も行われています。

モバイルとWebAssemblyのサポート強化

WASI(WebAssembly System Interface)がTier 2サポートに昇格したほか、iOSおよびAndroidがTier 3サポートプラットフォームとして正式に位置づけられました。

これにより、モバイルアプリ開発におけるPythonの活用がこれまで以上に期待されます。

標準ライブラリからの「Dead Batteries」削除

PEP 594に基づき、長らく非推奨とされていた古いモジュール群が完全に削除されました。

モジュール名用途
telnetlibTelnetクライアント
cgi / cgitbCGIサポート
mailcapMIMEタイプ処理
cryptパスワードハッシュ(UNIX)

これらのモジュールを使用している古いプロジェクトを移行させる場合は、サードパーティ製の代替ライブラリを検討する必要があります。

開発者へのアクション:正式版に向けた準備

Python 3.13.0rc3は、プロダクション環境での使用は推奨されていませんが、ライブラリメンテナやアプリケーション開発者にとっては最終テストの機会です。

  • 互換性の確認: 既存のライブラリが3.13上で正しく動作するかテストし、必要に応じて修正を行ってください。
  • バイナリホイールの公開: PyPIに3.13対応のホイールを公開する準備を整えましょう。rc1以降のABIは安定しているため、今ビルドしたものは正式版でも有効です。
  • 新機能の試用: 特にフリー・スレッド・ビルドやJITの影響を自社のワークロードで評価しておくことが推奨されます。

まとめ

Python 3.13.0rc3のリリースは、いよいよ一週間後に迫った正式版公開に向けた最終的な調整地点です。

パフォーマンス回帰問題への迅速な対応により、信頼性の高い状態で2024年10月7日のリリースを迎える準備が整いました。

今回のアップデートは、GILからの解放やJITコンパイラの導入といった、Pythonの歴史における大きな転換点を含んでいます。

開発者の皆様は、ぜひこの機会に新しいPython 3.13の世界を体験し、自身のプロジェクトが次世代のPython環境にスムーズに移行できるよう準備を進めてください。