微信号:infoqchina

介绍:有内容的技术社区媒体

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

2014-09-23 18:02 臧秀涛

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 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 怎样在1秒内启动Linux 数据可视化作品TOP10 实战经验:十大渠道告诉大家如做好APP海外推广 假如你的老公、老婆是做互联网的 【测试体系】谈分布式测试体系构建