編集部からのお知らせ
新着特集PDF「IOWN構想のNTT」
おすすめ記事まとめ「ランサムウェア」

開発言語「Python」、3つの新バージョンが公開

Liam Tung (Special to ZDNet.com) 翻訳校正: 編集部

2022-01-19 11:14

 Python Software Foundation(PSF)が人気プログラミング言語「Python」の3つの新バージョンをリリースした。PSFの2022年の幕開けは波乱含みとなっているが、「Core Python」の開発者たちは、「Python 3.10」を前バージョンの2倍に高速化するというGuido van Rossum氏(Pythonの生みの親)の目標の達成に向けて、前進を続けている。

 「予想よりも複雑」だったコード署名証明書の更新など、さまざまな停滞があったものの、米国時間1月17日、Python 3.10と「Python 3.9」、プレビュー版である「Python 3.11」シリーズの新しいバージョンがリリースされた。バージョン3.10.xはPython 3の最新の機能リリースシリーズであるのに対し、3.9.xはレガシーシリーズで、Python 3.11.xはプレビュー版だ。

 リリースチームは、「ある意味、これらのリリースはすべて呪われていた。2022年は、とんでもない幕開けとなった。証明書の更新に手間取ったことに加えて、『Python 3.10.2』は急いでリリースされた。『Python 3.11.0a4』はリリースを妨げる約20件(タイプミスではない)の問題を克服して、ようやく公開にこぎ着けた。『Python 3.9.10』は、『macOS Monterey』がインストールされた新しい『M1』搭載『Mac』で開発されたので、普段であれば退屈なプロセスもかなり楽しむことができた」と述べている。

 証明書の更新の問題が原因で、Pythonの新しいバージョン(3.10.2、3.9.1、3.11.0a4)には、「Windows」向けのインストーラーが含まれていない。この明白な問題があるにもかかわらず、Core Python(「CPython」)開発チームは、新しいバージョンをリリースすることを決定した。3.10以前のバージョンに影響を及ぼす深刻なメモリーリークの問題が存在し、3.10.2のインストールが「強く推奨」されているからだ。

 CPythonの開発者でリリースマネージャーのLukasz Langa氏は、「問題の解決に取り組んでいる間、われわれはリリースを1週間控えてきたが、特に3.10.2の緊急性が高かったことから、結局、Windows向けのインストーラーなしでリリースせざるを得なかった」と説明する。

 「ご不便をおかけして申し訳ないと思う。われわれは現在、Windows向けのインストーラーを可能な限り早く提供できるように、最善を尽くしている」

 CPythonは、Pythonのリファレンス実装であり、ほかのPython実装のベースとなっている。

 「2022年の最初の3つのリリースは呪われていた。通常ならかなり平凡で、概ね自動化されているプロセスが、3つの厄介な問題になった。幸い、われわれはそれらの問題を何とか克服した」(Langa氏

 現在、CPython開発者のEe Durbin氏とMicrosoftの社員であるSteve Dower氏が、証明書の問題に対処している。Dower氏は、Windows版CPythonの専門家であり、Windows向けのインストーラーを担当している。

 PSFは、証明書の更新とWindows向けインストーラーの問題について、今週中に解決されると考えている。

 Python 3.10に影響を及ぼすメモリーリークは、開発者が「Cython」を使用した場合に、特定の関数呼び出しで発生する。Cythonは、Pythonのスーパーセットであり、Pythonコードで使用される拡張を「C」コードで簡単に記述できるようにするコンパイラーを備える。Cythonを使用すると、Pythonのコードを実行する際に、Cのような高速のパフォーマンスを享受することが可能だ。

 Langa氏は、「Cythonコードからの特定の関数呼び出しで発生するメモリーリークは、一定の少量のバイトで構成されていた」と説明する。「ほとんどの場合、これはそれほど目立たないが、長時間実行されるアプリケーションや特定の使用パターンでは、非常に大きな影響が生じる」

 CPython開発者のPablo Galindo Salgado氏は、メモリーリークがCythonに及ぼす影響をかなり甚大なものとし、「3.10では、__Pyx_PyCFunction_FastCallを使用するすべての関数呼び出しがメモリーリークを起こしている。これはかなりひどい」とバグレポートで言及している。バグレポートは、何MBものメモリーリークが発生していることを示していたので、このバグは早急に修正する必要があった。

 CPython開発者は、PyEval_EvalFrameExがリークの原因であることを特定した。PyEval_EvalFrameExは、PythonではなくCythonによって使用されるが、Python 3.10以前のバージョンにのみ存在し、Python 3.11以降には存在しない。

 Python 3.10の次のメンテナンスリリースは「Python 3.10.3」で、2022年4月4日にリリースされる予定だ。

 バージョン3.11.0a4は、予定されている7つのテスト用アルファ版の4番目のリリースだ。3.11の主な変更点には、Pythonの生みの親であるGuido van Rossum氏が「PyCon 2021」カンファレンスで説明した速度の向上が含まれる。Microsoftに入社したvan Rossum氏は、Python 3.11で3.10の2倍の高速化を実現したいと考えている。「Faster CPython Project」は、機械学習の人気の高まりとともに成長してきたPythonコミュニティーに対するMicrosoftなりの恩返しだ。

 Faster CPython Projectによって実行された「PyPerformance」ベンチマークは、CPython 3.11が3.10.0よりも幾何平均で約19%高速であることを示している。

 そのほかの主な改善点は以下の通りだ。

  • PEP 657 -- トレースバックでエラーの位置を正確に指し示す機能を含む。
  • PEP 654 -- 「ExceptionGroup」(例外グループ)と「except」(例外)。

 バージョン3.9.10は、レガシー3.9シリーズの9番目のメンテナンスリリースだ。Python 3.9.10には、130件の新しいコミットが含まれる。「macOS」の場合、デフォルトのインストーラーは、IntelおよびAppleのArmシリコンと互換性のある「Universal 2」バイナリーだ。

この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNet Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]