PyPy
[Wikipedia|▼Menu]

PyPy

最新版7.3.10[1]  / 2022年12月6日 (36日前) (2022-12-06)
リポジトリ

foss.heptapod.net/pypy/pypy

対応OSクロスプラットフォーム
種別Python インタプリタおよびコンパイラツールチェーン
ライセンスMIT License
公式サイトpypy.org
テンプレートを表示

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の柔軟かつ高速な実装を作ることである。上記のフレームワークを使うことで、低水準な詳細を混入せずに高度な機能を実装できるようになっている。
RPython

PyPyは、Pythonに制限(制約)を加えたサブセット言語であるRPython (Restricted Python) によって実装されている。この制約は、すべての変数の型を型推論で特定できるようにするためのものであり、これによってRPythonで書かれたコードは静的型付けされたコードに変換することができる。

PyPyのパッケージには、RPythonで書かれたコードを低水準の静的型付け環境であるC言語JavaバイトコードCLIなどのコードに変換するためのトランスレータが含まれている。RPythonで実装されたPyPyはこれによって実行可能バイナリへとコンパイルされる。

RPythonの言語仕様はPythonの言語仕様のサブセットであるため、RPythonのコードは通常のPythonインタプリタ上でも実行できる。
JIT

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 v2.7がリリースされた。CPython 2.7.13と互換性があり、PyPy3.6はCPython 3.6.9と互換性がある。[5]

PyPy は Specific Targeted Research Projects(特定領域研究プロジェクト)として 2004年12月から2007年3月まで欧州連合から援助を受けていた。
脚注^ “PyPy v7.3.10 release” (6 12月 2022). 7 12月 2022閲覧。
^ “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日閲覧。

関連項目

ポータル FLOSS


ブートストラップ問題

セルフホスティング

セルフインタプリタ(英語)

外部リンク

公式ウェブサイト










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


記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:12 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef