PyPyはCPython、Jython、IronPythonで何を提供する必要がありますか?

StackOverflow https://stackoverflow.com/questions/619437

  •  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に翻訳されます。

  

クロスプラットフォームの互換性

はい

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top