写点什么

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

  • 2014-09-21
  • 本文字数:867 字

    阅读完需:约 3 分钟

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 编译器感兴趣的读者也可以浏览代码,并加入进去。

2014-09-21 08:372622
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 140.6 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

C++最佳实践 | 4. 可维护性

俞凡

c++ 最佳实践

Maven 依赖管理与生命周期

Emperor_LawD

maven 5月月更

druid 源码阅读 5——讨论下druid为什么不用AtomicLong

张大彪

【愚公系列】2022年05月 二十三种设计模式(十四)-命令模式(Command Pattern)

愚公搬代码

5月月更

一文掌握MySQL中的二进制日志,MySQL 优化学习第10天

梦想橡皮擦

5月月更

《原则》读书笔记 - 又臭又长

懒时小窝

读书笔记

C++最佳实践 | 3. 安全性

俞凡

c++ 最佳实践

ArrayList源码分析-初始化

zarmnosaj

5月月更

C++最佳实践 | 5. 可移植性及多线程

俞凡

c++ 最佳实践

在线TSV转XML工具

入门小站

工具

druid 源码阅读(五)初始化连接池总结

爱晒太阳的大白

5月月更

模块九作业 - 设计电商秒杀系统

smile

架构实战营

架构实战营:毕业总结

刘璐

模块1-作业

Fan

架构实战营

Nacos源码系列—订阅机制的前因后果(上)

牧小农

源码 nacos

架构实战营:毕业项目《电商秒杀系统》

刘璐

MP4封装格式

Loken

音视频 5月月更

【LeetCode】不含重复字符的最长子字符串Java题解

Albert

LeetCode 5月月更

一篇文章带你了解云计算

工程师日月

5月月更

模块1作业回答

Geek_701557

Redis「3」持久化

Samson

学习笔记 Redis 核心技术与实战 5月月更

在线文本去重统计工具

入门小站

工具

架构实战营 - 毕业总结

smile

架构实战营

Laxcus分布式操作系统三代UI演进之路

LAXCUS分布式操作系统

分布式计算 操作系统 分布式存储 并行计算 GUI设计

如何保证 Redis 高可用和高并发(主从+哨兵+集群)

Ayue、

redis sentinel Redis 核心技术与实战

一、什么是云原生安全

穿过生命散发芬芳

云原生安全 5月月更

setState 和 ModelBinding用法对比来看局部刷新效果

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

Cocos Creator学习のTiledMap

空城机

Cocos 5月月更

学生管理系统(3)

5月月更

SpringWebFlux中WebClient怎么打印日志?

编号94530

spring 日志 WebFlux WebClient

数据库连接池 -Druid 源码学习(五)

wjchenge

Druid 数据库连接池

Pyston 0.2发布,支持更多Python特性_语言 & 开发_臧秀涛_InfoQ精选文章