Parrot与其他虚拟机相比如何?

kno*_*orv 28 clr jvm parrot perl6 raku

Parrot是最初为Perl 6设计的虚拟机.

Parrot VM提供哪些技术功能,如Java虚拟机(JVM)/热点VM公共语言运行时(CLR)等竞争虚拟机缺乏?

Sch*_*ern 34

以下答案于2009年撰写.另请参阅raiph的2015年更新.

为了扩展@Reed并指出一些亮点,Parrot的操作码远远高于大多数虚拟机.例如,虽然大多数机器存储整数和浮点数,但基本寄存器是整数,数字,字符串和Parrot Magic Cookies(PMC).只是内置字符串是JVM的一步.

更有趣的是PMC,有点像JVM的对象类型,但更具可替代性.PMC是一个容器,用于所有其他更复杂的类型,你需要在一个真正的语言,如数组,表,树,迭代器,I/O等.PMC和各种内置的操作对它来说意味着语言编写器的工作量减少.鹦鹉不会回避实施语言的混乱但必要的部分.

我的信息可能已过时,但我相信操作码是可插拔的,您可以运送仅包含您的语言所需操作码的Parrot VM.它们也是可继承的,如果你的语言希望它们的数组与库存Parrot数组稍有不同,那么你可以做它的子类.

最后,Parrot不仅可以用于汇编语言(PASM),还可以用于略高级语言Parrot Intermediate Representation(PIR).PIR具有循环,子程序,局部变量以及一些基本的数学和比较操作,这是人们在编程语言中所期望的所有基础知识,而不会离金属太远.

总而言之,Parrot对语言设计者(由他们编写并为他们编写)非常友好,他们想要设计一种语言并尽可能多地将实现留给其他人.


Ree*_*sey 15

您可以在Parrot VM Intro页面上阅读大部分内容.

Parrot对JVM或CLR的主要优势在于它首先支持动态语言,并可能为动态类型语言提供更好的支持和性能.JVM和CLR都更倾向于支持静态类型语言,许多设计决策都表明了这一点.


hob*_*bbs 5

使Parrot与大多数VM(当然不同于JVM)不同的另一个原因是它是一个寄存器而不是堆栈机器.但我认为人们将长期争论是否可以称之为优势或劣势.


mj4*_*j41 5

我不太了解JVM和CLR,但我的建议是:

  • 动态语言(闭包,多态标量,延续,协同例程)支持(速度)
  • 动态方法调度,
  • 一流的功能,
  • 一流的延续,
  • 参数(可选,命名,..),
  • 注册为基础
  • 具有在装配级别提供的HLL互操作性
  • 各种平台

更新:这可能无关紧要,因为现在JVM是Rakudo Perl 6后端之一.请参阅JVM上的Rakudo Perl 6(Perl 6 Advent calendar 2013,第3天).


rai*_*iph 5

Parrot是最初为Perl 6设计的虚拟机.

现在有两个最初为Perl 6设计的VM; 承诺MoarVM始于2012年.

Parrot VM提供哪些技术功能,如Java虚拟机(JVM)/热点VM和公共语言运行时(CLR)等竞争虚拟机缺乏?

本页的另一个答案中,目前(2015年4月)Parrot领导开发者Reini Urban提供了Parrot与JVM和CLR VM的简要比较.

根据Reini的说法,Parrot对MoarVM的一个关键优势是"有效锁定线程".