原文はこちら: We need Software Transactional Memory
私たちはPyPy 2.0 beta 1をリリースしました。このリリースは典型的なベータでありません。ある一面では安定性が1.9と同等かより優れており、プロダクションでも使用することができます。
次に示す文書化された2.0 finalのラベルを許さないいくつかのパフォーマンスの低下を含んでいます。(多くのパフォーマンスの向上もまた含まれています。)
このリリースの主な機能は、ARMプロセッサーとCFFIとの互換性のサポートです。 それは、pypyに対するnumpy、cpyext、パフォーマンスという多数の改善を含んでいます。
PyPy 2.0 beta final をここからダウンロードできます:
このリリースではLinuxの32/64、Mac OS X 64またはWindows32を実行しているx86マシンをサポートしています。Windows64の対応はまだ遅れています。私たちは対応するためのボランティアを歓迎するでしょう
次に示す文書化された2.0 finalのラベルを許さないいくつかのパフォーマンスの低下を含んでいます。(多くのパフォーマンスの向上もまた含まれています。)
このリリースの主な機能は、ARMプロセッサーとCFFIとの互換性のサポートです。 それは、pypyに対するnumpy、cpyext、パフォーマンスという多数の改善を含んでいます。
PyPy 2.0 beta final をここからダウンロードできます:
http://pypy.org/download.html
PyPyとは何?
PyPyはCPython2.7.3と簡単に取り替えることができるほど非常に準拠したPython処理系です。それはTracing JITコンパイラを統合したため高速です。(pypy 2.0 beta 1とcpython 2.7.3のパフォーマンス比較)このリリースではLinuxの32/64、Mac OS X 64またはWindows32を実行しているx86マシンをサポートしています。Windows64の対応はまだ遅れています。私たちは対応するためのボランティアを歓迎するでしょう
How to use PyPy?
私たちはvirtualenvのからPyPyを使うことを推奨します。 ひとたびvirtualenvからpypyをインストールしたら、pypyのドキュメンテーションにどう進むべきか従うことができます。このドキュメントは他のインストール方法も網羅しています。退行
このバージョンがPyPy2.0ではない理由- ctypesファストパスはかつてより遅いです。 PyPy1.9のctypesはファストパスを打つか打たないかによって、信じられないくらい遅かったり速かったりしました。現在のPyPyは明らかに遅いです。私たちはおそらく普遍的に速くするために、ctypesをcffiを使って書き直します。
- cffi(Cコードとのインタフェースに代わるもの)は非常に高速ですが、しかし、それはCからネイティブコールを可能な限り高速にする最適化を見逃します。
- numpypy遅延評価は簡略化のために無効になりました。私たちは2.0 final releaseのために再度有効にしなければなりません。
ハイライト
- cffiはPyPyによって正式にサポートされています。PyPyとpipをインストールしたら、pip install cffiで当たり前にインストールすることができます。対応するcffiのバージョン0.4がリリースされました。
- ARMは現在正式にサポートされているプロセッサアーキテクチャです。
- PyPyはsoft-float ARM/Linuxビルド上で動作します。現在、ARMプロセッサはARMv7とサポートする浮動小数点ユニットを含めるISA以降をサポートしています。
- このリリースでは、最新のPythonの標準ライブラリ2.7.3が含まれており、Python2.7.3と完全な互換性があります。
- しかし、ハッシュランダム化の問題も含まれており、それは現在までCPythonにおいて解決されていない問題です。理由をCPythonのIssueトラッカーで見つけることができます。
- gc.get_referrers()は速くなりました
- 様々なnumpyの実装。次のリストが含まれています:
- 多くでaxis引数がサポート
- 全てのfancy indexingがサポート
- complex128とcomplex64 dtypes
- JITフックは現在、PyPyがJITtingが行うプロセスの強力なインスペクタツールです。
- **kwdsの使用は一般的な利用法でもはるかに高速です
- long オブジェクトに対する操作は現在CPythonと同じくらい速いです(大雑把に2倍遅い)
- 私達は現在、unicode文字列が含まれているのdict/set/listのための特別な戦略を持っています。つまり、このようなコレクションはより速く、よりコンパクトになることを意味します。
私たちが取り組んでいるもの
積極的に取り組んでいますが、2.0 beta 1に間に合わなかったことがいくつかあります。 JITにおけるGreenletsサポートは、2.0 finalの前に所有したいです。2.0までには間に合わないだろうが、積極的に取り組んでいるのは:- JITワームアップタイムの高速化
- Software Transactional Memory
Cheers,
Maciej Fijalkowski, Armin Rigo and the PyPy team