PyPy是用Python實現的Python解釋器。
基本介紹
- 外文名:PyPy
- 開發者:Armin Rigo
- 目的:更好的Hack Python
- 屬性:動態編譯器
項目背景,現狀介紹,實現原理,主要特性,
項目背景
PyPy是Python開發者為了更好的Hack Python創建的項目。此外,PyPy比CPython是更加靈活,易於使用和試驗,以制定具體的功能在不同情況的實現方法,可以很容易實施。 該項目的目標是,讓PyPy比C實現的Python更為容易的適應各個項目和方便裁剪。
現狀介紹
PyPy開始只是研究性質的項目。但是開發非常成熟,在2007年中旬發布了1.0 Release版本後,大家關注的焦點是,能否在2008年出現可供生產環境使用的版本。
最新的(2018.12.15)PyPy版本是PyPy3 v6.0.0,兼容Python3.5.3。可以運行在Linux的32位和64位、MacOSX和Windows的32位平台中,但是基於arm平台的正在開發中。它支持Python語言的所有核心部分以及大多數的Python語言標準庫函式模組,並且通過了Python語言的test suite。與CPython的區別可以去看它的兼容性頁面.
另外,PyPy 也有 每夜構建 版本供開發者測試。
PyPy是作為Specific Targeted Research Projects(特定領域研究項目)從2004年12月到2007年3月,開始接受歐盟的援助。
實現原理
PyPy的第一部分:用Python實現的Python
其實這么說並不準確,準確得說應該是用rPython實現的Python,rPython是Python的一個子集,雖然rPython不是完整的Python,但用rPython寫的這個Python實現卻是可以解釋完整的Python語言。
PyPy的第二部分:編譯器
這是一個編譯rPython的編譯器,或者說這個編譯器有一個rPython的前端,目前也只有這么一個前端,不過它的後端卻是不少,也就是說這個編譯器支持許多的目標語言,比較重要的有:C,CIL,Javascript ...
主要特性
- 大量的性能改進。
- Bug修復,以及與CPython的兼容性修復。
- 現在stackless功能默認啟用。
- NumPy effort現在更名為numpypy,使用時可以簡單寫作:import numpypy as numpy。
- JSON編碼器已被替換為一個新的,是用純Python編寫的,某些情況下比CPython的C擴展快2倍,比PyPy 1.6中的快20倍左右。
- 一些RPython模組的記憶體占用已得到大幅改善。
另外,有一些功能正在開發,將包含在1.8版本中,這些功能包括:
- 特殊列表實現。可以大幅改善一些應用程式的性能/記憶體影響。
- NumPy effort即將支持多維數組。
- 兩個新的JIT編譯器後端,尤其針對PowerPC和ARM處理器。