(Translated by https://www.hiragana.jp/)
PyPy - Wikipedia

PyPy(パイパイ)は、プログラミング言語げんごPython実装じっそうの1つであり、Pythonで記述きじゅつされたPythonの処理しょりけいであることが特徴とくちょうの1つである(セルフホスティング)。PyPyは、実行じっこう速度そくど効率こうりつ、およびオリジナルのPython実装じっそうであるCPythonとの互換ごかんせい重点じゅうてんいている。

PyPy
最新さいしんばん
7.3.16[1] ウィキデータを編集 / 2024ねん4がつ23にち (2かげつまえ)
リポジトリ ウィキデータを編集
対応たいおうOS クロスプラットフォーム
種別しゅべつ Python インタプリタおよびコンパイラツールチェーン
ライセンス MIT License
公式こうしきサイト pypy.org ウィキデータを編集
テンプレートを表示ひょうじ

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開発かいはつした、PythonのJIT特殊とくしゅコンパイラである Psyco後継こうけいプロジェクトである。PyPy の目的もくてきは Psyco で対応たいおうできなかったスコープに対応たいおうしたジャストインタイムの動的どうてきコンパイラを作成さくせいすることである。

PyPy は研究けんきゅう開発かいはつてきなプロジェクトとしてはじまった。しかし、開発かいはつ非常ひじょう成熟せいじゅくし、2007 ねんなかばの公式こうしきリリースとなる 1.0 を発表はっぴょうした。この内容ないようは、つぎ目標もくひょうとCPythonとの互換ごかんせい向上こうじょうさせた製品せいひんとして出荷しゅっか可能かのうなバージョンをリリースすることだった。バージョン1.1は2008ねん4がつ28にちにリリースされた。おおくの変更へんこうがこの開催かいさいちゅうおこなわれた。

2008ねん後半こうはん、PyPyは人気にんきのあるライブラリであるPylonsPyglet、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 v7.2がリリースされた。CPython 2.7.13と互換ごかんせいのあるPyPy2.7、およびCPython 3.6.9と互換ごかんせいのあるPyPy3.6の、2つのことなるインタプリタをふくんでいる。[5]

PyPy は Specific Targeted Research Projects(特定とくてい領域りょういき研究けんきゅうプロジェクト)として 2004ねん12月から2007ねん3がつまで欧州おうしゅう連合れんごうから援助えんじょけていた。

脚注きゃくちゅう

編集へんしゅう
  1. ^ PyPy v7.3.16 release”. Template:Cite webしエラー:引数ひきすう accessdate必須ひっすです。
  2. ^ PyPy 2.1 - Considered ARMful”. 2013ねん8がつ4にち閲覧えつらん
  3. ^ PyPy 2.2 - Incrementalism”. 2013ねん11月14にち閲覧えつらん
  4. ^ PyPy 2.3 - Terrestrial Arthropod Trap”. 2014ねん5がつ9にち閲覧えつらん
  5. ^ PyPy v7.2 released”. 2019ねん12月14にち閲覧えつらん

関連かんれん項目こうもく

編集へんしゅう

外部がいぶリンク

編集へんしゅう