Pythonの開発チームは2025年6月11日、最新のメンテナンスリリースであるPython 3.13.5を公開しました。

このバージョンは、直前にリリースされた3.13.4において確認された複数の重大な不具合を解消するための緊急メンテナンスアップデートです。

開発チームが「brown paper bag release」(恥ずかしくて顔を隠したくなるようなミスを含むリリース) と自虐的に表現するほど、迅速な修正が必要とされた重要な変更が含まれています。

Python 3.13.5における主要な修正内容

今回のリリースでは、Python 3.13.4で発生した3つの主要なリグレッション (退行) が修正されました。

これらは開発者の利便性やプログラムの実行挙動に直接影響を与えるものでした。

Windows環境でのビルド不具合の解消

最も大きな修正の一つは、Windows環境における拡張モジュールのビルド失敗への対応です。

通常のビルド (非free-threaded) において、拡張モジュールを構築しようとするとエラーが発生する問題が解消されました。

これにより、Windows上でC拡張などを含むライブラリを利用する開発者は、再び安定して環境構築を行えるようになります。

ジェネレータ式と乱数モジュールの挙動修正

プログラムの論理的な挙動に関する修正も行われました。

具体的には、ジェネレータ式 (generator expressions) が非イテラブルなオブジェクトを受け取った際、以前のバージョンでは生成時に即座に TypeError を送出していましたが、3.13.4では初回実行時まで遅延される仕様に変わっていました。

3.13.5では、この挙動を生成時にエラーを出す元の仕様に戻しています。

また、random.getrandbits() 関数に numpy.int64 といった整数のように振る舞うオブジェクトを渡した際に失敗するバグも修正されました。

Python
import random

# Python 3.13.5での挙動確認
try:
    # 1. ジェネレータ式の即時エラーチェック
    # 非イテラブルな整数を渡すと、生成の瞬間にTypeErrorが発生する
    gen = (x for x in 12345)
except TypeError as e:
    print(f"Caught expected error: {e}")

# 2. random.getrandbitsの修正確認
# 本来はnumpy.int64等で発生していたが、ここではint互換の動作を確認
try:
    # 16ビットの乱数を取得
    result = random.getrandbits(16)
    print(f"Generated value: {result}")
except Exception as e:
    print(f"Unexpected error: {e}")
実行結果
Caught expected error: 'int' object is not iterable
Generated value: 45218

アップグレードの推奨

Python 3.13.5には、上述の緊急修正以外にも、本来は次回の定期リリースに含める予定だった多数のバグ修正が前倒しで取り込まれています。

Python 3.13系を利用しているすべてのユーザーに対し、システムの安定性と正確性を維持するために、早急なアップデートが強く推奨されています。

最新のインストーラーやソースコードは、Python公式サイトのダウンロードページから入手可能です。

まとめ

Python 3.13.5は、3.13.4で見つかった致命的なバグを迅速に修正し、エコシステムの混乱を最小限に抑えるためのリリースです。

特にWindowsユーザーや、データ分析などで数値型を厳密に扱う開発者にとっては、必須のアップデートとなります。

Python 3.13系の新機能を安全に享受するためにも、早めの環境更新を検討してください。