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详细改进列表:
列表策略。现在只包含整数或浮点数的列表的效率应该与在二进制包中存储一致。使用此类列表地方的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 ...