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

时间:2009-11-27 23:54:40

标签: jvm clr perl6 vm-implementation parrot

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

Parrot VM为Java Virtual Machine (JVM) / Hotspot VMCommon Language Runtime (CLR)之类的竞争虚拟机提供了哪些技术功能?

7 个答案:

答案 0 :(得分:34)

以下答案于2009年撰写。另见2015 update by raiph

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

更有趣的是PMC,有点像JVM的对象类型,但更具可替代性。 PMC是一个容器all the other more complicated types,你需要一个真正的语言,如数组,表,树,迭代器,I / O等.PMC和各种内置的操作系统意味着语言编写器的工作量减少。鹦鹉不会回避实施一种语言的混乱但必要的部分。

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

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

总而言之,Parrot对语言设计师(由他们编写并为他们编写)非常友好,他们希望设计一种语言,并尽可能多地将实现留给其他人。< / p>

答案 1 :(得分:15)

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

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

答案 2 :(得分:5)

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

答案 3 :(得分:5)

我不太了解JVM和CLR,但我的提示是:

  • 动态语言(闭包,多态标量,延续,协同例程)支持(速度)
  • 动态方法调度,
  • 头等功能,
  • 一流的延续,
  • 参数(可选,命名,..),
  • 注册
  • 具有汇编级别的HLL互操作性
  • 平台范围

更新:这可能无关紧要,因为现在JVM是Rakudo Perl 6后端之一。见Rakudo Perl 6 on the JVM(Perl 6 Advent calendar 2013,第3天)。

答案 4 :(得分:5)

  

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

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

  

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

another answer on this page中,Reini Urban,目前(2015年4月)Parrot领导开发者提供了Parrot与JVM和CLR VM的简要比较。

According to Reini,Parrot对MoarVM的一个关键优势是&#34;有效锁定线程&#34;。

答案 5 :(得分:3)

与JVM和CLR相比,主要优势和技术差异在于,类型(称为PMC)和ops( methods )可以从高效用户动态加载 - 提供了C实现,并且内置了用于创建和扩展语言的解析器框架。

答案 6 :(得分:2)

这个问题已经过时了。 Rakudo Perl 6不再将Parrot作为后端; MoarVM是首选的后端,JVM后端正在进行中(通常可行,但许多Perl 6功能未实现或当前已损坏)。正在进行开发工作(尚未为用户准备)以将Javascript添加为第三个后端。