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

hig*_*dth 11 python compiler-construction open-source fork pypy

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

bns*_*ith 17

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

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

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

RPython可能是获得超快速,有些Pythonic代码的好方法.这是一个帮助您入门的示例.不幸的是,我不知道有任何大型项目要做这件事.


小智 11

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


Ben*_*Ben 5

通用 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 中可用)。


小智 2

从表面上看,限制相当严格,而且总的来说,我想编程的地方要少得多。这对于实现 PyPy 是必要的,但通常如果您想要快速编译的代码可以与 Python 交互,您可以使用Cython(它针对 CPython 扩展并无缝支持几乎所有 Python)或使用更常见的一种编写代码可以做到这一点的语言。如果你只是想要快速、编译的代码......那么,RPython 可能比 C 更令人愉快,但是,我仍然没有看到这里的显着优势(至少没有一个可以保证努力创建一个可用的、稳定的)语言)。