Python直译器PyPy释出第7个主要版本,这个版本同时又包含3个版本,虽然使用相同的程序代码基础,但是内建的直译器版本不同,分别支持Python 2.7、Python 3.5以及Python 3.6 Alpha版本。PyPy是一个与Python相容的直译器,自诩为官方直译器CPython的替代品,因为其整合了追踪JIT编译程序,所以效能比CPython快上许多。开发团队现在释出了PyPy 7.0.0,由于支持的Python版本不同,因此分成PyPy 2.7、PyPy 3.5以及PyPy 3.6 Alpha共3个版本,不过这3个版本的程序代码库并没有太大的差异。
官方特别提醒,PyPy 3.6 Alpha是他们第一个支持Python 3.6的语法与功能的PyPy版本,目前仍在测试版阶段,同时他们也认为Windows PyPy 3.5未达可用于产品阶段的质量,在兼容性上还存在一些问题待处理,建议开发者不要将这两个版本用于开发产品上。官方持续与下游套件供货商合作,不过在专为PyPy发布建置版本之前,官方收集了一些常见的套件并以wheels封装格式提供。另外,官方也改善了PyPy 7.0.0的垃圾回收效率,并在今年1月释出可手动控制垃圾回收机制时,并入这个版本中。
PyPy的垃圾回收策略会定期扫描堆(Heap),释放无法存取对象的内存空间,这样的方式虽然比起CPython的参照策略效率好很多,但是应用程序却会产生明显的停顿。因此PyPy加入了gc.disable()与gc.collect_step()两个函式,可以让开发者手动控制内存释放的时机。而这项功能原本是与特定研究机构合作的成果,现在官方将其并入PyPy 7.0.0中。另外,官方将新版PyPy中的cffi模块版本升级到了1.2,cppyy后端也更新到了1.4,官方建议开发者用这两个模块来打包C和C++程序代码,以获得良好的JIT体验。而由于这个版本与前一版本完全兼容,而且又修复了许多错误,因此官方强烈建议开发者更新到最新版PyPy。
原文地址:http://blog.51cto.com/13373212/2350214