PyPy 双版本同步更新,不仅仅是快

PyPy 团队 21 日通过官方博客正式发布了两个全新版本:PyPy2.7 v5.7 和 PyPy3.5 v5.7,即支持 Python v2.7 语法和 Python v3.5 语法的 PyPy 全新版本解释器。

据博客介绍,此次更新的亮点有两个:

● PyPy3.5 首次引入了对 Python 3 的语法支持; ● PyPy2.7 提升了对 C 扩展包的兼容性,可以直接运行 Numpy、Cython 和 Pandas 等。

大部分做 Python 开发的人或多或少可能都知道 PyPy:一种基于 Python 实现的 python 解释器。由于其特有的 JIT 动态编译,因此在运行速度上可以轻轻松松超过标准解释器 CPython 好几倍,甚至有报道称在某些极端情况下 PyPy 可以比 CPython 快好几百倍。基于这一重大优点,PyPy 团队长期以来的奋斗目标一直都是超越 CPython,成为各种 Python 实现版本中的王者。

但这一梦想一直没能实现。究其原因,一个重要的障碍可能来自版本支持:PyPy 的更新一直落后于 Python 语言的主流版本,即它并不支持全部的 Python 语法,而且往往不适配那些最新的特性。久而久之,在用户群里形成了一个刻板的固有印象:PyPy 只是那些不适配 Python 最新特性的 App 的替代品。

为了扭转这种并不光彩的固有印象,PyPy 在最新版本中做出了改变。

█ PyPy3.5 引入 Python 3 支持

改变之一是对 Python 新特性的支持。

在此次更新的 PyPy3.5 版本中,PyPy 开始全面支持 Python 3 的语法,包括可以更方便地进行异步编程(asynchronous programming)。不但如此,PyPy3.5 还支持在 Python 3.4 中引入的异步模块 asyncio(包括 async/await 语法),而且有评论称,相对原版,该特性在 PyPy 中得到了相当大的性能提升。

另外,在 Python 3.6 中引入的 f-strings 特性,也在此次更新的 PyPy3.5 版本中得到了支持。事实上,f-strings 并非一个普遍受欢迎的特性,因为它仅仅提供了一个本地字符串格式化的简化选项,但此次依然获得了 PyPy3.5 的支持。这一点或许从另一个侧面反映了 PyPy 的改变:如果需要,未来 PyPy 可以支持更多的最新特性。

对于这些改变,有评论认为可能是源于去年 Mozilla 基金会授予 PyPy 团队的高达 20 万美元的援助资金。现在看来,这项投资似乎物有所值。

█ PyPy2.7 提升 C 扩展包兼容性

另一个改进是基于 Python 2 的 C 扩展包支持。

此前 PyPy2(基于 Python 2.x )的开发进度一直领先于 PyPy3(基于 Python 3.x ),这次 PyPy2 也没有落后。PyPy2.7 中除了适配 Python 2.x 最新的 bug 修复版 Python 2.7.13 之外,最大的亮点在于大大改善了对 C 扩展包的兼容性。

此前,Python 的 C 扩展包并不能像其他 Python 代码一样流畅地通过 PyPy 解释运行,而是必须借助一个名为 cpyext 的 API 兼容层。在此次更新中,PyPy 进一步改善了 cpyext 的效率,用户在 PyPy2.7 中可以方便地 import 包括 Numpy、Cython、Pandas 等在内的各种 C 扩展包。

这一点对与那些只支持 Python 2.x 的项目来说无疑是个好消息,但先不要高兴的太早。因为 PyPy 团队明确在博客中指出:C 扩展包的运行速度,尤其是针对那些调用频繁的 C 语言短函数,PyPy 的运行速度可能会比 CPython 慢。但同时团队也表示,如果开发者真的发现 PyPy 在运行过程中有速度瓶颈的话,可以随时通知他们,他们会在第一时间做出改进。

关于这一点,目前一个有效的解决方案是直接把 C 扩展包移植到 PyPy,就像 NumPy 在 PyPy 下的分支版本 NumPyPy 那样,充分利用 PyPy 的原生接口来集成 C 代码。但是考虑到这种方案有悖于 PyPy 团队推出 cpyext 兼容层的初衷,因此并不是一个值得推荐的长期解决方案。

另外值得一提的是,消息称从 2020 年开始,社区将停止对 Python 2.x 版本的支持。但现实是,由于各种各样的不可抗力,届时可能仍然会有许多团队不得不继续使用 Python 2.x 的代码。那时 PyPy 将会是一个不错的选择,毕竟 PyPy 最初就是以 Python 2.x 为核心发展起来的。

原文地址:http://www.infoworld.com/article/3183527/application-development/pypy-powers-up-python-35.html

PyPy 博客地址:https://morepypy.blogspot.com/2017/03/pypy27-and-pypy35-v57-two-in-one-release.html

PyPy 最新代码地址:http://pypy.org/download.html

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2017-03-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

Android木马如何实现用户定位技术?

这几年安卓系统的普及速度可谓迅猛,一时间各式各样的设备都承载着安卓系统,手机、平板、机顶盒等都忠实地成为了安卓系统的用户。由于安卓系统在移动设备上的使用率最高,...

3415
来自专栏量子位

5天被迫喊停!Win 10史上最短命系统升级:删文件、无法联网,误报CPU使用率

此次更新的版本号为1809,遍地是坑:删除私人文件、CPU使用情况算错、微软App连不上网……很多抢先更新的用户,现在还没爬上来。

2221
来自专栏程序人生

程序员效率指南

最近很多朋友都是春节前后看了知乎日报的「年度热门·能花钱的,就不要花时间」关注「程序人生」的,所以寂静了很长一段时间的后台消息,随着新读者的加入,又活跃了起来。...

3726
来自专栏北京马哥教育

Nginx与httpd对比

作为一个运维的学习者,对nginx和apache了解的很浅,但是作为以后运维过程中非常重要的两款服务器软件,静态web服务提供者,还是相当有必要深入的了解一下他...

4065
来自专栏Flutter入门到实战

开发工具总结(7)之多年珍藏的Android开发必备网站和工具

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/781c1b56bc5b

4622
来自专栏Java技术栈

阿里巴巴,排行前10的开源项目!

1、FastDFS FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储...

4638
来自专栏阮一峰的网络日志

Google日历简易版

我试过自己搭建软件,但又懒得维护。使用过twitter,但它的档案查阅和时间序列功能实在太弱了。

1353
来自专栏北京马哥教育

海量的超赞 Linux 软件

1.1K4
来自专栏数据和云

DBA决不能心存侥幸

最近一个阶段,在不断频繁的出差中,也不断接收到大量的客户援助请求,各类千奇百怪的故障呈现出来。 题图是来自某客户现场的一条标语:侥幸的明天就是不行。这张图在微博...

3568
来自专栏Android 开发者

正式发布 Android 架构组件 1.0 稳定版

1262

扫码关注云+社区

领取腾讯云代金券