ニュース

「Python 3.15」が正式公開 ~UTF-8が標準に、“番兵値”などの新しい言語機能も

実験的な「JIT」コンパイラーも大きく強化

「Python 3.15.0」が正式リリース

 スクリプト言語「Python」の新しい年次リリース「Python 3.15」が、10月9日(現地時間)に正式リリースされた。「Python 3.14」に続く年次のメジャーアップデートで、1,012人のコントリビューターにより、5,643件のコミットが寄せられた成果だという。

  • PEP 810 - 明示的な「lazy import」:「lazy」キーワードを付けたインポートは、名前を最初に使うときまでモジュールの読み込みを遅らせる。大規模なアプリケーションの起動時間を短縮できる。「-X lazy_imports=all」起動オプションや環境変数「PYTHON_LAZY_IMPORTS=all」で、すべてのインポートを遅延させることも可能
  • PEP 814 - 組み込み型「frozendict」:作成後に変更できない辞書型。キーと値がハッシュ可能であれば、frozendictもハッシュ可能
  • PEP 661 - 組み込み型「sentinel」:簡潔な表現をもつ、一意の“番兵値”を作成できる
  • PEP 686 - UTF-8が既定のエンコーディングに:エンコーディングを指定せずにファイルを開く場合(open()など)に、システムの設定にかかわらず、UTF-8が使われる。従来の動作に戻すには、起動オプション「-X utf8=0」または環境変数「PYTHONUTF8=0」を指定する
  • PEP 798 - 内包表記でのアンパック:リスト、セット、辞書の内包表記とジェネレーター式で、「*」「**」によるアンパックが可能に
  • PEP 799 - プロファイリング用のパッケージ「profiling」と、サンプリング型プロファイラー「Tachyon」:実行中のプロセスに、コードの変更や再起動なしでアタッチして、低オーバーヘッドで解析できる
  • PEP 829 - パッケージの起動設定ファイル(.startファイル):.pthファイルのimport行の代わりに、起動時に呼び出すエントリーポイントを指定できる。監査しやすくするための措置で、.pthファイルのimport行は、警告を出さずに非推奨扱いとなる
  • PEP 831 - フレームポインターが既定で有効に:システムのプロファイラーやデバッガー、eBPFベースの監視ツールによる、ネイティブスタックの巻き戻しが速く確実になる

 型ヒントでは、追加のキーを型で指定できる「TypedDict」の拡張(PEP 728)や、型式そのものを注釈する「TypeForm」(PEP 747)、型システムの「disjoint bases」(PEP 800)が加わった。C APIでは、バイト列を作成する「PyBytesWriter」(PEP 782)や、フリースレッドビルド向けの安定ABI(PEP 803、820、793)などが導入されている。エラーメッセージも改善され、存在しない属性にアクセスしたときに、メンバーを経由した候補(例:「Did you mean '.inner.area' instead of '.area'?」)が示されるようになった。

 さらに、実験的な「JIT」コンパイラーも大きく強化された。標準のインタープリターに対して、x86-64のLinuxでは幾何平均で7~8%、AArch64のmacOSでは「tail-calling interpreter」に対して11~12%の高速化が見込めるという。

 また、Windows版では公式の64bitバイナリで「tail-calling interpreter」を採用。「MSVC 18」で導入された機能を活用することで、高速化が図られているようだ。Windows x86-64環境での「pyperformance」ベンチマークでは、従来の「switch-case」インタープリターに比べ、幾何平均で15~20%の高速化が報告されている。

 なお、「Python 3.15」のサポート期間はリリースより5年間。2031年10月までサポートされる。

「Python」のリリースプラン。「Python 3.15」は2031年10月までサポートされる

 「Python」は1991年、オランダ出身のプログラマーGuido van Rossum氏によって考案されたクロスプラットフォーム対応のインタープリター型プログラミング言語。コードブロックを字下げ(インデント)で表現する文法が特徴で、可読性が高いコードをコンパクトに記述できる。さまざまな用途に利用できる汎用言語だが、近年は機械学習の分野で著しい普及を見せている。

 バイナリは現在、公式サイト「python.org」から無償でダウンロード可能。「Python」のないWindows環境で「Python」コマンドを実行した場合も、「Microsoft Store」から「Python Install Manager」のインストールが案内される。

「Python」のないWindows環境で「Python」コマンドを実行
「Microsoft Store」から「Python Install Manager」のインストールが案内される

 「Python Install Manager」(「py」コマンド)は、「Python」のインストールとバージョン管理をつかさどる公式ツール。「Python」はスクリプトによって適したバージョンを選ばなければならないことがあるが、その手間が簡素化される。これまでバージョンごとに用意されていたWindows向けフルインストーラーは「Python 3.15」が最後の提供となり、次期バージョン「Python 3.16」以降は完全に「Python Install Manager」へ置き換わる予定だ。

「Python 3.15」のフルインストーラー。次期バージョン「Python 3.16」からは提供されず、「Python Install Manager」へ一本化