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