Python 3.13.6 の公開から10日もたたない 8月14日(日本時間8月15日)に 3.13.7 がリリースされました。
ここから======
これはPython 3.13の7番目のメンテナンスリリースです。
Python 3.13はプログラミング言語Pythonの最新のメジャーリリースで、Python 3.12と比較して多くの新機能と最適化が含まれています。3.13.7 は 3.13 の 7 回目のメンテナンスリリースです。
3.13.7 は 3.13.6 リリースの重大な問題を修正するための簡易リリースです:
gh-137583: 3.13.5と3.13.6の間のsslモジュールのリグレッション: TLSで暗号化された接続からの読み込みがブロックされる
他にもいくつかのバグフィックス(次のリリースまで待たねばならないもの)が含まれています。
======ここまで (DeepL による翻訳)
これは完全に緊急のバグフィックスで、
Regression in ssl module between 3.13.5 and 3.13.6: reading from a TLS-encrypted connection blocks #137583
https://github.com/python/cpython/issues/137583
なるべく早く 3.13.6 から 3.13.7 へアップデートする必要がありますね。早速アップデートしてみましょう。
https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz
https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz.asc
MD5 Sum: 256cdb3bbf45cdce7499e52ba6c36ea3
ダウンロードしてチェックします。
$ wget https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz
--2025-08-24 10:26:37-- https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz
Resolving www.python.org (www.python.org)... 2a04:4e42::223, 2a04:4e42:200::223, 2a04:4e42:400::223, ...
Connecting to www.python.org (www.python.org)|2a04:4e42::223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22769492 (22M) [application/octet-stream]
Saving to: ‘Python-3.13.7.tar.xz’
Python-3.13.7.tar.x 100%[===================>] 21.71M 11.0MB/s in 2.0s
2025-08-24 10:26:40 (11.0 MB/s) - ‘Python-3.13.7.tar.xz’ saved [22769492/22769492]
$
$ wget https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz.asc
--2025-08-24 10:28:06-- https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz.asc
Resolving www.python.org (www.python.org)... 2a04:4e42:200::223, 2a04:4e42:400::223, 2a04:4e42:600::223, ...
Connecting to www.python.org (www.python.org)|2a04:4e42:200::223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 963 [application/octet-stream]
Saving to: ‘Python-3.13.7.tar.xz.asc’
Python-3.13.7.tar.x 100%[===================>] 963 --.-KB/s in 0s
2025-08-24 10:28:06 (20.2 MB/s) - ‘Python-3.13.7.tar.xz.asc’ saved [963/963]
$
$ gpg --verify Python-3.13.7.tar.xz.asc
gpg: assuming signed data in 'Python-3.13.7.tar.xz'
gpg: Signature made Thu 14 Aug 2025 14:49:02 BST
gpg: using RSA key 7169605F62C751356D054A26A821E680E5FA6305
gpg: Good signature from "Thomas Wouters <thomas@python.org>" [unknown]
gpg: aka "Thomas Wouters <thomas@xs4all.nl>" [unknown]
gpg: aka "Thomas Wouters <twouters@google.com>" [unknown]
gpg: aka "Thomas Wouters <thomas.wouters.prive@gmail.com>" [unknown]
gpg: aka "Thomas Wouters <thomaswout@gmail.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 7169 605F 62C7 5135 6D05 4A26 A821 E680 E5FA 6305
$
$ md5sum Python-3.13.7.tar.xz;echo 256cdb3bbf45cdce7499e52ba6c36ea3
256cdb3bbf45cdce7499e52ba6c36ea3 Python-3.13.7.tar.xz
256cdb3bbf45cdce7499e52ba6c36ea3
$
展開してビルドします。
$ tar xvf Python-3.13.7.tar.xz
$ cd Python-3.13.7
$ ./configure --prefix=/usr/local/python --with-readline --enable-shared --enable-optimizations
checking build system type... aarch64-unknown-linux-gnu
checking host system type... aarch64-unknown-linux-gnu
checking for Python interpreter freezing... ./_bootstrap_python
checking for python3.13... python3.13
checking Python for regen version... Python 3.13.6
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
.......................................................
configure: creating Modules/Setup.local
configure: creating Makefile
$
$ make
Running code to generate profile data (this can take a while):
# First, we need to create a clean build with profile generation
# enabled.
make profile-gen-stamp
make[1]: Entering directory '/home/espiya/src/Python-3.13.7'
make clean
make[2]: Entering directory '/home/espiya/src/Python-3.13.7'
......................................................
The necessary bits to build these optional modules were not found:
_dbm
To find the necessary bits, look in configure.ac and config.log.
Checked 112 modules (33 built-in, 77 shared, 1 n/a on linux-aarch64, 0 disabled, 1 missing, 0 failed on import)
make[1]: Leaving directory '/home/espiya/src/Python-3.13.7'
real 51m31.223s
user 48m45.083s
sys 1m38.693s
$
いつものように時間がかかりましたがビルドできたので、/usr/local/python にインストールします。
$ su
# make install
......................................................
Requirement already satisfied: pip in /usr/local/python/lib/python3.13/site-packages (25.2)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
#
# exit
$
無事にインストールできました。
$ python3
Python 3.13.7 (main, Aug 24 2025, 11:28:04) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
$
$ pip3 --version
pip 25.2 from /home/espiya/.local/lib/python3.13/site-packages/pip (python 3.13)
$
(pip3 はこの間アップデートしたのでそのままでした。)
さて、今回の重大なバグ #137583 ですが、初心者なのでバグレポートを読んでもピンときません。そこで生成AI Gemini に聞いてみました。プロンプトは、
「Pythonのバグレポート#137583で、SSLモジュールのTLS関連で深刻なバグがあるみたいですが、具体的な影響を分かりやすく教えてください。バグの表題は「Regression in ssl module between 3.13.5 and 3.13.6 : reding from a TLS-encrypted connection blocks」です。」
にしました。
ここで、回答が出てきて最後にあった詳細なサーチを更に行い、提示されたリサーチ計画から 「リサーチを開始」をクリックして作成された内容を、最後に「Googleドキュメントにエクスポート」をクリックして得られたファイルを Libre Office で印刷してみました。その表題は、
「Python 3.13.6 におけるTLS接続ブロッキング・バグに関する専門家報告書」
となっていて、これが中々読み応えのある内容でした。このバグがあると、SSLを使っているとデッドロックになることがあるようです。この現象が起こったときこの文書の中で
「このバグの最も危険な点は、その症状が「サイレントなフリーズ」であることです。」
と言っていて、
「バグの再現スクリプトが示すように、recv()の呼び出しが「永遠に」ブロックされるため、プログラムはクラッシュするのではなく、単に待機状態から抜け出せなくなります。」
とこのバグのせいと分かりにくいことが述べられていて、3.13.6 はすぐに 3.13.7 にする必要があることが分かりました。
長いので詳細は省略しますが、つい最近 8月14日に公開された 3.13.7 のアップデートに対して記されていた内容で、一般にはほとんど知られていない情報?であるにも関わらず、引用文献もそれなりに提示されているこのような長いレポート(A4 8ページ)を生成AIだけで作れてしまうようになったのだなと感銘を受けました。
現在は、生成AIが作成した Googleドキュメント形式(Geminiなので)のファイルによるこの手のレポートが普通に出回ってくると認識しておく必要があると、今回のPythonのアップデートで分かりました。
ここから======
これはPython 3.13の7番目のメンテナンスリリースです。
Python 3.13はプログラミング言語Pythonの最新のメジャーリリースで、Python 3.12と比較して多くの新機能と最適化が含まれています。3.13.7 は 3.13 の 7 回目のメンテナンスリリースです。
3.13.7 は 3.13.6 リリースの重大な問題を修正するための簡易リリースです:
gh-137583: 3.13.5と3.13.6の間のsslモジュールのリグレッション: TLSで暗号化された接続からの読み込みがブロックされる
他にもいくつかのバグフィックス(次のリリースまで待たねばならないもの)が含まれています。
======ここまで (DeepL による翻訳)
これは完全に緊急のバグフィックスで、
Regression in ssl module between 3.13.5 and 3.13.6: reading from a TLS-encrypted connection blocks #137583
https://github.com/python/cpython/issues/137583
なるべく早く 3.13.6 から 3.13.7 へアップデートする必要がありますね。早速アップデートしてみましょう。
https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz
https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz.asc
MD5 Sum: 256cdb3bbf45cdce7499e52ba6c36ea3
ダウンロードしてチェックします。
$ wget https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz
--2025-08-24 10:26:37-- https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz
Resolving www.python.org (www.python.org)... 2a04:4e42::223, 2a04:4e42:200::223, 2a04:4e42:400::223, ...
Connecting to www.python.org (www.python.org)|2a04:4e42::223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22769492 (22M) [application/octet-stream]
Saving to: ‘Python-3.13.7.tar.xz’
Python-3.13.7.tar.x 100%[===================>] 21.71M 11.0MB/s in 2.0s
2025-08-24 10:26:40 (11.0 MB/s) - ‘Python-3.13.7.tar.xz’ saved [22769492/22769492]
$
$ wget https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz.asc
--2025-08-24 10:28:06-- https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz.asc
Resolving www.python.org (www.python.org)... 2a04:4e42:200::223, 2a04:4e42:400::223, 2a04:4e42:600::223, ...
Connecting to www.python.org (www.python.org)|2a04:4e42:200::223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 963 [application/octet-stream]
Saving to: ‘Python-3.13.7.tar.xz.asc’
Python-3.13.7.tar.x 100%[===================>] 963 --.-KB/s in 0s
2025-08-24 10:28:06 (20.2 MB/s) - ‘Python-3.13.7.tar.xz.asc’ saved [963/963]
$
$ gpg --verify Python-3.13.7.tar.xz.asc
gpg: assuming signed data in 'Python-3.13.7.tar.xz'
gpg: Signature made Thu 14 Aug 2025 14:49:02 BST
gpg: using RSA key 7169605F62C751356D054A26A821E680E5FA6305
gpg: Good signature from "Thomas Wouters <thomas@python.org>" [unknown]
gpg: aka "Thomas Wouters <thomas@xs4all.nl>" [unknown]
gpg: aka "Thomas Wouters <twouters@google.com>" [unknown]
gpg: aka "Thomas Wouters <thomas.wouters.prive@gmail.com>" [unknown]
gpg: aka "Thomas Wouters <thomaswout@gmail.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 7169 605F 62C7 5135 6D05 4A26 A821 E680 E5FA 6305
$
$ md5sum Python-3.13.7.tar.xz;echo 256cdb3bbf45cdce7499e52ba6c36ea3
256cdb3bbf45cdce7499e52ba6c36ea3 Python-3.13.7.tar.xz
256cdb3bbf45cdce7499e52ba6c36ea3
$
展開してビルドします。
$ tar xvf Python-3.13.7.tar.xz
$ cd Python-3.13.7
$ ./configure --prefix=/usr/local/python --with-readline --enable-shared --enable-optimizations
checking build system type... aarch64-unknown-linux-gnu
checking host system type... aarch64-unknown-linux-gnu
checking for Python interpreter freezing... ./_bootstrap_python
checking for python3.13... python3.13
checking Python for regen version... Python 3.13.6
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
.......................................................
configure: creating Modules/Setup.local
configure: creating Makefile
$
$ make
Running code to generate profile data (this can take a while):
# First, we need to create a clean build with profile generation
# enabled.
make profile-gen-stamp
make[1]: Entering directory '/home/espiya/src/Python-3.13.7'
make clean
make[2]: Entering directory '/home/espiya/src/Python-3.13.7'
......................................................
The necessary bits to build these optional modules were not found:
_dbm
To find the necessary bits, look in configure.ac and config.log.
Checked 112 modules (33 built-in, 77 shared, 1 n/a on linux-aarch64, 0 disabled, 1 missing, 0 failed on import)
make[1]: Leaving directory '/home/espiya/src/Python-3.13.7'
real 51m31.223s
user 48m45.083s
sys 1m38.693s
$
いつものように時間がかかりましたがビルドできたので、/usr/local/python にインストールします。
$ su
# make install
......................................................
Requirement already satisfied: pip in /usr/local/python/lib/python3.13/site-packages (25.2)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
#
# exit
$
無事にインストールできました。
$ python3
Python 3.13.7 (main, Aug 24 2025, 11:28:04) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
$
$ pip3 --version
pip 25.2 from /home/espiya/.local/lib/python3.13/site-packages/pip (python 3.13)
$
(pip3 はこの間アップデートしたのでそのままでした。)
さて、今回の重大なバグ #137583 ですが、初心者なのでバグレポートを読んでもピンときません。そこで生成AI Gemini に聞いてみました。プロンプトは、
「Pythonのバグレポート#137583で、SSLモジュールのTLS関連で深刻なバグがあるみたいですが、具体的な影響を分かりやすく教えてください。バグの表題は「Regression in ssl module between 3.13.5 and 3.13.6 : reding from a TLS-encrypted connection blocks」です。」
にしました。
ここで、回答が出てきて最後にあった詳細なサーチを更に行い、提示されたリサーチ計画から 「リサーチを開始」をクリックして作成された内容を、最後に「Googleドキュメントにエクスポート」をクリックして得られたファイルを Libre Office で印刷してみました。その表題は、
「Python 3.13.6 におけるTLS接続ブロッキング・バグに関する専門家報告書」
となっていて、これが中々読み応えのある内容でした。このバグがあると、SSLを使っているとデッドロックになることがあるようです。この現象が起こったときこの文書の中で
「このバグの最も危険な点は、その症状が「サイレントなフリーズ」であることです。」
と言っていて、
「バグの再現スクリプトが示すように、recv()の呼び出しが「永遠に」ブロックされるため、プログラムはクラッシュするのではなく、単に待機状態から抜け出せなくなります。」
とこのバグのせいと分かりにくいことが述べられていて、3.13.6 はすぐに 3.13.7 にする必要があることが分かりました。
長いので詳細は省略しますが、つい最近 8月14日に公開された 3.13.7 のアップデートに対して記されていた内容で、一般にはほとんど知られていない情報?であるにも関わらず、引用文献もそれなりに提示されているこのような長いレポート(A4 8ページ)を生成AIだけで作れてしまうようになったのだなと感銘を受けました。
現在は、生成AIが作成した Googleドキュメント形式(Geminiなので)のファイルによるこの手のレポートが普通に出回ってくると認識しておく必要があると、今回のPythonのアップデートで分かりました。