大家好,我非常激动宣布 Pyston,这是一个正在由 Dropbox 开发的开源 Python 解释器。 这个项目的目标是产生一个高性能的 Python 解释器,使 Python 也能用于那些被如 C++ 这样的传统系统语言占据的领域。
10余年专业网站制作公司历程,坚持以创新为先导的网站服务,服务超过近1000家企业及个人,涉及网站设计、成都App制作、微信开发、平面设计、互联网整合营销等多个领域。在不同行业和领域给人们的工作和生活带来美好变化。
在 Dropbox ,我们热爱 Python ,尝试用它来做一切可以做的事情。然而随着规模的的变大和要处理的问题越来越多,我们开始发现继续使用 Python 而要达到我们的性能目标有时候极其困难。有时用另外一门语言重写也起不了多大作用。我本人非常喜欢 Python , 每次当我们决定重写什么东西的时候我都很受伤,所以我想为它做一点什么。在静态编译上做了一些无用功后,我们到处查资料然后发现 JIT 技术在 Javascript 上非常成功,尤其 是 Chrome 的 V8 引擎大大地改善了 Javascript 的性能。我们希望通过同样的技术也能在 Python 上达到相同的性能提升。
Pyston 现在仍然处于初期阶段,还不能投入使用。但我们希望早点在它的生命周期之初就公布并开源出来,这样我们就能和 Python 和 JIT 社区来合作开发了。太多的细节在这篇博客写不下,但我们想说一下我们为什么需要一个新的 Python 实现,以及讲一点点 Pyston 是怎么工作的。
早就已经有了一大堆使用 JIT 技术的 Python 实现:PyPy 使用它的 tracing JIT 来提高性能;Jython 和 IronPython 都是构建在广泛支持 JIT 的虚拟机上的。所以为什么我们认为还值得开始创造一个新的实现呢?
简单来说,是因为我们认为绝大多数有前景的技术都和现有的实现不兼容。比如,在 Javascript 界就因为强大的性能优势从 tracing JIT 切换到 method-at-a-time JIT 。对 Python 是否有同样的性能优势还有待商榷,但由于这两种途径从根本上都是和现有的实现不兼容的,所以答案只能是构建一个新的 method-at-a-time JIT。
另外一个区别是我们对传统的垃圾回收器有计划地使用来高效地支持拓展模块。同样,我们现在也无法知道这是否是一种更好的方法,但这个决定对一个很难在现有的实现下进行测试的 JIT 来说是必不可少的。
从零开始的坏处就是,创造一个新的语言的实现毋庸置疑是一个巨大的任务。幸运的是, 有助于这个过程的一些工具已经开始出现了。尤其是 Pyston 是构建在 LLVM 之上的,使得我们不需要自己处理细节就可以生成上层的高质量代码。尽管如此,一个新的 Python 实现还是一个巨大 的工程,所以 Pyson 将不会马上就能投入使用。
从顶层看,Pyston 将解析好的 Python 代码转换成 LLVM 中间代码。然后中间代码就通过 LLVM 的优化然后传递给 LLVM 的 JIT 引擎,产生可执行的机器代码。LLVM 包含许多优化步骤和机制,使得它能产生非常快的代码。
然而问题是 LLVM 不能推出 Python 代码,因为动态语言不得不把所有底层的行为都隐藏在类型分派(Type Dispatch)后。为了解决这个问题,Pyston 采用类型推断:虽然证明一个变量将会是某个特别的类型通常是不可能,但是 Pyston 经常可以根据一些确定的事实来预测某个对象会是什么类型。一旦做出 了一个预测,Pyston 将在运行时检测这个预测,在预测所对应的快速分支和预测失败所对应的慢速分支之间进行选择。
Pyston 还包含许多其他的现代技术,比如为快速查找属性和快速调用方法而设计的隐藏类和内联缓存。你可以在 Github 页面上找到更多的技术细节,以及一篇单独讲述这些技术细节的博文。
Pyston 仍然处于初始阶段,只支持 Python 语言的一个最小子集。拿基准测试数据来说话是不怎么公平的,因为 1) Pyston 不支持足够大的基准测试,所以这不具备代表意义。2) Pyston 不支持所有运行时特性(包括一些可能带来减速的特性),所以这不是一个同类的比较。 在这两点注意事项下,Pyston 在性能上通常可以击败 CPython,但是仍然弱于 PyPy。
代码以 Apache 2.0 许可证发布在 Github 上,技术文档正在增加。还有大量的工作需要做, 我们正在扩张团队:如果你对这类事感兴趣,请联系我们!
请继续关注项目的进展。你也可以在这里订阅我们的邮件列表。
网站名称:Pyston:Dropbox正开发的开源Python解释器
转载注明:http://www.stwzsj.com/qtweb/news44/5044.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联