PyPyはCPython、Jython、IronPythonで何を提供する必要がありますか?
-
03-07-2019 - |
質問
ブログで見たことや読んだことから、PyPyは非常に野心的なプロジェクトです。兄弟(CPython、Jython、IronPython)よりもテーブルにもたらす利点は何ですか?速度、クロスプラットフォームの互換性(モバイルプラットフォームを含む)、GILなしでc-extensionsを使用する機能、またはこれは何ができるかに関する技術的な演習ですか?
解決
PyPyは実際には2つのプロジェクトです。
- RPython(Pythonの静的サブセット)でインタープリターを記述し、JVM、.NETなどのクロスプラットフォームインタープリターをスタンドアロンでコンパイルできるインタープリターコンパイラツールチェーン
- RPythonでのPythonの実装
これらの2つのプロジェクトでは、多くののことが可能です。
- PythonでのPythonのメンテナンスは、Cでのメンテナンスよりもはるかに簡単です
- 単一のコードベースから、わずかに互換性のない複数の実装を持たずに、JVM、.NET、およびスタンドアロンで実行されるPythonインタープリターを生成できます
- コンパイラツールチェーンの一部には、実験的なJITジェネレーターが含まれています(現在5番目のインカネーションであり、非常にうまく機能し始めています)-目標は、JITされたPyPyが much CPythonより高速
- GILの削除、ガベージコレクションの改善、スタックレスの統合など、基本的な言語機能を試すのがはるかに簡単です
だから、PyPyがエキサイティングである理由は本当にたくさんあり、ついにすべての約束を果たし始めています。
他のヒント
最も重要な機能は、もちろんJITコンパイラです。 CPythonでは、ファイルはバイトコード( .pyc
)または最適化されたバイトコード( .pyo
)にコンパイルされてから解釈されます。 PyPyを使用すると、ネイティブコードにコンパイルされます。 PyPyには Stackless Python パッチも含まれています。これには印象的な機能(タスクレットのシリアル化、スレッドの軽量化など)
Pythonが実際の JITを取得した場合他の実装と同じくらい高速に。
利点は、新機能の実装がはるかに簡単になることです。今日、図書館を観察することでこれを見ることができます。多くの場合、モジュールは最初にPythonで記述され、次にCに翻訳されます。
クロスプラットフォームの互換性
はい
所属していません StackOverflow