PyPy 庆祝 10 周年生日

 

PyPy 在其官方博客上发表文章庆祝其 10 周年生日。文章写到:

10 年对软件工程来说是很长的一段时间,PyPy 大约在 10 年前的某天推出的,确切的日期已经因为版本控制系统问题无法得知。在这 10 年里,我们已经走了很长的路,从一个“最小的 Python”,到一个高性能的 VM 的不断超越。

这 10 年来一些关键的时间点:

  • 2007 年,结束了欧盟注资期间,我承诺很快发布 JIT,但我过分乐观了,第一个可用的 PyPy 在 2010 年才推出
  • 我曾经决定要拥有一个 JavaScript 后端以便将 RPython 程序编译成 JavaScript ,并在浏览器上运行。事实证明这是一个很糟糕的主意
  • 我们还尝试使用 RPython 来编写 CPython 的 C 扩展,可 RPython 是个很糟糕的语言,于是我们开发了更快的 JIT,因此你没必要再写 C 扩展
  • 我尝试 4-5 次来使用 LLVM,虽然还没完全放弃,但总有这样那样的问题
  • 我开始对 ctypes 抱有极大兴趣,并尝试做一个静态类型的子集,名为 rctypes,这也是个很糟糕的做法。第二次了!
  • 一开始我非常希望创建一个 JIT 生成器,但第一个版本失败得很惨,生成太多的汇编器;第二个、第三个版本也都失败了,好在我们在 2010 年发布了可用的 JIT
  • Martijn Faassen 经常问我 PyPy 到底有多快,因此我决定增加一个选项 "--faassen" 来打开所有优化开关,然后又家了 "--no-faassen" ,后来改名为 -O2 ,而现在是 -Ojit
  • 第一次 Python 解释器成功编译到 C 语言时,发生了段错误,因为代码生成器使用了有符号的字符而不是无符号
  • 为了更加容易被接受,欧盟项目建议一个语言的每个特性都要暴露在阳光下,这证明是烦人的,因为这样我必须实现所有的这些特性。后来我做了个清理工作,删除了 30% 的代码和 70% 的功能!
  • 有一次有人提供一个新的软件开发方法学 —— 术语驱动编程。这名字很花俏。然后讨论并实现,例如:timeshifter, rainbow interpreter, meta-space bubble, hint annotations (但这些真实存在).
  • 有这么一种阴谋论调,说翻译过程如此之慢的原因是在这个过程中时间被储存起来了,等到实际程序在上面运行的时候再取出来,这样程序就显得快一点

总的来说,这是一段很长的路。然而,10年后我们还有健康的身体。以及我们正在接近 PyPy 2.0 与 stackless+JIT 和 cffi 支持,支持Python 3正在成型,像STM非标准扩展正在慢慢准备(很快),有几个非Python解释器即将推出(Hippy, Topaz等等)。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。