2009-03-06 4 views
28

ブログで見たことから、PyPyは非常に野心的なプロジェクトです。兄弟(CPython、Jython、IronPython)上のテーブルにもたらすメリットは何ですか?それは、速度、クロスプラットフォームの互換性(モバイルプラットフォームを含む)、GILなしでc-extensionsを使用する能力、または何ができるのかに関するこれ以上の技術的練習ですか?PythonはCPython、Jython、IronPythonよりも何を提供しなければなりませんか?

+1

FWIWでは、GILなしでCPythonですでにc-extensionsを使用できます。実際にGILに悩まされているのは、通常のPythonコード(スレッドで実行しているとき)です。 – fuzzyman

答えて

38

PyPyは、実際には2つのプロジェクトです:

  • インタプリタPythonの静的なサブセットであるRPythonでインタプリタを書くことができ、クロスプラットフォームのインタプリタをコンパイルできるコンパイラツールチェーンDスタンドアロン、JVM、.NET用(など)のための
  • これら二つのプロジェクトは、多くのの事を可能にRPython

でのPythonの実装。

  • PythonでのPythonを維持することは、あなたがJVM、.NETおよびスタンドアロンで実行するPythonのインタプリタを生成することができ、単一のコードベースからC
  • でそれを維持するよりもはるかに簡単です - ではなく、複数の少し互換性のない実装
  • を持つよりも、コンパイラツールチェーンの
  • 一部は実験的なJITジェネレータ(現在、第五の化身で本当にうまく機能し始めて)が含まれ - JITed PyPyはそれはムーであるCPythonの
  • より速く多くを実行するため目標ですGILを削除する、ガベージコレクションを改善する、スタックレスなどを統合するなどの基本的な言語機能を実験するのが簡単です

本当にPyPyがエキサイティングな理由がたくさんあります。すべての約束まで

+0

私はこの素晴らしいリストに1つを追加したいと思います:Pythonライブラリの新しいバージョンを入手する必要はありません。新しい.Xバージョン。どんな巨大な勝利になるか – Brandon

+4

PyPyはC拡張の状況をどのように改善しますか?実際、Cの拡張機能はPyPyの(現在の)主な欠点の1つです。具体的に移植されていない限り、機能しません。 – fuzzyman

+2

PyPy JITのスピードをさらに上げると(特に 'ctypes'コードに効果的に適用できるのであれば)、最初は混合のC拡張が大幅に少なくなるはずです。 – ncoghlan

4

最も重要な機能はもちろんJITコンパイラです。 CPythonでは、ファイルはバイトコード(.pyc)または最適化バイトコード(.pyo)にコンパイルされ、解釈されます。 PyPyを使用すると、それらはネイティブコードにコンパイルされます。 PyPyはまた、Pythonは、私は早く、他の実装となるだろうと思う本当のJITを取得する場合には、それが印象的なfeatures(タスクレットシリアライズ、光のスレッドなど)です含め、

+0

ネイティブコードではなくネイティブコードを意味すると思います。 – fuzzyman

+0

ネイティブの実行可能コード;-) – vartec

+2

Hmmm ...そしていいえ、PyPyはPythonプログラムをネイティブ実行可能ファイルにコンパイルしません。これは間違っています。 – fuzzyman

0

Stackless Pythonパッチが含まれています。

利点は、新しい機能を実装する方がはるかに簡単だということです。今日、この図書館を見て見ることができます。多くの場合、モジュールはPythonで書かれている最初にしてC.に翻訳

0

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

はい

5

これは、PyCon 2009で発表したPyPyの著者の1人にプレゼンテーションするためのlinkです。非常に有益です。

+0

また、EuroPython 2012の話題の激流をチェックしてください。そのいくつかはPyPy上にあったものです(スタックレスはPyPyの一部です) –

関連する問題