BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Pyston 0.2发布,支持更多Python特性

| 作者 臧秀涛 关注 2 他的粉丝 发布于 2014年9月22日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

Pyston是Dropbox发起的一个开源项目,目标是使用LLVM和现代JIT技术开发一款高性能的Python实现。4月份InfoQ中文站曾经报道过。在经历了5个月的开发之后,Pyston 0.2发布了。与最初的0.1版本相比,该版本包含了大量改进。尽管仍然有很多工作要做,但是语言兼容性已经有很大改观,而且很多标准库、某些标准扩展模块无需修改即可运行。不过Pyston离真正可用还有很长的路要走。

该版本支持的Python特性包括:

  • 异常,使用C++风格的异常处理
  • 继承和元类(metaclass),不过尚不支持多重继承
  • 基本的原生C API支持
  • 闭包、生成器、Lambda和生成器表达式
  • 完整的参数处理行为
  • long和integer的提升(promotion)
  • 多线程支持

具体而言,如仍在继续开发的原生C语言支持,目前能够原生提供CPython API的一个子集,重新编译一次就能运行现有的扩展。在其他技术中,开发团队禁用了所有的引用计数操作,转而使用保守的垃圾收集来处理内存管理。

该版本也使用GIL管理线程相关的代码。不过提供了实验性的配置选项,支持使用读写锁的一个变种。该选项去掉了GIL,支持多个线程使用多个处理器核,但是受限于C API的语义,并行性还有待继续挖掘。

根据原来的设想,0.1版本的目标是验证整个JIT架构,0.2改进语言兼容性,0.3改进性能。0.1版本已经说明,可以使用LLVM生成高性能代码,但是基准测试表明,性能还是被非常简单的垃圾收集器、较为初级的SSA变换实现拖了后腿。未来数月,开发团队将集中解决这些问题,并引入一个新的分层框架,以支持更先进的类型推导、支持Python的高级框架内省特性。

项目的核心人员Kevin Modzelewski提到:

很多地方都可以这么说:目前还比较慢,但是我们相信可以做到更快。因此我们暂时选择不给出基准测试数据,因为现在噪音比较多。

未来的0.3版本将提供性能数据。

另外,尽管Python之父Guido van Rossum就职于Dropbox,但是他并没有参与该项目的开发,不过会提供一些建议。

该项目目前已经有10余位Dropbox之外的开发人员贡献代码。对构建一款高性能Python JIT编译器感兴趣的读者也可以浏览代码,并加入进去。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

pthon2 or python3 ? by jin zic

pthon2 or python3 ?

Re: pthon2 or python3 ? by 臧 秀涛

Python 2.7

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT