2012年11月25日日曜日

PyPy 2.0 beta 1

原文はこちら: 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 をここからダウンロードできます:
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