写点什么

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:372485
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

阿里巴巴最新推出王者笔记:“Spring MVC源码与实践”

钟奕礼

Java 程序员 java面试 java编程

浅谈网络营销从业者如何突破瓶颈期

石头IT视角

CleanMyMacX软件免费版本在哪里下载?

茶色酒

CleanMyMacX

Verilog 表达式

芯动大师

Verilog Verilog语法 Verilog操作符

纯干货,不愧是阿里顶配版Spring Security笔记,面面俱到太全了!

架构师之道

Java spring 架构师

极客时间运维进阶训练营第七周作业

独钓寒江

鸿蒙开发实例|构建轻量级智能穿戴设备用户界面

TiAmo

华为云 鸿蒙开发 12月月更

还在用Jenkins?试试这款面向DevOps的自动化部署工具吧,贼带劲!

架构师之道

开源 编程

2022年中国期货行业年度发展观察分析

易观分析

金融 期贷

Seata分布式事务你懂吗?学习了大佬的笔记,公司说要给我涨薪8K

钟奕礼

Java 程序员 java面试 java编程

Mysql大合集,你要内容的这里全都有

钟奕礼

Java 程序员 java面试 java编程

FLStudio水果2024中文免费版下载

茶色酒

FL Studio FL Studio21

easyrecovery2024永久免费版数据恢复软件

茶色酒

EasyRecovery15 easyrecovery2023

CleanMyMac2023mac电脑清理磁盘软件

茶色酒

CleanMyMac CleanMyMacX CleanMyMac X

同事跳槽拿下阿里P6Offer,程序员:会点基础还真不行

钟奕礼

Java 程序员 java面试 java编程

前辈给的Spring Cloud与Docker微服务实战,挽救了要被辞退的我

钟奕礼

Java 程序员 java面试 java编程

【工具安装】logstash的安装

No8g攻城狮

elastic Logstash ES ELK Stack Elastic Search

线性表→顺序表→链表 逐个击破

C++后台开发

数据结构 linux开发 Linux服务器开发 顺序表 C++开发

三年Crud,一周学会MySQL,助我拿到阿里研发Offer

钟奕礼

程序员 java面试 java编程 #java

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

钟奕礼

Java 程序员 java面试 java编程

四种主流的大数据技术

穿过生命散发芬芳

大数据技术 12月月更

Discourse 本地开发环境时候出现代理错误

HoneyMoose

天天刷 B站,了解他们的评论系统是如何设计的吗?

小小怪下士

Java 程序员 系统设计

爱了!阿里巴巴JAVA岗发布,最新内部面试题(含P5-P7)

钟奕礼

Java 程序员 java面试 java编程

内卷这么严重!学会这些java核心资料,再也不怕行业内卷了

钟奕礼

Java 程序员 java面试 java编程

面试官问对分布式锁进行高并发优化,这样答,成功斩获大厂offer

钟奕礼

Java 程序员 java面试 java编程

在 Istio 服务网格中使用 Argo Rollouts 实现智能的渐进式发布

Se7en

云原生

CleanMyMac2024值不值的下载安装?

茶色酒

CleanMyMac X CleanMyMac X2023

SSM框架之Mybatis整合

@下一站

实践 mybatis配置 11月日更 mybatis入门 11月月更

移动端防抓包实践

杨充

深入浅出学习透析 Nginx 服务器的基本原理和配置指南「运维操作实战篇」

洛神灬殇

nginx web服务器 运维开发 12月日更 12 月 PK 榜

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