lob*_*ism 7 pypy brainfuck rpython
我对PyPy项目非常感兴趣,但对于下面列出的第一个(但不太知名)的目的:
在以下博文中,http://morepypy.blogspot.com/2011/04/tutorial-writing-interpreter-with-pypy.html和http://morepypy.blogspot.com/2011/04/tutorial-part -2-adding-jit.html有关于如何使用RPython实现脑力叉解释器的详细教程,并添加了一个JIT.
但是我在其他地方读过RPython可能很麻烦 - 为动态类型创建的语法突然限制为推断的静态类型导致难以理解的编译错误.
所以我的问题是,是否有任何其他项目可以让你像上面的教程一样编写脑力翻译/ JIT?或者PyPy是这么简单的唯一选择吗?
(旁白):如果存在,一般来说RPython有什么意义?是否只是为了表明Python的子集可以是类型安全的,并且在该子集中实现了Python?在现有的翻译创建工具中做"PyPy"会更有意义吗?
小智 10
但是我在其他地方读过RPython可能很麻烦 - 为动态类型创建的语法突然限制为推断的静态类型导致难以理解的编译错误.
它不是关于语法(Python语法与输入有关的唯一事情就是它没有类型注释的位置,并且可以 - 并且在3.0中更改),以及更多关于:
所以我的问题是,是否有任何其他项目可以让你像上面的教程一样编写脑力翻译/ JIT?或者PyPy是这么简单的唯一选择吗?
我不知道有任何其他尝试从解释器创建JIT编译器的项目.我很自信这个想法是新的,当PyPy的人做到了,所以像这样的其他东西(如果它存在)比RPython更成熟的可能性很小.有许多项目有助于个人方面.还有一些解决了许多或"所有"这些方面的问题,例如Parrot.但AFAIK没有一个像PyPy那样引人注目的成功故事.
Parrot是一个用于动态语言的VM,具有多个后端(自我刚刚学习v1.7以来没有JIT,但该架构允许透明地重新引入),并且显然为语言实现者开发了一套丰富的工具.CLR和JVM为静态面向对象语言提供类似的服务,尽管我不知道像Parrot那样复杂的工具.
但是,不是你编写一个解释器,而是定义了IR(实际上是几个),你的工作是将语言编译为IR(并根据VM可以理解的定义内置功能).在这方面,它与RPython编写解释器的方法不同.此外,与其他虚拟机一样,如果您的语言的某些方面严重影响到IR,则会被搞砸.需要与VM的服务完全不同的东西吗?玩得开心(并且遭受可怕的表现).需要特定于语言的优化(对任意IR无效,不能提前完成)?告别那些性能改进.除了玩具语言之外,我不知道Parrot上有完整的语言实现.由于他们不是经常吹嘘性能,我担心他们目前在这方面很弱.
LLVM(由其他人提及)以及许多其他代码生成器/后端只是一个因素.您必须编写一个完整的静态编译器,将您的语言降低到机器代码的抽象级别,而不是解释器.这可能是可行的,但肯定是完全不同的.
如果存在,一般来说RPython有什么意义?
"编写JIT编译器很难,让我们去购买写口译员." 好吧,它可能最初是"我们想在Python中使用Python,但它太慢了,我们不想从头开始编写语言".但是现在,RPython本身就是一种非常有趣的编程语言,因为它是世界上第一个将JIT编译器作为一流的编程语言(不是真正意义上的第一类函数,但足够接近)语言构造.
在现有的翻译创建工具中做"PyPy"会更有意义吗?
只是为了成为元,做研究,并展示它的作用,我赞成目前的方法.直到JIT生成器工作的那一刻,你可以在任何语言中使用静态编译,C-ish性能潜力和宏(或者添加他们称之为"翻译方面"的其他方式) - 尽管这些是罕见的.但是,为整个 Python语言编写一个性能良好的(JIT或非编译器)编译器已经多次证明对人类来说太难了.我会说编写一个解释器更有意义,然后再努力在一个单独的JIT编译器代码库中再次正确,并且仍然优化任何东西.
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |