本文へスキップ

Python 3.15.0が公開、遅延インポートとfrozendictを搭載

Python 3.15.0が10月9日に公開されました。1,012人の貢献者による5,643件のコミットを含み、遅延インポート(レイジーインポート)、組み込みのfrozendict、デフォルトのUTF-8、より高速なJITを備えます。

著者 Tech AI Wire Team

4 分で読めます

Hugo van Kemenadeによる2026年10月9日付のPython Insiderの記事「Python 3.15.0 (final) is here!」のスクリーンショット。3.15のリリースアートワークが添えられている。

数字で見る

commits since Python 3.14
5,643
contributors to the release
1,012
JIT speedup on x86-64 Linux, geometric mean
7-8%
roughly when security updates end, per PEP 602
2031

Python 3.15.0が2026年10月9日に公開されました。この言語で年に1度の機能リリースです。明示的な遅延インポート、組み込みのfrozendict型、デフォルトのテキストエンコーディングとしてのUTF-8が加わります。「Python 3.15.0は、プログラミング言語Pythonの最新のメジャーリリースです」と、リリースマネージャーのHugo van KemenadeはPython Insiderに書いています。このリリースには、1,012人の貢献者による5,643件のコミットが含まれます。当初の予定より1週間遅れての登場です。その前に、予定外の3つ目のリリース候補が、終盤に見つかった遅延インポートのバグを修正していました。

主な機能

大きな変更はそれぞれ、PEP(Python Enhancement Proposal)に由来します。PEPとは、機能の設計文書です。リリースノートは次のものを挙げています。

PEP機能内容
810明示的な遅延インポート起動を速くするため、モジュールの読み込みを初めて使われるときまで遅らせられる
814frozendict作成後に変更できない組み込みの辞書
661番兵(sentinel)型一意のマーカー値のための組み込み型
686デフォルトでUTF-8特に指定しない限り、PythonはテキストをUTF-8で読み書きする
798内包表記でのアンパック内包表記の中でアンパックできる
829パッケージのスタートアップファイルパッケージ向けの新しい起動設定ファイル
799プロファイリングパッケージTachyonサンプリングプロファイラーを追加
803, 820, 793フリースレッド版の安定ABI1つのコンパイル済み拡張が、フリースレッドビルド全体で動作できる
831フレームポインタービルドでデフォルトで有効に

型付けにも3つの変更があります。PEP 728、747、800です。What's Newのページによると、実験的なJITコンパイラー、エラーメッセージ、コマンドラインの色表示も改善されました。

Linux Compatibleによると、UTF-8への変更が最も影響するのはWindowsです。以前のデフォルトのエンコーディングに頼っていたコードは、PYTHONUTF8=0で元に戻せます。

高速化、ただしすべての場面ではない

JITが速くなりました。JITとは、頻繁に実行されるPythonコードを、実行中に機械語へ変換するコンパイラーです。Python Insiderは、幾何平均で次の向上を示しています。

プラットフォームJITによる向上
x86-64 Linux標準のインタープリターより7-8%
AArch64 macOSテールコール型インタープリターより11-12%

結果はワークロードによって大きく異なります。Linux Compatibleによると、個々のベンチマークでは、約15%遅くなるものから100%以上速くなるものまであります。

公式インストーラーも変わりました。Windowsの64ビット版ビルドは、テールコール型インタープリターを使うようになりました。これは、Pythonのメインループをより速く実行する方式です。Linux Compatibleは、その向上幅を15-20%としています。小規模で長時間動く純粋なPythonスクリプトでは、最大40%です。公式のmacOS向けインストーラーには、デフォルトでフリースレッド対応が含まれるようになりました。フリースレッドにより、Pythonはグローバルインタープリターロックなしで、複数のCPUコアで同時にコードを実行できます。

macOS 27での既知の問題

Macユーザーには注意点が1つあります。Python Insiderによると、macOS 27.0では、IDLEなどのtkinterアプリが「ダイアログを開くアプリケーションのメニューコマンドを使うと、ハングすることがある」とのことです。その場合、アプリは強制終了しなければなりません。

Pythonチームは、原因をOS側の変更にあるとしています。また、tkinterが使うツールキットであるTkの全バージョンに影響すると考えています。この問題はissue #158053として追跡されています。リリースページは、Tkアプリに頼っているなら、macOS 27.0への移行は待つよう勧めています。

非推奨になるもの

リリースノートとLinux Compatibleによると、3つのものが廃止に向かっています。

  • 純粋なPythonで書かれたprofileモジュールは非推奨となり、Python 3.17で削除されます。cProfileは残ります。
  • .pthファイル内のコードを実行する行は非推奨となり、代わりにPEP 829の新しいスタートアップファイルが推奨されます。
  • PyGILState_*のC関数はソフト非推奨になりますが、削除はされません。

Linux Compatibleによると、Python 3.15はPEP 602のスケジュールに従い、2年間のバグ修正を受けます。その後は、2031年10月ごろまでセキュリティ修正が提供されます。

開発者にとっての意味

  • 起動の遅いツールで遅延インポートを試す。 コマンドラインツールや、重いインポートを抱えるアプリが最も恩恵を受けます。インポート時にコードが実行されることに頼るモジュールは、必ずテストしてください。インポートを遅らせると、そのコードが実行されるタイミングが変わるためです。
  • Windowsでテキストの扱いを確認する。 UTF-8がデフォルトになりました。ファイルの入出力テストをWindowsで実行してください。PYTHONUTF8=0は一時しのぎとしてのみ使いましょう。
  • 固定の設定にはfrozendictを使う。 変更できない辞書は設定に使うと安全で、ハッシュ可能な値が必要な場所でも使えます。
  • JITを当てにする前にベンチマークを取る。 平均的な向上幅は控えめで、遅くなるワークロードもあります。自分のコードで測定してください。
  • tkinterを使うならmacOS 27.0は見送る。 バグが修正されるまで、IDLEやTkアプリがハングすることがあります。
  • 今すぐprofileから移行する。 Python 3.17でなくなるので、cProfileか新しいプロファイリングパッケージに切り替えましょう。

本番システムをアップグレードする前に、主要な依存パッケージが3.15に対応しているか確認してください。

出典

  1. Python 3.15.0 final is here! - Python Insider
  2. Python Release Python 3.15.0 - Python.org
  3. Python 3.15.0 (final) is here! - Discussions on Python.org
  4. What's new in Python 3.15 - Python documentation
  5. Python 3.15.0 Is Out: Lazy Imports, frozendict, and Faster Speeds - Linux Compatible

関連記事

Hugo van Kemenadeによる2026年10月2日付のPython Insiderの記事「Python 3.15.0 candidate 3 is here!」のスクリーンショット。遅延インポートのリリースブロッカーについて説明している。
プログラミング

Python 3.15.0の正式版が10月9日に延期、予定外のrc3を公開

Python(パイソン)3.15.0rc3が10月2日に公開されました。終盤に見つかった遅延インポート(lazy imports)のバグを修正するためで、Python 3.15.0の正式リリースは1週間遅れの2026年10月9日になりました。

会議用テーブルに置かれた銀色のノートパソコン。開いた天板にはPythonのロゴとRustのロゴのステッカーが並んで貼られ、背後の大きな窓の外には街のビル群が見える。
プログラミング

Python Language Summit 2026、CPythonへのRust導入と新GCを議論

Python Language Summit(言語サミット)2026の報告が公開されました。47人のコア開発者らが、CPythonへのRust導入、新しいガベージコレクター、stdネームスペース、起動の高速化を話し合いました。