【问题标题】:What are nqp, nqp-m, rakudo-debug, rakudo-debug-m, rakudo-gdb-m, rakudo-m, rakudo-valgrind-m?什么是 nqp、nqp-m、rakudo-debug、rakudo-debug-m、rakudo-gdb-m、rakudo-m、rakudo-valgrind-m?
【发布时间】:2021-04-18 13:05:34
【问题描述】:

当我从源安装rakudo 时:

$ git clone git@github.com:rakudo/rakudo.git
$ cd rakudo
$ perl Configure.pl --gen-moar --gen-nqp --backends=moar
$ make
$ make install

它在./install/bin中生成以下文件:

$ ls -1 install/bin
moar
nqp
nqp-m
perl6
perl6-debug
perl6-debug-m
perl6-gdb-m
perl6-lldb-m
perl6-m
perl6-valgrind-m
raku
raku-debug
rakudo
rakudo-debug
rakudo-debug-m
rakudo-gdb-m
rakudo-lldb-m
rakudo-m
rakudo-valgrind-m

我知道rakurakudoperl6 是用于运行.raku 脚本的命令,但还有哪些其他命令以及如何使用它们?

【问题讨论】:

    标签: raku nqp moarvm


    【解决方案1】:
    • moar 是虚拟机(没有字节码文件不是很有用)
    • nqp 用于 NQP(不是 Perl6)。这是 Raku 的一小部分,它更快/更容易优化。 (例如没有=op)
      它是 Rakudo 的引导编译器。

    对于像rakudo-m这样的其他人

    • *-m 表示在 MoarVM 上
    • *-j 表示在 JVM 上(此处未安装)
    • *-js 表示 JavaScript(此处未安装)

    • *-debug 表示,使用带调试信息的版本
    • *-gdb 表示使用带有 GNU Debugger 信息的版本
    • *-lldb 表示使用带有LLDB调试信息的版本
    • *-valgrind 表示使用 Valgrind 检测框架(查找内存泄漏)

    那么rakudo-valgrind-m 表示在 MoarVM 上使用带有 Valgrind 工具的 Rakudo 编译器。

    我会使用的只有rakudo-mrakudo-jrakudo-js,而且前提是我安装的不仅仅是 MoarVM 版本。

    其余的主要是为那些自己从事 Rakudo/NQP/MoarVM 项目的人准备的。

    【讨论】:

    • raiph 说的 :-)
    • @raiph Perl 已经有了他们在配置 Perl 时使用的 mini-perl。 NQP 也有类似 Raku 的语义。因此,虽然说 Not Quite Perl6 有点不合时宜,但说 Not Quite Perl 就更没用了。
    • @raiph 我还没有看到可以用 Perl 编译的 任何 NQP 代码。或者任何可以用 NQP 编译的 Perl。大多数甚至都不接近。我见过很多可以编译为 Raku 代码的 NQP 代码。在fib.nqp 中,9 行中只有 2 行是有效的 Perl。 sub fib($n) {}。其中第一个仅在您启用相对较新的签名功能后才有效。忽略这一点,大多数底​​层语义也与 Perl 不同。所以称它为 Not Quite Perl 只有当 Perl 的名称包含现在称为 Raku 的东西时才有意义。
    • @raiph NQP 表示 NQP。它曾经有这些特定字母的原因。这个理由只对解释历史背景有用。说 P 代表 Perl6 虽然是错误的,但我认为比说它代表 Perl 更能让人们理解历史。如果我可以更改 CSS 使 6 在白底灰而不是白底黑字,我会这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多