PyPy是Armin Rigo開發的,Python語言的動態編譯器,是Psyco的后繼項目。PyPy的目的是,做到Psyco沒有做到的動態編譯。
PyPy是用Python實現的Python解釋器,是Python開發者為了更好的Hack Python而創建的項目。PyPy比CPython更加靈活,更易于使用和試驗,可以制定具體的功能在不同情況下的實現方法,且可以很容易實施。 PyPy的目標是,讓PyPy比C實現的Python更為容易的適應各個項目。
更新日志:
PyPy3 2.3.1 發布,此版本是第一個 PyPy3 穩定版本,致力于兼容 Python 3(3.2.5)版本。此版本可以前往這里下載,主要更新內容如下:
PyPy3 第一個穩定版本:支持 Python3 !
標準庫更新到 3.2.5 版本
支持 Python
3.3 的 u'unicode' 語法 (PEP 414)
更新默認分支,例如不斷增加的 GC 和各種 JIT 改進
解決了 PyPy2 一些明顯的 JIT 性能回退問題
Python解釋器PyPy發布了v1.8版。該版本最大的改進是引入了新的列表策略(list strategies),提升了同源(homogenous)列表的性能及內存使用效率。
PyPy 1.8詳細改進列表:
列表策略?,F在只包含整數或浮點數的列表的效率應該與在二進制包中存儲一致。使用此類列表地方的JIT性能也同時得到改進。另外,unicode及其他字符列表也有相應的策略。
性能改進,提供更快的Python構造函數(constructs)。
修復bug及與CPython的兼容性問題。
Numpy模塊繼續完善,進展情況可參見這個頁面。(注意:numpy模塊現在可同時使用numpy和numpypy兩個名稱。)
新的JIT鉤子(hooks),可幫助你在Python程序中勾住JIT編譯進程。
標準庫升級至2.7.2。
PyPy 1.8比PyPy 1.7提升了近10%的性能,該版本支持運行Linux 32/64和Windows 32的x86系統,在接下來的版本中將支持Windows 64位系統。
PyPy的實現與原理
PyPy的第一部分:用Python實現的Python
其實這么說并不準確,準確得說應該是用rPython實現的Python,rPython是Python的一個子集,雖然rPython不是完整的Python,但用rPython寫的這個Python實現卻是可以解釋完整的Python語言。
PyPy的第二部分:編譯器
這是一個編譯rPython的編譯器,或者說這個編譯器有一個rPython的前端,目前也只有這么一個前端,不過它的后端卻是不少,也就是說這個編譯器支持許多的目標語言,比較重要的有:C,CIL,Javascript ...