问题标签 [parrot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8609 浏览

python - LLVM、鹦鹉、JVM、PyPy + python

开发某些语言有什么问题,例如 python 用于一些 LLVM / Parrot 的一些优化技术。

PyPy、LLVM、Parrot是常用平台开发的主要技术。
我看到这样的:

  • PyPy - 用于构建 VM 的框架,其中包含针对 python 的优化 VM
    所以它是非常通用的解决方案。该过程如下所列:
    1. 动态语言代码->
    2. PyPy 前端 ->
    3. PyPy 内部代码 - 字节码 ->
    4. PyPy 优化 ->
    5. 留下 PyPy 代码和
      :某些 VM(如 jvm)的 PyPy 后端
      b. som Kit 制作自己的虚拟机
      c. 处理/运行 PyPy 内部代码

我对这个过程是正确的吗?对于 python 有优化的 VM?特别是默认情况下,VM 中内置了优化的 PyPy 代码(步骤 5.c)——它适用于 python,并且每种语言处理都可以在那里停止并由它运行?

  • Parrot - 很像 PyPy,但没有 5.a 和 5.b ?动态处理的一些内部改进(Parrot Magic Cookies)。

ParrotPyPy都旨在创建一个创建通用动态语言运行时的平台,但 PyPy 想要更多——也需要创建更多 VM。
PyPy 的意义在哪里?为了什么我们需要创建更多的虚拟机?不应该更好地专注于一个虚拟机(比如在鹦鹉中)——因为有一个共同的代码级别——PyPy 内部字节码或 Parrot 字节码。我认为我们无法将 PyPy 字节码转换为新创建的 PyPy VM。

  • LLVM - 我认为这与 PyPy 非常相似,但没有 VM 生成器。
    它是成熟的、精心设计的环境,具有与 PyPy 相似的目标(但没有 VM 生成器),但使用的是低级结构和出色的优化/JIT 技术

将其视为:LLVM是通用的,但Parrot和 **PyPy* 是为动态语言设计的。在 PyPy / Parrot 中更容易引入一些复杂的技术——因为它比 LLVM 更高级——比如复杂的编译器,它可以更好地理解高级代码并产生更好的汇编代码(人类无法在合理的时间内编写),然后LLVM 之一?

问题:

  1. 我对吗?是否有任何理由将某些动态语言移植到 llvm 比移植到 Parrot 更好?

  2. 我还没有看到 Parrot 上开发 python 的活动。是因为使用 python C 扩展对 parrot 不起作用吗?PyPy 也有同样的问题

  3. 为什么其他 VM 不想迁移到 LLVM / parrot。例如 ruby​​ -> parrot,CLR/ JVM -> LLVM。他们转向更复杂的解决方案不是更好吗?LLVM 正处于高速发展过程中,并有大公司投资。

  4. 我知道问题可能在于重新编译资源,如果需要更改字节码 - 但这不是强制性的 - 因为我们可以尝试将旧字节码移植到新字节码,并且新编译器会生成新字节码(Java 仍然需要解释自己的字节码 - 所以前端可以检查它并将其转换为新的字节码)?

  5. 在 llvm 中链接例如 jvm 库有什么问题(如果我们以某种方式将 java/jvm/scala 移植到 llvm)?

  6. 如果我在某个地方错了,你能纠正我吗

一些补充:

==============

澄清

我想弄清楚所有这些软件是如何组成的——将一个软件移植到另一个软件有什么问题。

0 投票
2 回答
961 浏览

python - 如果我有解释器,为什么要使用 Parrot(或其他 VM)?

如果我已经有了解释器,为什么还要使用像 Parrot 这样的 VM 作为我使用的动态语言(Python、Perl、...)?对于在我的代码和我的机器之间使用不同的 VM 以及使用单独的解释器的成本,我可能获得什么?

(我是VM问题的新手,所以答案可能很明显)

编辑

Parrot VM 对最终用户有什么好处?

0 投票
1 回答
163 浏览

compiler-construction - 我可以在 Linux 上使用已安装的 parrot-devel 包中的 Parrot 编译器工具吗?

我有兴趣使用 Parrot VM 创建自己的语言。

我已经安装了 parrot-devel 包以及 parrot 和依赖项(使用 Linux Mint 11 下的 Synaptic 包管理器)。

我找到了一个教程(http://en.wikibooks.org/wiki/Parrot_Virtual_Machine/Squaak_Tutorial/Introduction)说要运行:

我最终在 /usr/lib/parrot/2.​​6.0/tools/dev/mk_language_shell.pl 找到了该脚本

这是我运行它时发生的事情:

现在我不知道包是否将这些文件放在正确的位置。我可以在它前面放一个“sudo”(?),但这可能忽略了我如何安装鹦鹉的一个真正问题。

问题:

我可以从我安装的这些包中使用 Parrot 编译器工具吗(而不是卸载包、克隆 git 存储库、学习如何从源代码制作 parrot 等)?

如果是这样,需要什么进一步的准备才能真正开始使用这些工具而不会出错?

0 投票
2 回答
280 浏览

raku - Parrot VM 和静态语言

您可以在 Parrot VM 中创建静态类型语言还是必须动态类型?

0 投票
1 回答
340 浏览

parrot - Parrot VM 的端口

是否有可以构建 Parrot 虚拟机的操作系统列表?我宁愿不通过每个版本的发行说明来弄清楚。

0 投票
0 回答
158 浏览

compilation - 在编译 arm Linux Kernel 2.6.37 时添加 CONFIG_PARROT

我想知道内核构建器如何在编译内核时编译鹦鹉模块。

我看到了一个 2.6.32 的配置文件,其中的CONFIG_PARROT模块是 yes。而且我知道这些模块文件存储在内核 2.6.32 源代码中的什么位置。我想要一个 2.6.37 内核构建器来制作这个鹦鹉模块并将它们添加到内核中,以便我可以在 VM 上使用它们。

除了在 Makefile 上添加驱动程序源的路径并将CONFIG_PARROT行设置为内核的 .config 文件之外,还有其他事情要做吗?

0 投票
1 回答
172 浏览

raku - Parrot 有多线程并行垃圾收集器吗?

我的问题是关于 Parrot 虚拟机 ( http://www.parrot.org ) 中的垃圾收集器。

它是多线程的吗?

0 投票
1 回答
365 浏览

android - 基于寄存器的虚拟机如何实现寄存器

基于寄存器的虚拟机如何实现寄存器。

我一直在阅读很多关于基于寄存器的虚拟机的在线信息,并且我已经看到int r[16];用作实现寄存器的方法。这带来了一些问题,比如像这样的机器如何能够处理长或浮点数?

Parrot 和 Dalvik 都是基于寄存器的虚拟机。Parrot 表示它有一个寄存器窗口,允许无限数量的寄存器,dalvik 支持多达 65,536 个寄存器。我想知道寄存器是如何在这些虚拟机上实现的

我想看看实际实现的代码,因为我对它们如何能够存储不同的值以及它们是在调用操作码时创建还是总是在那里感兴趣?

谢谢

0 投票
1 回答
1278 浏览

linux - rt2870.o/rt2870.ko usb无线适配器安装问题

我正在使用最新版本的鹦鹉 Linux。我想安装/使用 nano 适配器 (802.11n) USB

我尝试了几种方法,但我失败了 尝试 1

尝试此操作后,我发现没有其他方法可以寻求帮助我在使用make && make install时遇到以下错误

有人可以检查并帮助我吗....

0 投票
1 回答
278 浏览

node.js - 如何使用 nodejs 从 ar 无人机获取纬度信息?

当我使用它时,我得到一个未定义的错误。纬度未定义。

但是,如果我更改 1 行,我可以取回所有 gps 数据。

为什么我不能专门取回纬度数据?