ニュース

「Python 3.11」がリリース、4年で5倍の高速化を目指す「Faster Cpython」計画が始動

「Microsoft Store」にも「Python 3.11」バイナリが追加

「Python 3.11.0」が正式リリース

 「Python 3.11.0」が、予定より3週間遅れの10月24日に正式リリースされた。年次のメジャーバージョンアップで、「Python」の高速化プロジェクト「Faster Cpython」の成果が取り込まれている。「pyperformance」を用いたベンチマークでは、「CPython 3.10」より平均で25%ほど高速化されているという。ワークロードによっては最大で10~60%のパフォーマンスアップが見込めるとのこと。

 「Faster Cpython」は昨年10月、Mark Shannon氏の提起で開始された計画。これまであまり焦点が当てられてこなかった「CPython」の起動と実行の高速化に注力し、今後4年間に1.5倍ずつ、つまり最終的には5倍高速化することを目的としており、200万ドル程度と見積もられる資金はMicrosoftも協力している。

 従来の「Python」は、パフォーマンスを要する場合はC言語でモジュールを記述するというスタイルが一般的であったが、もし「Faster Cpython」が実現すれば、「Python」だけでも十分なパフォーマンスを出すことができる。ハードウェアやクラウドへの支出、テストにかかる時間などの効果も期待できるだろう。

 そのほかの変更は、以下の通り。

  • PEP 657:トレースバックの詳細エラー表示
  • PEP 654:組み込みの例外型にExceptionGroupを追加。「try ~ except*」で利用できる
  • PEP 680:「tomllib」が標準ライブラリに追加され、TOMLをパースできるように
  • gh-90908:「asyncio」にタスクグループを導入
  • gh-34627:正規表現で(?>...)、*+、 ++、 ?+、{m,n}+をサポート

 言語機能も引き続き強化されている。

  • PEP 673:定義中のクラスを示す型「typing.Self」が追加(Self Type)
  • PEP 646:可変長ジェネリクス
  • PEP 675:任意の文字列定数(LiteralString)
  • PEP 655:TypedDictの要素に省略の可否(typing.Required/typing.NotRequired)を指定
  • PEP 681:データクラス変換(typing.dataclass_transform)

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

 バイナリは現在、公式サイト「python.org」から無償でダウンロード可能。Windows 10/11向けは、「Microsoft Store」からも入手できる。