PyPy(パイパイ)は、プログラミング言語Pythonの実装の1つであり、Pythonで記述されたPythonの処理系であることが特徴の1つである(セルフホスティング)。PyPyは、実行速度と効率、およびオリジナルのPython実装であるCPythonとの互換性に重点を置いている。
PyPyはJITコンパイル機能を持っており、実行時に(必要に応じて)コードを機械語にコンパイルして効率的に実行させる能力を持つ。
PyPyは、Pythonにいくつかの制約を加えた言語であるRPythonで記述されている。RPythonで書かれたコードをトランスレータでC言語などに変換してからコンパイルすることでPyPyの実行可能バイナリが作成できる。また、RPythonの言語仕様はPythonの言語仕様のサブセットであるため、(実行速度は低下するが)PyPyをCPython上で実行したり、PyPyをPyPy上で実行することもできる。
PyPyは、Python以外の動的言語を実装するための基盤としても使用できる。 PyPyは、Pythonの制限版であるRPythonで実装されたPythonの処理系である。したがって、Python処理系上でPyPyを動作させることも可能であるため、PyPyの中から改善できる領域を見極めることや、開発者が様々な実験的な実装を試すことが容易になっている。 PyPyは、Pythonだけでなく、一般の動的プログラミング言語の実装を作るためのツールキットおよびフレームワークとしても使うことができる。PyPyでは、言語仕様の定義とその具体的かつ低水準な実装を分離できるようにしている。Python以外の言語を本格的に実装した例として、PyPyで実装されたRubyの処理系であるTopazがある。 PyPyの目的の1つは、Pythonの柔軟かつ高速な実装を作ることである。上記のフレームワークを使うことで、低水準な詳細を混入せずに高度な機能を実装できるようになっている。 PyPyは、Pythonに制限(制約)を加えたサブセット言語であるRPython (Restricted Python) によって実装されている。この制約は、すべての変数の型を型推論で特定できるようにするためのものであり、これによってRPythonで書かれたコードは静的型付けされたコードに変換することができる。 PyPyのパッケージには、RPythonで書かれたコードを低水準の静的型付け環境であるC言語・Javaバイトコード・CLIなどのコードに変換するためのトランスレータが含まれている。RPythonで実装されたPyPyはこれによって実行可能バイナリへとコンパイルされる。 RPythonの言語仕様はPythonの言語仕様のサブセットであるため、RPythonのコードは通常のPythonインタプリタ上でも実行できる。 PyPyはトレーシング実行時コンパイル(トレーシングJIT)を採用している。特徴的なのは、実行されるコードにJITコンパイルを適用するのではなく、処理系のコードをJITコンパイルで特殊化することである。この技法は、通常のJITよりも性能が良いことが実験によって発見されたため採用された。PyPyはこの技法を Meta-tracing JIT と呼んでいる。 PyPyは、Armin Rigo PyPy は研究開発的なプロジェクトとして始まった。しかし、開発が非常に成熟し、2007 年半ばの公式リリースとなる 1.0 を発表した。この内容は、次の目標とCPythonとの互換性を向上させた製品として出荷可能なバージョンをリリースすることだった。バージョン1.1は2008年4月28日にリリースされた。多くの変更がこの開催中に行われた。 2008年後半、PyPyは人気のあるライブラリであるPylons、Pyglet、Nevow、Djangoの動作に対応した。 2010年3月、PyPy 1.2はリリースされた。スピードの向上が目標とされ、JITコンパイラが導入された。ただし動作はするものの、製品環境としての実行は推奨されなかった。1.2のリリースに加えて、公式ウェブサイトはPyPy speed centerとして速度向上の程度が表示されるようになった。 2010年12月、PyPy 1.4がリリースされ、最初の製品として適合するPyPyとなった。Python 2.5と互換性がある。 2011年4月30日、PyPy 1.5がリリースされた。Python 2.7.1と互換性がある。 2012年6月18日、PyPy 1.9がリリースされた。 2013年5月9日、PyPy 2.0がリリースされた。 2013年8月1日、PyPy 2.1がリリースされた。Python 2.7.3と互換性がある。ARMプロセッサ向けのJIT機能を正式にサポートした最初のバージョンである。[2] 2013年11月14日、PyPy 2.2がリリースされた。インクリメンタルガベージコレクションが導入された。[3] 2014年5月9日、PyPy 2.3がリリースされた。Python 2.7.6と互換性がある。[4] 2019年10月14日、PyPy v2.7がリリースされた。CPython 2.7.13と互換性があり、PyPy3.6はCPython 3.6.9と互換性がある。[5] PyPy は Specific Targeted Research Projects ポータル FLOSS
詳細とプロジェクトの動機
RPython
JIT
プロジェクトの状況
脚注^ “PyPy v7.3.10 release
^ “PyPy 2.1 - Considered ARMful”. 2013年8月4日閲覧。
^ “PyPy 2.2 - Incrementalism”. 2013年11月14日閲覧。
^ “PyPy 2.3 - Terrestrial Arthropod Trap”. 2014年5月9日閲覧。
^ “PyPy v7.2 released”. 2019年12月14日閲覧。
関連項目
ブートストラップ問題
セルフホスティング
セルフインタプリタ
外部リンク
公式ウェブサイト
表
話
編
歴
Python
実装
ChinesePython
CLPython
CPython
Cython
MicroPython
Numba
IronPython
Jython
Psyco
PyPy
Python for S60(英語版)
Shed Skin
Stackless Python
Unladen Swallow
ウィジェット・ツールキット
Tkinter
PyGTK
PyQt
PySide
wxPython
フレームワーク
CherryPy
Django
Flask
PIDA(英語版)
PyDev(英語版)
Pylons
Quixote(英語版)
Spyder
TurboGears
Web2py
Wing IDE(英語版)
統合開発環境(専用)
Boa
IDLE
Stani's Python Editor(英語版)
PyCharm
総合開発環境(汎用)
Visual Python IDE
PIDA(英語版)
PyDev(英語版)
Spyder
Wing IDE(英語版)
Eric Python IDE
Geany
ActiveState(英語版)
omodo
MonoDevelop
NetBeans
wxGlade(英語版)
ライブラリ
Kivy
NumPy
Pandas
Requests
SciPy
カテゴリ
Python
ライブラリ
コモンズ
ウィキブックス
Portal:コンピュータ
更新日時:2022年1月29日(土)13:30
取得日時:2023/01/14 06:46