LLVM、Parrot、JVM、PyPy+;python
在开发某些语言(例如python)时,使用LLVM/Parrot的一些优化技术会遇到什么问题 PyPy、LLVM、Parrot是通用平台开发的主要技术LLVM、Parrot、JVM、PyPy+;python,python,jvm,llvm,pypy,parrot,Python,Jvm,Llvm,Pypy,Parrot,在开发某些语言(例如python)时,使用LLVM/Parrot的一些优化技术会遇到什么问题 PyPy、LLVM、Parrot是通用平台开发的主要技术 我是这样看的: PyPy-使用针对python的内置优化虚拟机构建虚拟机的框架 所以这是一个非常普遍的解决方案。该过程如下所示: 动态语言代码-> PyPy前端-> PyPy内部代码-字节码-> PyPy优化-> 离开PyPy代码和: A.某些VM(如jvm)的PyPy后端 B用于制作自己的虚拟机的som套件 C处理/运行PyPy内部代码
我是这样看的:
- PyPy-使用针对python的内置优化虚拟机构建虚拟机的框架
所以这是一个非常普遍的解决方案。该过程如下所示:
- 动态语言代码->
- PyPy前端->
- PyPy内部代码-字节码->
- PyPy优化->
- 离开PyPy代码和:
A.某些VM(如jvm)的PyPy后端
B用于制作自己的虚拟机的som套件
C处理/运行PyPy内部代码
- 鹦鹉-很像PyPy,但没有5.a和5.b?动态处理的一些内部改进(Parrot Magic Cookies)
皮皮的感官在哪里?我们需要什么来创建更多的虚拟机?最好只关注一个VM(比如parrot),因为有一个通用的代码级别——PyPy内部字节码或parrot代码。 我认为,将PyPy字节码转换为新创建的PyPyVMS,再好不过了
- LLVM-我认为这与PyPy非常相似,但没有VM生成器。
它是一个成熟的、设计良好的环境,具有与PyPy类似的目标(但没有VM生成器),但工作在低级结构上,并实施了大量优化/JIT技术
问题:
我想弄清楚所有这些软件是如何组成的——以及将一个软件移植到另一个软件的问题是什么。主要原因是什么?因为虚拟机设计并不是一种固定的技术,拥有具有不同目标和目的的各种虚拟机允许并行尝试各种机制,而不必串联尝试所有机制 JVM、CLR、PyPy、Parrot、LLVM和其他都以不同的方式针对不同类型的问题。这与Chrome、Firefox、Safari和IE都使用自己的Javascript引擎的原因类似 unladenswallow试图将LLVM应用于CPython,他们在LLVM中修复问题的时间比他们在做任何特定于Python的事情的时间都多 Parrot上的Python在Perl 6和Python之间存在语义差异,导致前端编译过程出现问题,因此未来在这方面的工作可能会使用PyPy前端来针对Parrot VM
不同的虚拟机开发人员当然会关注其他人在做什么,但即使他们提出了好的想法,他们也会在合并这些想法之前对它们进行自己的分析。您想实现什么?你的问题措辞非常混乱(我知道英语可能不是你的第一语言) LLVM和PyPy都是成熟、有用的项目,但在这一点上实际上没有太多重叠。(有一次,PyPy可以生成LLVM字节码,该字节码是静态编译到解释器的,而不是C代码,但它没有提供多少性能优势,不再受支持。) PyPy允许您在RPython中编写一个解释器,并将其用作生成本机代码解释器或JIT的描述;LLVM是一个用于编译编译器链的C++框架,它也可以用来实现JIT。LLVM的优化器、代码生成和平台支持比PyPy要先进得多,但它不太适合构建动态语言运行时(有关原因的一些示例,请参阅)。特别是,它在收集/使用运行时反馈方面不如PyPy的基于跟踪的JIT有效(这对于使动态语言表现良好是绝对必要的)。此外,LLVM的垃圾收集支持仍然有些原始,并且缺少PyPy自动生成JIT的独特能力 顺便提一下,有两个Java实现是基于LLVM和构建的
Clojure
Python