将PyPy的Rpython作为通用编程语言开发

时间:2011-02-17 20:10:36

标签: python compiler-construction open-source fork pypy

是否有兴趣从Rpython (Restricted Python)开发PyPy project作为通用编程语言?也许它可能是PyPy项目的一个分支。这样的项目是否存在?由于编译了程序,人们可以简单地贡献用Rpython编写的模块,它可以与其他python实现竞争,包括CPython和PyPy。

5 个答案:

答案 0 :(得分:17)

我不能代表其他人,但我个人对使用RPython作为通用语言非常感兴趣。回答其他人的问题:

为什么呢?因为Cython很难弄清楚如何使用。如果你没有恰当地输入很多棘手的类型声明,你就不会获得任何加速。使用RPython,它会快速运行或根本不运行。

使用PyPy提供了一个很好的加速,但目前没有RPython那么多。

RPython可能是获得超快速,有些Pythonic代码的好方法。 Here's an example帮助您入门。不幸的是,我不知道有任何大型项目要做这件事。

答案 1 :(得分:11)

是的,已经有一个项目使用PyPy的翻译工具链来使用RPython创建独立的可执行文件和库。它被称为RPythonic

答案 2 :(得分:4)

通用RPython不会成为CPython和PyPy的竞争对手。它甚至不会成为像Cython这样的竞争对手。

为什么呢?因为 RPython不是Python !! RPython只是一种与Python共享语法的语言;足够多的Python解释器可以执行RPython代码,但你不能把Python代码编译成RPython

为了使RPython静态类型化和编译(实际上是静态类型推断)而添加的Python限制非常严重,以至于它们完全改变了语言。如果你想编写一个RPython程序,你必须事先决定这样做并在RPython中编写它。你不能用Python编写程序,然后决定将它编译为RPython,你甚至不能调整一个现实的Python程序来使它成为RPython。普通的Python代码与正常的RPython代码完全不同;编写RPython更像是编写Java或C#。

因此,如果您想在Python中编写通用程序,但希望它们更快,RPython几乎无法为您提供。这是PyPy的Python解释器试图填补的利基。

如果你想用较低级别的编译语言编写通用程序,因为你需要你的程序比Python运行得更快,那么现有非常成熟的语言和库,比如Java或C#。

在RPython中编写代码的原因是做一些RPython特别好的东西。就像编写解释器一样,您可以添加垃圾收集器和JIT编译器,而无需手动编写它们! 这里 RPython闪耀,是的,我会对更加优雅和可用的RPython解释器编写环境非常感兴趣。但是作为编写程序的通用编程语言并没有特别受益于RPython的专业,它只是一个巨大的工作量才能使它能够与已经更好地填补该角色的现有语言竞争。它现在几乎没有标准库(例如,因为几乎没有Python的广泛标准库可用于RPython)。例如。

答案 3 :(得分:2)

从它的外观来看,这些限制非常严重,总的来说,编程的次数要少得多,我想。这对于实现PyPy是必要的,但通常如果你想要可以与Python交互的快速编译代码,你可以使用Cython(针对CPython扩展,并且无缝地支持几乎所有的Python)或者在一个代码中编写代码可以做到这一点的更常见的语言。如果你只是想要快速编译代码......那么,RPython可能比例如C,但是,我在这里看不到显着的优势(至少没有一个可以保证创建一个可用的,稳定的语言)。

答案 4 :(得分:2)

为什么我要直接在RPython中写?

Python代码似乎更简单并且运行PyPy。

为什么我要编写C代码?

编写Python似乎更简单,并且在C

中实现了PyPy

为什么我要编写汇编程序代码?

编写Python似乎更简单,并且在汇编程序中实现了C和C中实现的PyPy。

我猜它真的乌龟。

为什么我要停止使用最方便的语言并切换到不方便的语言?

放弃一种好语言的价值是什么?