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

11 投票
5 回答
2210 浏览
提问于 2025-04-16 12:01

有没有人对把Rpython(受限Python)PyPy项目发展成一种通用编程语言感兴趣?也许可以从PyPy项目分支出来。现在有没有这样的项目存在?因为这些程序是编译过的,所以可以简单地贡献用Rpython写的模块,这样它就可以和其他Python实现,比如CPython和PyPy竞争。

5 个回答

6

一般来说,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 中使用)。

11

是的,已经有一个项目在使用PyPy的翻译工具链,来创建独立的可执行文件和库,这个项目叫做 RPythonic

17

我不能代表所有人,但我个人非常想把RPython当作一种通用编程语言来用。接下来我来回答一些其他人的问题:

为什么呢?因为Cython用起来太麻烦了。如果你不把一些复杂的类型声明写得非常准确,就无法获得任何速度提升。而RPython要么运行得快,要么根本不运行。

使用PyPy可以提高速度,但目前的提升幅度远不如RPython。

RPython可能是获得超级快速、稍微像Python的代码的好方法。这里有一个例子可以帮助你入门。可惜的是,我不知道有什么大型项目在使用它。

撰写回答