问题标签 [moarvm]
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.
raku - 如何将 perl6 文件编译为 exe
我正在玩基于 Windows 上的 MoarVM 的 perl6 版本。我创建了一些 perl6 文件并希望将其编译为 exe。我尝试了以下方法:
现在我想将 r 编译为可执行文件
我发现这个链接讨论了如何使用 Parrot 但我使用的是 MoarVM 目标:http ://perlgeek.de/blog-en/perl-6/my-first-executable.writeback
我的问题如何将 MoarvVM 目标文件编译为 Windows 可执行文件?
macos - 为什么 MoarVM 在 Mac OS X 上抱怨“为存档而构建,而不是被链接的架构”?
我正在尝试从 GitHub 上的最新版本和 MoarVM.org 上的下载构建 Moar。我不断收到有关第三方库的错误:
ld: 警告: ld: 警告: ld: 警告: 忽略文件 3rdparty/libatomic_ops/src/libatomic_ops.a,文件是为存档而构建的,它不是被链接的架构 (x86_64): 3rdparty/libatomic_ops/src/libatomic_ops.aignoring 文件3rdparty/tinymt/libtinymt.a,文件是为存档而构建的,它不是被链接的架构 (x86_64):3rdparty/tinymt/libtinymt.aignoring 文件 3rdparty/sha1/libsha1.a,文件是为存档而构建的,它不是架构被链接(x86_64):3rdparty/sha1/libsha1.a
这类似于OSX :文件是为存档而构建的,它不是被链接的架构(i386)(以及许多其他答案不足的问题)。我知道有些东西已经在为错误的架构构建这些,所以请跳过提供该答案。
我清理了目录,删除了所有内容并重新开始,告诉Configure.pl我在 Darwin 上运行,以及用户应该知道的其他各种事情。我从 MoarVM.org 下载了 tarball,它应该是 repo 中的 2105.12 标签。我遇到了与 rakudobrew 相同的问题。
让我知道您想了解我的系统的哪些内容;这是一个基本的 Mac OS X 设置。
我也将其归档为MoarVM issue 334,但看起来问题队列并没有得到太多的爱。
memory - perl6 如何给 MoarVM 更多的内存?
我必须对大约 200 万行数据进行数据分析,每行大约 250 字节长。所以总共大约有 500 兆字节的数据。我正在使用 4G 内存的 Virtualbox Linux 上运行最新的 Rakudo。
大约 8 小时后,由于内存不足,我得到了 MoarVM 恐慌。如何为 MoarVM 提供更多内存?不幸的是,我不能将 200 万个分成块并首先写入文件,因为部分数据分析需要整个 2 米行。
raku - Perl6 IO::Socket::Async 截断数据
我正在使用 IO::Socket::Async 在 P6 中重写我的 P5 套接字服务器,但是接收到的数据在最后被截断了 1 个字符,并且在下一个连接时接收到了 1 个字符。来自 Perl6 Facebook 小组 (Jonathan Worthington) 的人指出,这可能是由于字符串的性质和字节在 P6 中的处理方式非常不同。引:
在 Perl 6 中,字符串和字节的处理方式非常不同。值得注意的是,字符串在字素级别工作。接收 Unicode 数据时,不仅有可能将多字节序列拆分为数据包,还可能将多码点序列拆分。例如,一个数据包的末尾可能有字母“a”,而下一个数据包可能是一个组合的重音符号。因此,在看到下一个数据包如何开始之前,它不能安全地传递“a”。
我的 P6 在 MoarVM 上运行
结果
asynchronous - 运行 Perl6 套接字服务器时 MOAR 进程膨胀
我有一个使用 IO::Socket::Async 和 Redis::Async 进行消息发布的套接字服务器。每当服务器接收到消息时,脚本将翻译该消息并生成确认消息以发送回发送者,以便发送者发送后续消息。由于翻译消息非常昂贵,脚本将在“开始”方法下运行该部分。但是,我注意到 Moar 进程在脚本运行时占用了我的 RAM。有没有想过我应该在哪里解决这个问题?谢谢!
performance - Raku 总是解析吗?
raku -version 这是基于 MoarVM 版本 2020.01.1 构建的 Rakudo 版本 2020.01,实现 Perl 6.d。
目前看起来我无法启动任何运行时间低于 130 毫秒(主要是启动时间)的 Raku Perl6 程序。
- Raku 是否总是在程序启动时重新解析完整的源代码?
- Raku 是否缓存任何字节码?
- 所以即使是在线用户也总是需要 >= 130 毫秒?
raku - 如何转储 MoarVM 字节码
我想知道如何调试 Moarvm 字节码。是否有文档描述例如如何将 raku 转换为 moarvm 以及如何转储生成的字节码。如果我尝试运行:
我在某处读到了“--dump”开关,但这似乎不可用。我从 github 自定义编译 rakudo/nqp/moarvm。
string - MoarVM 中的字符串和链
使用 MoarVM 后端在 Rakudo 上运行 Raku 代码时,是否有任何方法可以打印有关给定 Str 如何从正在运行的程序内部存储在内存中的信息?特别是,我很好奇是否有办法查看当前有多少股组成了 Str(无论是通过 Raku 自省、NQP 还是访问 MoarVM 级别的东西(这样的东西甚至在运行时存在吗?)。
如果在运行时无法访问此信息,有没有办法通过 Rakudo 的命令行标志之一的输出来获取它,例如--target
,或--tracing
?还是通过调试器?
最后,MoarVM 是否管理给定 Str 中的 Strand 数量?我经常听到(或说)Raku 的超能力之一是可以在 O(1) 时间内索引到 Unicode 字符串,但我一直在考虑病态的情况,感觉就像是 O(n) . 例如,
似乎它会创建一个长度与$n
由$n
Strands 组成的 Str 成比例的 Str - 如果我正确理解数据结构,这意味着进入这个 Str 需要检查每个 Strand 的长度,时间复杂度为 O( n)。但是我知道可以将Strand-ed Str 变平;在这种情况下,MoarVM 会做类似的事情吗?还是我误解了更基本的东西?