PythonでJITコンパイラとマルチスレッド処理が実験的に実装された「Python 3.13.0」正式公開
スクリプト言語Pythonの最新版となる「Python 3.13.0」正式版が公開されました。
Pythonは昨年(2023年)8月、グローバルインタプリタロック(GIL)を解消する方向で開発を進めていくという方針を明らかにしています。
参考:Pythonがグローバルインタプリタロックの解消へ、マルチスレッド処理の高速化実現
グローバルインタプリタロックとはインタープリタ全体で1つのロックを持つことです。これによりシングルスレッドのプログラムにおいては細かなロック制御が不要となって速度の向上ができる一方、マルチスレッドの平行性は制限されるという欠点があります。
マルチスレッドが実験的実装
これまでPythonはグローバルインタプリタロックを採用してきましたが、今回のPython 3.13.0では新たな方針に沿って、初めて実験的にグローバルインタプリタロックをなくしてマルチスレッド処理を可能にしたフリースレッドモード(free-threaded mode)を実現したビルドが登場しました。
ただしこのフリースレッドモードは、標準的なPythonの実装として公開されるビルドとは別の、「python3.13t」(あるいはpython3.13t.exe)としてビルドされた実行ファイルを用いて、環境変数「PYTHON_GIL」を設定するか、引数「-X gil=1」を設定して起動したときに有効になります。
つまり通常のPythonとして公開されているビルドは、今まで通りのマイナーバージョンアップとなっています。
JITコンパイラも実験的実装
Python 3.13.0ではJIT(Just-in-Time)コンパイラの実験的実装も始まりました。C言語によるPythonの標準的な実装であるCPythonに対して「--enable-experimental-jit」オプションを付けてビルドした場合にJITコンパイラが有効になります。
JITコンパイラとは、スクリプト実行時にインタプリタによる実行と並行してバックグラウンド処理でネイティブバイナリを生成し、再び同じ処理が実行される際にはネイティブバイナリを実行することでより高速な処理を実現する手法です。
JavaScriptやRubyなど人気の高いプログラミング言語の多くは処理速度を高速化するためにすでにJITコンパイラを搭載しており、それがようやくPythonにも採用されることとなりました。
Pythonで採用されるJITコンパイラは、コピー&パッチ方式と呼ばれる2021年に提案された新しい方式のJITコンパイラです。仕組みについては下記の記事で紹介しているのでご参照ください。
参考:次期Python、ついにJITコンパイラ搭載の見通し。「copy-and-patch」と呼ばれる新たなJITコンパイラの仕組みとは?
Pythonでは過去のメジャーバージョンアップにおいて言語仕様の互換性を欠いたことでコミュニティに大きな混乱をもたらしたことがありました。今回のJITコンパイラやマルチスレッドの導入はそうしたことを教訓に、互換性の維持に関して非常に慎重に進めているように見えます。
WASI、iOS、Androidをサポート
今回サポートされるプラットフォームとして、WASI(WebAssembly System Interface)、iOS、Androidが加わりました。
Pythonがサポートするプラットフォームは優先度に応じてTier1、Tier2、Tier3に分かれています。
Tier1はコア開発者の全員がリリースを持つ最も優先度が高いプラットフォームで、Windows(x86-64)、Mac(x86-64、Arm)、Linux(x86-64)が設定されています。
Tier2は少なくともコア開発者2名がサポートするプラットフォームで、WASIサポートはここに設定されています。
Tier3は少なくともコア開発者1名がサポートするプラットフォームで、Tier1とTier2ではリリース時にビルドが失敗した場合にはリリースそのものが中止されるのに対し、Tier3ではリリースは中止されない優先度で、iOSとAndroidはここに設定されました。
今後Pythonの標準的な実装であるCPythonでWASIやiOS、Androidのサポートが強化されていくことが期待されます。
あわせて読みたい
アトラシアン、AIが社内情報をサービス横断で学習し質問に答える「Atlassian Rovo」正式リリース。JiraやConfluence、Googleドライブ、GitHub、Slackなどに対応
≪前の記事
国内プライベートクラウド市場は2023年の2兆円から5年で2倍以上の4兆円超に。IDC Japanの予測